<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xml:lang="en-us" xmlns:atom="http://www.w3.org/2005/Atom"><channel><copyright>© Will Faught</copyright><description>Thoughts on technology, the world, and life.</description><language>en-us</language><lastBuildDate>Tue, 03 Oct 2023 18:12:15 -0700</lastBuildDate><link>https://willfaught.com/</link><atom:link href="https://willfaught.com/rss.xml" hreflang="en-us" rel="self" type="application/rss+xml"/><atom:link href="https://willfaught.com/atom.xml" hreflang="en-us" rel="alternate" type="application/atom+xml"/><atom:link href="https://willfaught.com/" hreflang="en-us" rel="alternate" type="text/html"/><atom:link href="https://willfaught.com/paige-search.json" hreflang="en-us" rel="alternate" type="application/json"/><atom:link href="https://willfaught.com/rss.xml" hreflang="en-us" rel="alternate" type="application/rss+xml"/><managingEditor>pushes.kingdom_0e@icloud.com (Will Faught)</managingEditor><title>Will Do</title><webMaster>pushes.kingdom_0e@icloud.com (Will Faught)</webMaster><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<ul><li>Design<ul><li>Lightweight RPG mechanics</li><li>Loot</li><li>Skill trees</li></ul></li><li>Monetization<ul><li>Battle passes</li><li>Microtransactions</li><li>Season passes</li></ul></li><li>Reviews<ul><li>High professional review scores and low customer review scores</li><li>Reviewers couldn&rsquo;t cover certain content under embargo</li><li>Reviewers couldn&rsquo;t show their own recordings under embargo</li><li>Reviewers didn&rsquo;t have access to all ports under embargo</li><li>Reviewers didn&rsquo;t have enough time under embargo</li></ul></li><li>Technology<ul><li>Day-one DLC</li><li>DLC released within six months of game release</li><li>DRM on PC that impacts performance</li><li>On-disc DLC</li><li>Unnecessary online connection is required</li></ul></li><li><a href=https://www.darkpattern.games rel=external>Dark patterns</a></li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-10-03:/2023/10/03/the-modern-gaming-litmus-test/</guid><link>https://willfaught.com/2023/10/03/the-modern-gaming-litmus-test/</link><atom:link href="https://willfaught.com/2023/10/03/the-modern-gaming-litmus-test/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 03 Oct 2023 18:12:15 -0700</pubDate><title>The Modern Gaming Litmus Test</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Benjamin Esham:</p><blockquote><p>Version 6.0 of the Unicode standard, released in October 2010, added support for emoji. Aside from the classics like 😃 (SMILING FACE WITH OPEN MOUTH), 👍 (THUMBS UP SIGN), and 💩 (PILE OF POO), the standard also included several national flags like these:</p><p>🇺🇸 🇩🇪 🇬🇧 🇯🇵 🇮🇹</p><p>In fact, the standard included every national flag, and in a way that won&rsquo;t require the standard to be changed when new countries come into being. How did the Unicode Consortium pull this off?</p><p>What they did is both crazy and genius. Instead of assigning a codepoint to each flag, which is the obvious way to do it (and the way the rest of the emoji are encoded), the standard defines twenty-six &ldquo;regional indicator symbols&rdquo;, from U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A to U+1F1FF REGIONAL INDICATOR SYMBOL LETTER Z. In order to include a country&rsquo;s flag in your text, you first look up the country&rsquo;s two-letter ISO 3166-1 code and then write the two regional indicator symbols corresponding to those letters. A font with support for that flag treats the two-codepoint sequence as a ligature, replacing the combination with a single pictogram.</p></blockquote><p><a href=https://willfaught.com/2023/10/02/how-unicode-country-flags-work/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-10-02:/2023/10/02/how-unicode-country-flags-work/</guid><link>https://esham.io/2014/06/unicode-flags</link><atom:link href="https://esham.io/2014/06/unicode-flags" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 02 Oct 2023 22:49:44 -0700</pubDate><title>How Unicode Country Flags Work</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Unicode is much more complicated than it seems.</p><p><a href=https://willfaught.com/2023/09/06/bad-unicode-assumptions/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-09-06:/2023/09/06/bad-unicode-assumptions/</guid><link>https://richardjharris.github.io/all-sorts-of-things-you-can-get-wrong-in-unicode-and-why/</link><atom:link href="https://richardjharris.github.io/all-sorts-of-things-you-can-get-wrong-in-unicode-and-why/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 06 Sep 2023 21:12:20 -0700</pubDate><title>Bad Unicode Assumptions</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://en.wikipedia.org/wiki/One_Chance_%28video_game%29 rel=external>Wikipedia</a>
:</p><blockquote><p>One Chance is a Flash game developed by Dean Moynihan and released on Newgrounds on December 2, 2010. It has been frequently cited in video games literature as an interesting and moving use of permadeath mechanic (permanent death).</p><p>In the game, the player controls a scientist who has created a cancer-attacking &ldquo;cure&rdquo;; when it is released in a gas form it begins to cause the extinction of all life by unexpectedly targeting all living cells, rather than just cancer cells. The player is given six days to create an antibiotic, after which point one of several endings may be achieved depending on the choices made. A web browser cookie prevents the game from being played more than once.</p></blockquote><p>A small, simple game that makes you feel something.</p><p><a href=https://willfaught.com/2023/09/03/one-chance/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-09-03:/2023/09/03/one-chance/</guid><link>https://www.crazygames.com/game/one-chance</link><atom:link href="https://www.crazygames.com/game/one-chance" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 03 Sep 2023 22:30:33 -0700</pubDate><title>One Chance</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Latacora:</p><blockquote><p>Modern applications tend to be composed from relationships between smaller applications. Secure modern applications thus need a way to express and enforce security policies that span multiple services. This is the &ldquo;server-to-server&rdquo; (S2S) authentication and authorization problem (for simplicity, I&rsquo;ll mash both concepts into the term &ldquo;auth&rdquo; for most of this post).</p><p>Designers today have a lot of options for S2S auth, but there isn&rsquo;t much clarity about what the options are or why you&rsquo;d select any of them. Bad decisions sometimes result. What follows is a stab at clearing the question up.</p><p>[&mldr;]</p><p>Do the simplest thing that makes sense for your application right now. A true fact we can relate from something like a decade of consulting work on these problems: intricate S2S auth schemes are not the norm; if there&rsquo;s a norm, it&rsquo;s &ldquo;nothing at all except for ELBs&rdquo;. If you need something, but you have to ask whether that something oughtn&rsquo;t just be bearer tokens, then just use bearer tokens.</p><p>Unfortunately, if there&rsquo;s a second norm, it&rsquo;s adopting complicated auth mechanisms independently or, worse, in combination, and then succumbing to vulnerabilities.</p></blockquote><p>It&rsquo;s a great list. They conclude that MTLS is the best option for containers talking to each other:</p><blockquote><p>If your inter-service auth problem really decomposes to inter-container (or, without containers, inter-instance) auth, MTLS starts to make sense. The container-container MTLS story usually involves containers including a proxy, like Envoy, that mediates access. If you&rsquo;re not connecting containers, or have ad-hoc components, MTLS can really start to take on a CORBA feel: random sidecar processes (here stunnel, there Envoy, and this one app that tries to do everything itself). It can be a pain to configure properly, and this is a place you need to get configurations right.</p><p>If you can do MTLS in such a way that there is exactly one way all your applications use it (probably: a single proxy that all your applications install), consider MTLS. Otherwise, be cautious about it.</p></blockquote><p>They recommend to never use JWTs:</p><blockquote><p>JWT is a standard that tries to do too much and ends up doing everything haphazardly. Our loathing of JWT motivated this post, but this post isn&rsquo;t about JWT; we&rsquo;ll write more about it in the future.</p></blockquote><p>As a bonus, they recommend macaroons for client-to-server authentication and authorization:</p><blockquote><p>Macaroons are inexplicably underused. They&rsquo;re the Velvet Underground of authentication mechanisms, hugely influential but with little radio airplay. Unlike the Velvets, Macaroons aren&rsquo;t overrated. They work well for client-server auth and for s2s auth. They&rsquo;re very flexible but have reassuring format rigidity, and they elegantly take advantage of just a couple simple crypto operations. There are libraries for all the mainstream languages. You will have a hard time coming up with a scenario where we&rsquo;d try to talk you out of using them.</p></blockquote><p><a href=https://willfaught.com/2023/08/26/server-to-server-authentication-schemes/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-08-26:/2023/08/26/server-to-server-authentication-schemes/</guid><link>https://latacora.micro.blog/2018/06/12/a-childs-garden.html</link><atom:link href="https://latacora.micro.blog/2018/06/12/a-childs-garden.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 26 Aug 2023 18:41:00 -0700</pubDate><title>Server-To-Server Authentication Schemes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Tim Yocum, writing for InfoWorld:</p><blockquote><p>The RED method is a monitoring methodology coined by Tom Wilkie based on what he learned while working at Google. RED is derived from some best practices established at Google known as the &ldquo;Four Golden Signals,&rdquo; developed by Google&rsquo;s SRE team.</p><p>[&mldr;]</p><p>RED stands for rate, errors, and duration. These represent the three key metrics you want to monitor for each service in your architecture:</p><ul><li>Rate - The number of requests the service is handling per second.</li><li>Error - The number of failed requests per second.</li><li>Duration - The amount of time each request takes.</li></ul><p>Using these three metrics, you can get a solid understanding of how your services are performing. The number of requests gives you a baseline for how much traffic is going to your service. The portion of those requests that are errors lets you know if a service is functioning within your SLO. Finally, the duration of time it takes for each request to be handled by your service gives you insight into the overall user experience of your application.</p></blockquote><p>Rob Ewaschuk, writing for Google, on those <a href=https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals rel=external>four golden signals</a>
:</p><blockquote><p>Latency</p><p>The time it takes to service a request. It&rsquo;s important to distinguish between the latency of successful requests and the latency of failed requests. For example, an HTTP 500 error triggered due to loss of connection to a database or other critical backend might be served very quickly; however, as an HTTP 500 error indicates a failed request, factoring 500s into your overall latency might result in misleading calculations. On the other hand, a slow error is even worse than a fast error! Therefore, it&rsquo;s important to track error latency, as opposed to just filtering out errors.</p><p>Traffic</p><p>A measure of how much demand is being placed on your system, measured in a high-level system-specific metric. For a web service, this measurement is usually HTTP requests per second, perhaps broken out by the nature of the requests (e.g., static versus dynamic content). For an audio streaming system, this measurement might focus on network I/O rate or concurrent sessions. For a key-value storage system, this measurement might be transactions and retrievals per second.</p><p>Errors</p><p>The rate of requests that fail, either explicitly (e.g., HTTP 500s), implicitly (for example, an HTTP 200 success response, but coupled with the wrong content), or by policy (for example, &ldquo;If you committed to one-second response times, any request over one second is an error&rdquo;). Where protocol response codes are insufficient to express all failure conditions, secondary (internal) protocols may be necessary to track partial failure modes. Monitoring these cases can be drastically different: catching HTTP 500s at your load balancer can do a decent job of catching all completely failed requests, while only end-to-end system tests can detect that you&rsquo;re serving the wrong content.</p><p>Saturation</p><p>How &ldquo;full&rdquo; your service is. A measure of your system fraction, emphasizing the resources that are most constrained (e.g., in a memory-constrained system, show memory; in an I/O-constrained system, show I/O). Note that many systems degrade in performance before they achieve 100% utilization, so having a utilization target is essential.</p><p>In complex systems, saturation can be supplemented with higher-level load measurement: can your service properly handle double the traffic, handle only 10% more traffic, or handle even less traffic than it currently receives? For very simple services that have no parameters that alter the complexity of the request (e.g., &ldquo;Give me a nonce&rdquo; or &ldquo;I need a globally unique monotonic integer&rdquo;) that rarely change configuration, a static value from a load test might be adequate. As discussed in the previous paragraph, however, most services need to use indirect signals like CPU utilization or network bandwidth that have a known upper bound. Latency increases are often a leading indicator of saturation. Measuring your 99th percentile response time over some small window (e.g., one minute) can give a very early signal of saturation.</p><p>Finally, saturation is also concerned with predictions of impending saturation, such as &ldquo;It looks like your database will fill its hard drive in 4 hours.&rdquo;</p></blockquote><p><a href=https://willfaught.com/2023/07/29/red-metrics/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-07-29:/2023/07/29/red-metrics/</guid><link>https://www.infoworld.com/article/3638693/the-red-method-a-new-strategy-for-monitoring-microservices.html</link><atom:link href="https://www.infoworld.com/article/3638693/the-red-method-a-new-strategy-for-monitoring-microservices.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 29 Jul 2023 14:18:05 -0700</pubDate><title>RED Metrics</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Raja Rao, writing for Redis:</p><blockquote><p>There are many in-depth articles and videos from SMEs of companies like Okta talking about the potential dangers and inefficiencies of using JWT tokens[1]. Yet, these warnings are overshadowed by marketers, YouTubers, bloggers, course creators, and others who knowingly or unknowingly promote it.</p><p>If you look at many of these videos and articles, they all just talk about the perceived benefits of JWT and ignore the deficiency. More specifically, they just show how to use it but don&rsquo;t talk about revocations and additional complexities that JWT adds in a real production environment. They also never compare it with the existing battle-tested approaches deep enough to really weigh the pros and cons.</p><p>[&mldr;]</p><p>The biggest problem with JWT is the token revoke problem. Since it continues to work until it expires, the server has no easy way to revoke it.</p></blockquote><p>A nice summary of the issues. You don&rsquo;t tend to see many JWT critiques.</p><p><a href=https://willfaught.com/2023/07/11/dont-use-jwts/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-07-11:/2023/07/11/dont-use-jwts/</guid><link>https://redis.com/blog/json-web-tokens-jwt-are-dangerous-for-user-sessions/</link><atom:link href="https://redis.com/blog/json-web-tokens-jwt-are-dangerous-for-user-sessions/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 11 Jul 2023 20:08:58 -0700</pubDate><title>Don’t Use JWTs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Matthew Vere summarizes the book <em>Dopamine Nation</em> by Anna Lembke:</p><blockquote><p>The neurotransmitter dopamine plays a crucial role in the brain&rsquo;s reward processing, with studies showing that it contributes more to the motivation for rewards than to the pleasure of receiving them. For a rat in a box, chocolate increases the release of dopamine by 55%, sex by 100%, nicotine by 150%, cocaine by 225%, and amphetamines, the active ingredient in speed, meth, MDMA, and Adderall (used to treat ADHD and narcolepsy) by 1000%. According to one study, abusing dopamine levels alters our ability to delay gratification, with addicts referring to their futures as only nine days long, compared to 4.7 years for the non-addicted participants.</p></blockquote><p>Even though amphetamines are an order of magnitude more potent than sex, sex has an unusual property in that it can be prolonged for hours, whereas the highest high of cocaine only lasts a few minutes.</p><p><a href=https://willfaught.com/2023/07/02/dopamine-nation/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-07-02:/2023/07/02/dopamine-nation/</guid><link>https://www.matthewvere.com/notes/dopamine-nation</link><atom:link href="https://www.matthewvere.com/notes/dopamine-nation" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 02 Jul 2023 21:31:24 -0700</pubDate><title>Dopamine Nation</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Thomas Ptacek:</p><blockquote><p>The software developer job interview doesn&rsquo;t work. Companies should stop relying on them. The savviest teams will outcompete their peers by devising alternative hiring schemes.</p><p>Years from now, we&rsquo;ll look back at the 2015 developer interview as an anachronism, akin to hiring an orchestra cellist with a personality test and a quiz about music theory rather than a blind audition.
Being good at navigating hiring processes requires a basket of skills that isn&rsquo;t correlated with job performance. The world is full of people who can speak expertly about programming, but can&rsquo;t effectively code. The majority of people who can code can&rsquo;t do it well in an interview. Our hiring process therefore systematically misprices candidates. It&rsquo;s a moral problem and a market failure. Profit from its correction.</p></blockquote><p><a href=https://willfaught.com/2023/07/01/data-driven-software-interviews/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-07-01:/2023/07/01/data-driven-software-interviews/</guid><link>https://sockpuppet.org/blog/2015/03/06/the-hiring-post/</link><atom:link href="https://sockpuppet.org/blog/2015/03/06/the-hiring-post/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 01 Jul 2023 14:58:13 -0700</pubDate><title>Data-Driven Software Interviews</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The short answer: The end of the
<a href=https://en.wikipedia.org/wiki/Bretton_Woods_system rel=external>Bretton Woods system</a>
on August 15, 1971.</p><p><a href=https://willfaught.com/2023/07/01/what-happened-in-1971/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-07-01:/2023/07/01/what-happened-in-1971/</guid><link>https://wtfhappenedin1971.com</link><atom:link href="https://wtfhappenedin1971.com" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 01 Jul 2023 12:35:52 -0700</pubDate><title>What Happened In 1971?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An open letter signed by people who are upset they aren&rsquo;t personally
pioneering the AI frontier, and want to stall the head start of others until they can catch up or even figure out what to do about it:</p><blockquote><p>Contemporary AI systems are now becoming human-competitive at general tasks,[3] and we must ask ourselves: Should we let machines flood our information channels with propaganda and untruth? Should we automate away all the jobs, including the fulfilling ones? Should we develop nonhuman minds that might eventually outnumber, outsmart, obsolete and replace us? Should we risk loss of control of our civilization? Such decisions must not be delegated to unelected tech leaders. Powerful AI systems should be developed only once we are confident that their effects will be positive and their risks will be manageable. This confidence must be well justified and increase with the magnitude of a system&rsquo;s potential effects. OpenAI&rsquo;s recent statement regarding artificial general intelligence, states that &ldquo;At some point, it may be important to get independent review before starting to train future systems, and for the most advanced efforts to agree to limit the rate of growth of compute used for creating new models.&rdquo; We agree. That point is now.</p><p>Therefore, we call on all AI labs to immediately pause for at least 6 months the training of AI systems more powerful than GPT-4. This pause should be public and verifiable, and include all key actors. If such a pause cannot be enacted quickly, governments should step in and institute a moratorium.</p></blockquote><p>Unsurprisingly, there don&rsquo;t seem to be any official signatories from <a href=https://en.wikipedia.org/wiki/OpenAI rel=external>OpenAI</a>
or <a href=https://en.wikipedia.org/wiki/Midjourney rel=external>Midjourney</a>
, who are beating the pants off everyone else at an unforseen and unbelievable rate. It&rsquo;s almost as if this isn&rsquo;t a consensus.</p><p>The creative and intelligent were perfectly fine with technology enabling the offshoring of manufacturing jobs and ending other jobs, because it didn&rsquo;t affect them. They can learn to code, they said. Well, now the shoe is on the other foot. Technology is poised to &ldquo;<a href="https://www.youtube.com/watch?v=APo2p4-WXsc" rel=external>take &lsquo;r job</a>
&rdquo; of perhaps many of those creative and intelligent people. What&rsquo;s good for the goose is good for the gander.</p><p><a href=https://willfaught.com/2023/03/30/open-letter-to-pause-ai-experiments/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-03-30:/2023/03/30/open-letter-to-pause-ai-experiments/</guid><link>https://futureoflife.org/open-letter/pause-giant-ai-experiments/</link><atom:link href="https://futureoflife.org/open-letter/pause-giant-ai-experiments/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 30 Mar 2023 18:21:13 -0700</pubDate><title>Open Letter To Pause AI Experiments</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://en.wikipedia.org/wiki/Theodore_Roosevelt rel=external>Theodore Roosevelt</a>
in his speech <em><a href=https://en.wikipedia.org/wiki/The_Strenuous_Life rel=external>The Strenuous Life</a>
</em>on April 10, 1899:</p><blockquote><p>I wish to preach, not the doctrine of ignoble ease, but the doctrine of the strenuous life, the life of toil and effort, of labor and strife; to preach that highest form of success which comes, not to the man who desires mere easy peace, but to the man who does not shrink from danger, from hardship, or from bitter toil, and who out of these wins the splendid ultimate triumph.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-02-04:/2023/02/04/the-strenuous-life/</guid><link>https://willfaught.com/2023/02/04/the-strenuous-life/</link><atom:link href="https://willfaught.com/2023/02/04/the-strenuous-life/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 Feb 2023 14:58:36 -0800</pubDate><title>The Strenuous Life</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://en.wikipedia.org/wiki/Theodore_Roosevelt rel=external>Theodore Roosevelt</a>
in his speech <em><a href=https://en.wikipedia.org/wiki/Citizenship_in_a_Republic rel=external>Citizenship in a Republic</a>
</em>on April 23, 1910:</p><blockquote><p>It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat. Shame on the man of cultivated taste who lets refinement to develop in to fastidiousness that unfits him for doing the rough work of a work day world.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-02-04:/2023/02/04/the-man-in-the-arena/</guid><link>https://willfaught.com/2023/02/04/the-man-in-the-arena/</link><atom:link href="https://willfaught.com/2023/02/04/the-man-in-the-arena/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 Feb 2023 14:14:59 -0800</pubDate><title>The Man In The Arena</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Robert Emmons on how gratitude benefits us:</p><blockquote><p>The social benefits are especially significant here because, after all, gratitude is a social emotion. I see it as a relationship-strengthening emotion because it requires us to see how we&rsquo;ve been supported and affirmed by other people.</p><p>Indeed, this cuts to very heart of my definition of gratitude, which has two components. First, it&rsquo;s an affirmation of goodness. We affirm that there are good things in the world, gifts and benefits we&rsquo;ve received. This doesn&rsquo;t mean that life is perfect; it doesn&rsquo;t ignore complaints, burdens, and hassles. But when we look at life as a whole, gratitude encourages us to identify some amount of goodness in our life.</p><p>The second part of gratitude is figuring out where that goodness comes from. We recognize the sources of this goodness as being outside of ourselves. It didn&rsquo;t stem from anything we necessarily did ourselves in which we might take pride. We can appreciate positive traits in ourselves, but I think true gratitude involves a humble dependence on others: We acknowledge that other people—or even higher powers, if you&rsquo;re of a spiritual mindset—gave us many gifts, big and small, to help us achieve the goodness in our lives.</p></blockquote><p>Don&rsquo;t miss the list of benefits. The whole article is a good read.</p><p><a href=https://willfaught.com/2023/01/18/the-benefits-of-gratitude/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2023-01-18:/2023/01/18/the-benefits-of-gratitude/</guid><link>https://greatergood.berkeley.edu/article/item/why_gratitude_is_good</link><atom:link href="https://greatergood.berkeley.edu/article/item/why_gratitude_is_good" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 18 Jan 2023 17:12:01 -0800</pubDate><title>The Benefits Of Gratitude</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I found the blurb for my old Blogger blog:</p><blockquote><p>There&rsquo;s a condition that afflicts many innocent, hard-working people around the world every day. Its victims suffer from light sensitivity, disorientation, lethargy, sleep deprivation, and depression. There is no cure, but some drugs temporarily alleviate its symptoms. Many people manage to live somewhat normal lives through proper treatment. I&rsquo;m referring, of course, to waking up before 9:00 AM, which I had to do all this week and expect to continue doing until my body gives out. Please donate to my relief fund.</p></blockquote><p>I&rsquo;m preserving it here for posterity.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2022-12-21:/2022/12/21/save-will/</guid><link>https://willfaught.com/2022/12/21/save-will/</link><atom:link href="https://willfaught.com/2022/12/21/save-will/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 21 Dec 2022 23:16:00 -0800</pubDate><title>Save Will</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Harry Browne, in a letter to his daughter on Christmas:</p><blockquote><p>It&rsquo;s Christmas and I have the usual problem of deciding what to give you. I know you might enjoy many things — books, games, clothes.</p><p>But I&rsquo;m very selfish. I want to give you something that will stay with you for more than a few months or years. I want to give you a gift that might remind you of me every Christmas.</p><p>If I could give you just one thing, I&rsquo;d want it to be a simple truth that took me many years to learn. If you learn it now, it may enrich your life in hundreds of ways. And it may prevent you from facing many problems that have hurt people who have never learned it.</p><p>The truth is simply this:</p><p><em>No one owes you anything.</em></p></blockquote><p>I recommend reading the whole letter. It&rsquo;s great advice.</p><p><a href=https://willfaught.com/2022/11/15/no-one-owes-you-anything/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2022-11-15:/2022/11/15/no-one-owes-you-anything/</guid><link>https://web.archive.org/web/20110629000907/https://www.harrybrowne.org/articles/GiftDaughter.htm</link><atom:link href="https://web.archive.org/web/20110629000907/https://www.harrybrowne.org/articles/GiftDaughter.htm" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 15 Nov 2022 17:29:24 -0800</pubDate><title>No One Owes You Anything</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Part 1:</p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/bB340S0tGf8?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Part 2:</p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/A-H-xZ5ZXgo?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Some gems:</p><ul><li>They were posted one &ldquo;sprint&rdquo; apart. 🤣</li><li>&ldquo;It&rsquo;s really Waterfall with meetings every two weeks.&rdquo;</li><li>&ldquo;That&rsquo;s Greg. His birthday is on day 2 of sprint 7.&rdquo;</li><li>&ldquo;We don&rsquo;t even define requirements until after production.&rdquo;</li><li>&ldquo;I lost my job because I&rsquo;m a horrible developer. Now I&rsquo;m an Agile coach.&rdquo;</li><li>&ldquo;Always change. Never finish.&rdquo;</li><li>&ldquo;Folks who don&rsquo;t have anything valuable to add deserve meetings.&rdquo;</li><li>&ldquo;I&rsquo;m so used to it, I don&rsquo;t even hear the Waterfall.&rdquo;</li><li>&ldquo;Don&rsquo;t give customers what they need; give them what they ask for.&rdquo;</li><li>&ldquo;The company was working fine before I introduced Scrum.&rdquo;</li><li>&ldquo;That&rsquo;s why they have me: to make Waterfall look like Scrum.&rdquo;</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2022-09-26:/2022/09/26/always-change-never-finish/</guid><link>https://willfaught.com/2022/09/26/always-change-never-finish/</link><atom:link href="https://willfaught.com/2022/09/26/always-change-never-finish/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 26 Sep 2022 22:43:19 -0700</pubDate><title>Always Change, Never Finish</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<h2 id=videos>Videos</h2><p><a href="https://www.youtube.com/watch?v=rExJskBZcW0" rel=external>&ldquo;I Grew Up in a Corset. Time to Bust Some Myths. (Ft. Actual Research)&rdquo;</a></p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/rExJskBZcW0?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p><a href="https://www.youtube.com/watch?v=zNwTqanp0Aw" rel=external>&ldquo;How Victorian Men Taught Us to Hate Corsets: The Biggest Lie in Fashion History&rdquo;</a></p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/zNwTqanp0Aw?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p><a href="https://www.youtube.com/watch?v=l8fg5Q8liS0" rel=external>&ldquo;how actresses talk about wearing corsets in movies&rdquo;</a></p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/l8fg5Q8liS0?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p><a href="https://www.youtube.com/watch?v=oX414-9qSx4" rel=external>&ldquo;if people in the future talked about bras the way we talk about corsets&rdquo;</a></p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/oX414-9qSx4?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p><a href="https://www.youtube.com/watch?v=f0fqnPFeVCM" rel=external>&ldquo;period drama costume designers these days&rdquo;</a></p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/f0fqnPFeVCM?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p><a href="https://www.youtube.com/watch?v=fB4FVq8MltI" rel=external>&ldquo;curb your corset stereotypes&rdquo;</a></p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/fB4FVq8MltI?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p><a href="https://www.youtube.com/watch?v=Lu8Hjhu_b_A" rel=external>&ldquo;Reacting to Vogue&rsquo;s &lsquo;Everything You Need to Know About the Corset&rsquo; cause we haven&rsquo;t suffered enough.&rdquo;</a></p><div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/Lu8Hjhu_b_A?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><h2 id=articles>Articles</h2><ul><li><a href=https://slate.com/culture/2022/03/bridgerton-season-2-netflix-corset-simone-ashley.html rel=external>Bridgerton Keeps Perpetuating One of Hollywood&rsquo;s Most Stubborn Myths</a></li><li><a href=https://www.collectorsweekly.com/articles/everything-you-know-about-corsets-is-false/ rel=external>Everything You Know About Corsets Is False</a></li><li><a href=https://www.cosplaycentral.com/themes/historical/feature/5-myths-about-corsets rel=external>Five Myths About Corsets And The Truth Behind Corsetry</a></li><li><a href=https://www.lancasterhistory.org/debunkingcorsetrymyths/ rel=external>Make No (Whale)Bones About It: Debunking those Corsetry Myths</a></li><li><a href=https://verilymag.com/2021/03/historical-fashion-corset-myths-debunked-bridgerton rel=external>The Corset: The Myth and the Reality</a></li><li><a href=https://thevintagewomanmagazine.com/the-truth-about-corsets-busting-the-myths/ rel=external>The Truth About Corsets: Busting the Myths</a></li><li><a href=https://www.smithsonianmag.com/history/what-bridgerton-gets-wrong-about-corsets-180976691/ rel=external>What &lsquo;Bridgerton&rsquo; Gets Wrong About Corsets</a></li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2022-09-08:/2022/09/08/the-mythical-corset-oppression/</guid><link>https://willfaught.com/2022/09/08/the-mythical-corset-oppression/</link><atom:link href="https://willfaught.com/2022/09/08/the-mythical-corset-oppression/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 08 Sep 2022 14:42:45 -0700</pubDate><title>The Mythical Corset Oppression</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>(Obviously for Go 1.17.)</p><p>Why you might find this approach interesting:</p><ul><li>Type variable declarations are implicit</li><li>Type arguments for functions are implicit</li><li>Type variable constraints can be omitted for the empty interface</li><li>Methods can be generic</li><li>Operations are represented with generics as normal methods</li><li>It can simplify the Go language specification</li></ul><p>Check out the <em>More ideas</em> section at the end for things beyond generics.</p><h2 id=define-comparison-operations-for-all-types>Define comparison operations for all types</h2><p>For the types that don&rsquo;t yet have them:</p><ul><li>Functions: Compare the corresponding memory addresses. The time complexity is constant.</li><li>Maps: Compare the corresponding <code>*runtime.hmap</code> (pointer) values. The time complexity is constant.</li><li>Slices: Compare the corresponding <code>runtime.slice</code> (non-pointer struct) values. The time complexity is constant.</li></ul><p>Examples:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// Functions</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F1</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F2</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>F1</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>F1</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>F1</span> <span style=color:#0550ae>!=</span> <span style=color:#1f2328>F2</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Maps</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>M1</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>map</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>M2</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>map</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>M1</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>M1</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>M1</span> <span style=color:#0550ae>!=</span> <span style=color:#1f2328>M2</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Slices</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>S1</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>make</span><span style=color:#1f2328>([]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>S2</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>make</span><span style=color:#1f2328>([]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S1</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>S1</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S1</span> <span style=color:#0550ae>!=</span> <span style=color:#1f2328>S2</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S1</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>S1</span><span style=color:#1f2328>[:]</span> <span style=color:#57606a>// True because the lengths, capacities, and pointers are equal</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S1</span> <span style=color:#0550ae>!=</span> <span style=color:#1f2328>S1</span><span style=color:#1f2328>[:</span><span style=color:#0550ae>1</span><span style=color:#1f2328>]</span> <span style=color:#57606a>// True because the lengths aren&#39;t equal</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S1</span><span style=color:#1f2328>[:</span><span style=color:#0550ae>1</span><span style=color:#1f2328>]</span> <span style=color:#0550ae>!=</span> <span style=color:#1f2328>S1</span><span style=color:#1f2328>[:</span><span style=color:#0550ae>1</span><span style=color:#1f2328>:</span><span style=color:#0550ae>1</span><span style=color:#1f2328>]</span> <span style=color:#57606a>// True because the capacities aren&#39;t equal</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S1</span> <span style=color:#0550ae>!=</span> <span style=color:#6639ba>append</span><span style=color:#1f2328>(</span><span style=color:#1f2328>S1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>)[:</span><span style=color:#0550ae>2</span><span style=color:#1f2328>:</span><span style=color:#0550ae>2</span><span style=color:#1f2328>]</span> <span style=color:#57606a>// True because the pointers aren&#39;t equal</span></span></span></code></pre></div><h2 id=define-the-nil-value-for-all-types>Define the nil value for all types</h2><p>The predeclared identifier <code>nil</code> is now <a href=https://go.dev/ref/spec#Assignability rel=external>assignable</a>
to all types, and is the zero (<a href=https://en.wiktionary.org/wiki/nil#Noun rel=external>nil</a>
) value for its type. For example, array, boolean, numeric, string, and structure types all now have a nil value, which is their respective zero value.</p><p>Examples:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// Assignment</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>[</span><span style=color:#1f2328>N</span><span style=color:#1f2328>]</span><span style=color:#1f2328>T</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>nil</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>bool</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>nil</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>nil</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>string</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>nil</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{}</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>nil</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Conversion</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>[</span><span style=color:#1f2328>N</span><span style=color:#1f2328>]</span><span style=color:#6639ba>T</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>bool</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>int</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>string</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{}(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Comparison</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>[</span><span style=color:#1f2328>N</span><span style=color:#1f2328>]</span><span style=color:#1f2328>T</span><span style=color:#1f2328>{}</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>[</span><span style=color:#1f2328>N</span><span style=color:#1f2328>}</span><span style=color:#6639ba>T</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>&amp;&amp;</span> <span style=color:#1f2328>[</span><span style=color:#1f2328>N</span><span style=color:#1f2328>]</span><span style=color:#1f2328>T</span><span style=color:#1f2328>{}</span> <span style=color:#0550ae>==</span> <span style=color:#cf222e>nil</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>false</span> <span style=color:#0550ae>==</span> <span style=color:#6639ba>bool</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>&amp;&amp;</span> <span style=color:#cf222e>false</span> <span style=color:#0550ae>==</span> <span style=color:#cf222e>nil</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>0</span> <span style=color:#0550ae>==</span> <span style=color:#6639ba>int</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>&amp;&amp;</span> <span style=color:#0550ae>0</span> <span style=color:#0550ae>==</span> <span style=color:#cf222e>nil</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#0a3069>&#34;&#34;</span> <span style=color:#0550ae>==</span> <span style=color:#6639ba>string</span><span style=color:#1f2328>(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>&amp;&amp;</span> <span style=color:#0a3069>&#34;&#34;</span> <span style=color:#0550ae>==</span> <span style=color:#cf222e>nil</span> <span style=color:#57606a>// True</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{}{}</span> <span style=color:#0550ae>==</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{}(</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>&amp;&amp;</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{}{}</span> <span style=color:#0550ae>==</span> <span style=color:#cf222e>nil</span> <span style=color:#57606a>// True</span></span></span></code></pre></div><h2 id=generic-abstractions>Generic abstractions</h2><p>A <strong>type variable</strong> is a placeholder type that is substituted with another type called a <strong>type argument</strong>. A type variable can appear within type, variable, function, and method declarations; interface methods; and function literals. The type arguments permitted by a type variable must be assignable to an interface called its <strong>constraint</strong>. Type variables look like <a href=https://golang.org/ref/spec#Identifiers rel=external>identifiers</a>
with a <code>$</code> prefix, and cannot be <a href=https://golang.org/ref/spec#Blank_identifier rel=external>blank</a>
. The case of the first character has no meaning, although type variables are case-sensitive. Type variables with identical names and constraints are identical.</p><p>Examples:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>a</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>b</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>c</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>foo</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>BAR</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>baz_BOZ</span></span></span></code></pre></div><h3 id=generic-functions>Generic functions</h3><p>A type variable is bound by the same or nearest outer function signature that contains it in a parameter type. Constraints default to an empty interface if unspecified. Constraints can optionally be specified for some or all type variables in a non-empty, unordered set.</p><p>A type variable bound by a function signature is part of its function type. One such type is assignable to another such type if they are identical; or if they are identical after <a href=https://en.wikipedia.org/wiki/Lambda_calculus#Alpha_equivalence rel=external>renaming</a>
the type variables in one of them; or if the corresponding constraints are assignable; or if a type variable in the source type consistently corresponds to a type in the target type that isn&rsquo;t a type variable.</p><p>To ensure <a href=https://en.wikipedia.org/wiki/Parametricity rel=external>parametricity</a>
, all type arguments must be valid, and the function value must behave the same regardless of the type argument. A type variable permits use of only constraint methods, assignment operations, comparison operations, method expressions, and method values. A type variable doesn&rsquo;t permit use of type conversions, type assertions, or type switches. Reflection of a type variable reveals only its constraint.</p><p>Using type variables:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// $A is constrained by C, which has method M(int) int</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>x</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>nil</span> <span style=color:#57606a>// Valid because x and nil have identical type variables (via assignability)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>.</span><span style=color:#1f2328>M</span> <span style=color:#57606a>// Method expression</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.</span><span style=color:#1f2328>M</span> <span style=color:#57606a>// Method value</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>x</span> <span style=color:#57606a>// Valid because x and x have identical type variables</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span> <span style=color:#0550ae>==</span> <span style=color:#cf222e>nil</span> <span style=color:#57606a>// Valid because x and nil have identical type variables (via assignability)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span> <span style=color:#0550ae>==</span> <span style=color:#0550ae>123</span> <span style=color:#57606a>// Invalid because x and 123 don&#39;t have identical type variables</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#6639ba>A</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Invalid because type conversions aren&#39;t permitted</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>C</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>MyType</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>}(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Invalid because type assertions aren&#39;t permitted</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.(</span><span style=color:#1f2328>C</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.(</span><span style=color:#1f2328>MyType</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.(</span><span style=color:#cf222e>interface</span><span style=color:#1f2328>{})</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.(</span><span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>})</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span> <span style=color:#cf222e>switch</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.(</span><span style=color:#cf222e>type</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span> <span style=color:#1f2328>}</span> <span style=color:#57606a>// Invalid because type switches aren&#39;t permitted</span></span></span></code></pre></div><p>Specifying generic functions:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// C, C1, and C2 are constraints</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// [...] is a non-empty, unordered set of type variables and constraints</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Function declarations</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A is constrained by interface{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A and $B are constrained by interface{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A is constrained by C</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A, $B are constrained by C, interface{}, respectively</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A, $B are constrained by interface{}, C, respectively</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A, $B are constrained by C</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A, $B are constrained by C1, C2, respectively</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A, $B and $C, $D are constrained by C1 and C2, respectively</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A, $B, $C are constrained by C</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Method declarations</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>T</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>T</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>M</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Same as function declarations above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Interface methods</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#1f2328>M</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Same as function declarations above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Function literals</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Same as function declarations above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Nested functions</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// $A below is bound by the function literal</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span> <span style=color:#cf222e>return</span> <span style=color:#1f2328>a</span> <span style=color:#1f2328>}(</span><span style=color:#1f2328>a</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>b</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// $A below is bound by the function literal</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// $B below is bound by F</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{</span> <span style=color:#cf222e>return</span> <span style=color:#1f2328>a</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>b</span> <span style=color:#1f2328>}(</span><span style=color:#1f2328>a</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>b</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>choose</span> <span style=color:#0550ae>:=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#1f2328>b</span> <span style=color:#cf222e>bool</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span> <span style=color:#57606a>// $A here bound by F</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>var</span> <span style=color:#1f2328>result</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#57606a>// $A here bound by F</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>if</span> <span style=color:#1f2328>b</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>            <span style=color:#1f2328>result</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>a</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>}</span> <span style=color:#cf222e>else</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>            <span style=color:#1f2328>result</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>b</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>return</span> <span style=color:#1f2328>result</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#6639ba>choose</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>b</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Shorthand for combining multiple constraints into one</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>C</span> <span style=color:#1f2328>}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>;</span> <span style=color:#1f2328>C2</span> <span style=color:#1f2328>}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#6639ba>A</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>)](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>;</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>;</span> <span style=color:#1f2328>C3</span> <span style=color:#1f2328>}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>F</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#6639ba>A</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>C3</span><span style=color:#1f2328>)](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span></span></span></code></pre></div><p>Using generic functions:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>x</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>+</span> <span style=color:#0550ae>3</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1i</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2i</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>+</span> <span style=color:#0550ae>3i</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1.0</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2.0</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>+</span> <span style=color:#0550ae>3.0</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0a3069>&#39;1&#39;</span><span style=color:#1f2328>,</span> <span style=color:#0a3069>&#39;2&#39;</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>+</span> <span style=color:#0a3069>&#39;3&#39;</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0a3069>&#34;1&#34;</span><span style=color:#1f2328>,</span> <span style=color:#0a3069>&#34;2&#34;</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>+</span> <span style=color:#0a3069>&#34;3&#34;</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#cf222e>false</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>&amp;&amp;</span> <span style=color:#cf222e>false</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>([]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>},</span> <span style=color:#1f2328>[]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>})[</span><span style=color:#0550ae>0</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>([</span><span style=color:#0550ae>1</span><span style=color:#1f2328>]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>},</span> <span style=color:#1f2328>[</span><span style=color:#0550ae>1</span><span style=color:#1f2328>]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>})[</span><span style=color:#0550ae>0</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#cf222e>map</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>:</span><span style=color:#0550ae>1</span><span style=color:#1f2328>},</span> <span style=color:#cf222e>map</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>:</span><span style=color:#0550ae>2</span><span style=color:#1f2328>})[</span><span style=color:#0550ae>1</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#6639ba>make</span><span style=color:#1f2328>(</span><span style=color:#cf222e>chan</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>),</span> <span style=color:#6639ba>make</span><span style=color:#1f2328>(</span><span style=color:#cf222e>chan</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>))</span><span style=color:#0550ae>-</span><span style=color:#1f2328>&gt;</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>url</span><span style=color:#1f2328>.</span><span style=color:#1f2328>URL</span><span style=color:#1f2328>{},</span> <span style=color:#1f2328>url</span><span style=color:#1f2328>.</span><span style=color:#1f2328>URL</span><span style=color:#1f2328>{}).</span><span style=color:#1f2328>Scheme</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>*</span><span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0550ae>&amp;</span><span style=color:#1f2328>url</span><span style=color:#1f2328>.</span><span style=color:#1f2328>URL</span><span style=color:#1f2328>{},</span> <span style=color:#0550ae>&amp;</span><span style=color:#1f2328>url</span><span style=color:#1f2328>.</span><span style=color:#1f2328>URL</span><span style=color:#1f2328>{})</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#cf222e>func</span><span style=color:#1f2328>(){},</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(){})()</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>net</span><span style=color:#1f2328>.</span><span style=color:#1f2328>IP</span><span style=color:#1f2328>{},</span> <span style=color:#1f2328>net</span><span style=color:#1f2328>.</span><span style=color:#1f2328>IP</span><span style=color:#1f2328>{}).</span><span style=color:#6639ba>String</span><span style=color:#1f2328>()</span></span></span></code></pre></div><p>Type arguments are substituted for type variables using <a href=https://en.wikipedia.org/wiki/Type_inference rel=external>type inference</a>
, perhaps some form of <a href=https://en.wikipedia.org/wiki/Unification_%28computer_science%29 rel=external>unification</a>
.</p><p>Generic function types:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// Assignable because of identical types</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Assignable because of equivalent type variable names</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Assignable because of equivalent type variable constraints</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#6639ba>M1</span><span style=color:#1f2328>();</span> <span style=color:#6639ba>M2</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{</span> <span style=color:#6639ba>M1</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Assignable because of compatible behavior</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span> <span style=color:#cf222e>return</span> <span style=color:#1f2328>a</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>g</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>x</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#6639ba>g</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>G</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#0550ae>123</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>a</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>G</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>456</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// == 123</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>H</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>456</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// == 456</span></span></span></code></pre></div><h3 id=generic-types>Generic types</h3><p>A generic type declaration abstracts the underlying type. It&rsquo;s implied by specifying a non-empty, ordered list of type variables and, optionally, their constraints. Constraints default to an empty interface if unspecified. The identifier for such a declared type is called a <strong>type constructor</strong> when used to construct types, and a <strong>value constructor</strong> when used to construct values. The body cannot be a lone type variable or a lone recursive reference.</p><p>Declaring generic types:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// [...] is a non-empty, ordered list of type variables and, optionally, constraints</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>int</span> <span style=color:#57606a>// Valid</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#57606a>// Invalid</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#57606a>// Invalid</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// T is not generic, but its underlying type is</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// T is generic, but its underlying type is not</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// T and its underlying type are generic</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A is constrained by interface{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A is constrained by C</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// $A and $B are constrained by C</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// $A and $B are constrained by C1</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// $C is constrained by C2</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// $D and $E are constrained by C3</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// $F and $G are constrained by interface{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>C1</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span> <span style=color:#1f2328>C2</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>D</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>E</span> <span style=color:#1f2328>C3</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>F</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>G</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span></span></span></code></pre></div><p>Using generic types:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// Generic type construction</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>B</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>B</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>C</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>D</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>B</span><span style=color:#1f2328>[</span><span style=color:#1f2328>C</span><span style=color:#1f2328>[</span><span style=color:#1f2328>D</span><span style=color:#1f2328>]]]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>A</span><span style=color:#1f2328>[</span><span style=color:#1f2328>B</span><span style=color:#1f2328>]]]</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Generic parameter types</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>as</span> <span style=color:#1f2328>[]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>List</span> <span style=color:#57606a>// Invalid</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span> <span style=color:#57606a>// Valid</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>l</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>First</span><span style=color:#1f2328>()</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span><span style=color:#1f2328>[</span><span style=color:#0550ae>0</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Method sets for List[$A] and List[int] are different</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>l</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>FirstNegated</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#0550ae>-</span><span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#6639ba>First</span><span style=color:#1f2328>()</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>l</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Contains</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>for</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span> <span style=color:#0550ae>:=</span> <span style=color:#cf222e>range</span> <span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>if</span> <span style=color:#1f2328>z</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>a</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>            <span style=color:#cf222e>return</span> <span style=color:#cf222e>true</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#cf222e>false</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>l</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>ContainsNegated</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Contains</span><span style=color:#1f2328>(</span><span style=color:#0550ae>-</span><span style=color:#1f2328>a</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>l</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Equivalent</span><span style=color:#1f2328>(</span><span style=color:#1f2328>l2</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>])</span> <span style=color:#cf222e>bool</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>if</span> <span style=color:#6639ba>len</span><span style=color:#1f2328>(</span><span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>!=</span> <span style=color:#6639ba>len</span><span style=color:#1f2328>(</span><span style=color:#1f2328>l2</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>return</span> <span style=color:#cf222e>false</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>for</span> <span style=color:#1f2328>i</span> <span style=color:#0550ae>:=</span> <span style=color:#cf222e>range</span> <span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>if</span> <span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span><span style=color:#1f2328>[</span><span style=color:#1f2328>i</span><span style=color:#1f2328>]</span> <span style=color:#0550ae>!=</span> <span style=color:#1f2328>l2</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span><span style=color:#1f2328>[</span><span style=color:#1f2328>i</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>            <span style=color:#cf222e>return</span> <span style=color:#cf222e>false</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#cf222e>true</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Generic value construction</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Zero values should be useful</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Invalid currently in this design, although arguably it can work with type inference</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>{[]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{}}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>{[]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{}}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>NewListItem</span><span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#0550ae>&amp;</span><span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]{</span><span style=color:#1f2328>as</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>[]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>{</span><span style=color:#1f2328>a</span><span style=color:#1f2328>}}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int32</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>NewListItem</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>NewListItems</span><span style=color:#1f2328>(</span><span style=color:#1f2328>as</span> <span style=color:#1f2328>[]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#0550ae>&amp;</span><span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]{</span><span style=color:#1f2328>as</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>as</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>NewListItems</span><span style=color:#1f2328>([]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>3</span><span style=color:#1f2328>})</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Generic value initialization</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>l</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Init</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>l</span><span style=color:#1f2328>.</span><span style=color:#1f2328>as</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>make</span><span style=color:#1f2328>([]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>16</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Generic generic types</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>f</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>])</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>x</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>])</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#6639ba>f</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#1f2328>xs</span> <span style=color:#1f2328>[]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>{</span> <span style=color:#cf222e>return</span> <span style=color:#1f2328>xs</span><span style=color:#1f2328>[</span><span style=color:#0550ae>0</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>},</span> <span style=color:#1f2328>[]</span><span style=color:#cf222e>int</span><span style=color:#1f2328>{</span><span style=color:#0550ae>123</span><span style=color:#1f2328>})</span> <span style=color:#57606a>// == 123</span></span></span></code></pre></div><h2 id=generic-interface-method-receivers>Generic interface method receivers</h2><p>Instead of adding a new feature like type sets to enable interfaces to encompass predeclared types, we&rsquo;ll expand the expressive power of interfaces to describe methods that behave equivalent to operations, then declare methods for the operations of predeclared types. This unifies predeclared and user-declared types under methods and interfaces, which simplifies the Go language and user code.</p><p>Enable specifying interface method receivers:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>()</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#1f2328>MyType</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>}</span> <span style=color:#57606a>// Invalid because it&#39;s pointless</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>myValue</span> <span style=color:#57606a>// Invalid because it&#39;s pointless</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>}</span> <span style=color:#57606a>// $A does not match the receiver, it&#39;s separate</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span> <span style=color:#6639ba>M</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>}</span> <span style=color:#57606a>// Same as above</span></span></span></code></pre></div><p>Now we can do:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Number</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>MyInt</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>my</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>x</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>y</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>MyInt</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#1f2328>my</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>x</span> <span style=color:#0550ae>+</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>MyFloat</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>my</span> <span style=color:#cf222e>float64</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>x</span> <span style=color:#1f2328>MyFloat</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>y</span> <span style=color:#1f2328>MyFloat</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>MyFloat</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>MyFloat</span><span style=color:#1f2328>{</span><span style=color:#1f2328>my</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>x</span> <span style=color:#0550ae>+</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>myInt</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// OK</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>myFloat</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>MyFloat</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// OK</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>num1</span> <span style=color:#1f2328>Number</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>myInt</span> <span style=color:#57606a>// Makes sense</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>num2</span> <span style=color:#1f2328>Number</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>myFloat</span> <span style=color:#57606a>// Makes sense</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>num3</span> <span style=color:#57606a>/* ??? */</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>num1</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>num2</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Invalid because the return type is unknown, because Number hides MyInt</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// An interface method with a receiver type variable in a parameter can only be used when its interface is used as a constraint</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>Add</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>Number</span><span style=color:#1f2328>](</span><span style=color:#1f2328>a</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>b</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>a</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>b</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>MyInt</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>},</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>})</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>MyFloat</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>MyFloat</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>},</span> <span style=color:#1f2328>MyFloat</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>})</span></span></span></code></pre></div><h2 id=generalize-and-simplify-the-language>Generalize and simplify the language</h2><p>Declare and implement predeclared types and their operations in a core package in the standard library:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>core</span> <span style=color:#57606a>// import &#34;core&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Details hidden</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Array</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span> <span style=color:#57606a>// $N allows integer constants only here</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Bool</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Channel</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Complex64</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Complex128</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Float32</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Float64</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Int</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Int8</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Int16</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Int32</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Int64</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Map</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>K</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>V</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Rune</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>String</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Uint</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Uint8</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Uint16</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Uint32</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Uint64</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Uintptr</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Byte</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Uint8</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Rune</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Int32</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Operation methods</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Implementation of methods hidden</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>x</span> <span style=color:#1f2328>Int</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>y</span> <span style=color:#1f2328>Int</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Int</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>x</span> <span style=color:#1f2328>Int8</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Multiply</span><span style=color:#1f2328>(</span><span style=color:#1f2328>y</span> <span style=color:#1f2328>Int8</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Int8</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>x</span> <span style=color:#1f2328>Int16</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Quotient</span><span style=color:#1f2328>(</span><span style=color:#1f2328>y</span> <span style=color:#1f2328>Int16</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Int16</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>x</span> <span style=color:#1f2328>Int32</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Subtract</span><span style=color:#1f2328>(</span><span style=color:#1f2328>y</span> <span style=color:#1f2328>Int32</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Int32</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Append</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>AppendSlice</span><span style=color:#1f2328>(</span><span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Cap</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Copy</span><span style=color:#1f2328>(</span><span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Get</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Len</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Set</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Slice</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>s</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>SliceCap</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Built-in functions</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Channel</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Cap</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Channel</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Close</span><span style=color:#1f2328>()</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Channel</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Len</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>Append</span><span style=color:#1f2328>(</span><span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>],</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>Len</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#6639ba>Len</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>}](</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>a</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Len</span><span style=color:#1f2328>()</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>Cap</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span> <span style=color:#6639ba>Cap</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>}](</span><span style=color:#1f2328>a</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>a</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Cap</span><span style=color:#1f2328>()</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Map</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>K</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>V</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Delete</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>K</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Complex64</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Imag</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>float32</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Complex64</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Real</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>float32</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Complex128</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Imag</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>float64</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Complex128</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Real</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>float64</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span></span></span></code></pre></div><p>Declare useful abstractions for those types:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>core</span> <span style=color:#57606a>// import &#34;core&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Comparable</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Equals</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>NotEquals</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Orderable</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Comparable</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Greater</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>GreaterEquals</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Less</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>LessEquals</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Number</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Orderable</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Multiply</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Quotient</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Subtract</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Integer</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Number</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Remainder</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>BitAnd</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>BitClear</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>BitLeft</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>BitOr</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>BitRight</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>BitXor</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span></span></span></code></pre></div><p>Incorporate existing types into those new abstractions where applicable:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>big</span> <span style=color:#57606a>// import &#34;math/big&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#0550ae>*</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#0550ae>*</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>)</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Int</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Obviously pick a name other than Add for Number.Add so it doesn&#39;t conflict with existing methods, if possible</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>mypackage</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>Add</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>Number</span><span style=color:#1f2328>](</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>y</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z1</span> <span style=color:#1f2328>big</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z2</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>z1</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y1</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>z2</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Change every package to implicitly dot-import the core package:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>mypackage</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>import</span> <span style=color:#1f2328>.</span> <span style=color:#0a3069>&#34;core&#34;</span> <span style=color:#57606a>// Implied, but allowed explicitly</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>Int</span> <span style=color:#57606a>// core.Int</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Float32</span> <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>Float32</span> <span style=color:#57606a>// mypackage.Float32</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Where conflicts arise, local declarations take precedence over core declarations</span></span></span></code></pre></div><p>The core package can be qualified:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>mypackage</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>import</span> <span style=color:#0a3069>&#34;core&#34;</span> <span style=color:#57606a>// Qualified import, overrides the dot-import</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span></span></span></code></pre></div><p>The qualifier can be specified like usual:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>mypackage</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>import</span> <span style=color:#1f2328>thecore</span> <span style=color:#0a3069>&#34;core&#34;</span> <span style=color:#57606a>// Qualified import, overrides the dot-import</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>thecore</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span></span></span></code></pre></div><p>Change the predeclared identifiers to refer to the core package where applicable:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#57606a>// Universe block</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Pseudocode</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>import</span> <span style=color:#0a3069>&#34;core&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#cf222e>string</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>String</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#cf222e>bool</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Bool</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#cf222e>int32</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int32</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>append</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Append</span> <span style=color:#57606a>// Now a full function value</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>len</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Len</span> <span style=color:#57606a>// Now a full function value</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>cap</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Cap</span> <span style=color:#57606a>// Now a full function value</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span></span></span></code></pre></div><p>Optional: Change order operators to be consistent with method semantics:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>B</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>B</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>1</span> <span style=color:#1f2328>&lt;</span> <span style=color:#0550ae>2</span> <span style=color:#57606a>// Invalid now because comparison operations now result in typed booleans</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Automatically fix existing code with &#34;go fix&#34; or &#34;go fmt&#34;:</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>B</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>B</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span> <span style=color:#1f2328>&lt;</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span></span></span></code></pre></div><p>Change language constructs to use interfaces for user-declared types:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>core</span> <span style=color:#57606a>// import &#34;core&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Iterable</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#6639ba>Iterator</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>Iterator</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Iterator</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#6639ba>HasNext</span><span style=color:#1f2328>()</span> <span style=color:#cf222e>bool</span>
</span></span><span style=display:flex><span>    <span style=color:#6639ba>Next</span><span style=color:#1f2328>()</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>Slice</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>])</span> <span style=color:#6639ba>Iterator</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>Iterator</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>mypackage</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>xs</span> <span style=color:#1f2328>[]</span><span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>for</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#0550ae>:=</span> <span style=color:#cf222e>range</span> <span style=color:#1f2328>xs</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span> <span style=color:#57606a>// Emits the usual instructions for iterating slices</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>for</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>i</span> <span style=color:#0550ae>:=</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>xs</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Iterator</span><span style=color:#1f2328>();</span> <span style=color:#1f2328>i</span><span style=color:#1f2328>.</span><span style=color:#6639ba>HasNext</span><span style=color:#1f2328>();</span> <span style=color:#1f2328>x</span><span style=color:#0550ae>++</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>y</span> <span style=color:#0550ae>:=</span> <span style=color:#1f2328>i</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Next</span><span style=color:#1f2328>()</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span> <span style=color:#57606a>// Equivalent, but calls methods</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>ys</span> <span style=color:#1f2328>Iterable</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>MyStruct</span><span style=color:#1f2328>{</span><span style=color:#57606a>/* ... */</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>for</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#0550ae>:=</span> <span style=color:#cf222e>range</span> <span style=color:#1f2328>ys</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span> <span style=color:#57606a>// Emits the method call equivalent if not a built-in iterable type</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>MyInt</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>my</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>m</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>)</span> <span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>m2</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>MyInt</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#1f2328>my</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>m</span><span style=color:#1f2328>.</span><span style=color:#1f2328>my</span> <span style=color:#0550ae>+</span> <span style=color:#1f2328>m2</span><span style=color:#1f2328>.</span><span style=color:#1f2328>my</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// func (m MyInt) Subtract(MyInt) MyInt...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// func (m MyInt) Multiply(MyInt) MyInt...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// All core.Number methods...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>}.</span><span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>})</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>}</span> <span style=color:#0550ae>+</span> <span style=color:#1f2328>MyInt</span><span style=color:#1f2328>{</span><span style=color:#0550ae>2</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// Same as above because MyInt fully implements the core.Number interface</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>1</span> <span style=color:#0550ae>+</span> <span style=color:#0550ae>2</span> <span style=color:#57606a>// Emits the usual instructions for adding integers</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// Same deal for all operations:</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// x &lt;&lt; y : x.BitLeft(y)</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// x &gt;&gt; y : x.BitRight(y)</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// &amp;^ : x.BitAndNot()</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// x &amp; y : x.BitAnd(y)</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// x[y] : x.Get(y)</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// x[y] = z : x.Set(y, z)</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// &amp;x[y] : x.GetAddressable(y)</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Emit efficient code for core methods corresponding to operations via function inlining or direct instructions:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>n1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>n2</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>n3</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>n1</span> <span style=color:#0550ae>+</span> <span style=color:#1f2328>n2</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>n4</span> <span style=color:#1f2328>core</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Int</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>n1</span><span style=color:#1f2328>.</span><span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#1f2328>n2</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same implementation as above, no method call under the hood</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>n5</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>1.</span><span style=color:#6639ba>Add</span><span style=color:#1f2328>(</span><span style=color:#0550ae>2</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same implementation as above, roughly, no method call under the hood</span></span></span></code></pre></div><p>Add generic type aliases:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Map</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>K</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>V</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>ks</span> <span style=color:#1f2328>[]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>K</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>vs</span> <span style=color:#1f2328>[]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>V</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Dictionary</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Map</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>Dictionary</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>string</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Callback</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>()</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Coordinate</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>Number</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>[</span><span style=color:#0550ae>2</span><span style=color:#1f2328>]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Counter</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Map</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Int</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>List</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>Orderable</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>[]</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Reference</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>*</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Set</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Map</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{}]</span></span></span></code></pre></div><p>Simplify the language specification by moving descriptions of semantics now specified by generics and the core package into the core package documentation where applicable:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>core</span> <span style=color:#57606a>// import &#34;core&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Uint8 is the set of all unsigned 8-bit integers (0 to 255).</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// The value of an n-bit integer is n bits wide and represented using two&#39;s complement arithmetic.</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Uint8</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Integer...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// For two integer values x and y, the integer quotient q = x / y and remainder r = x % y satisfy the following relationships:</span>
</span></span><span style=display:flex><span><span style=color:#57606a>//</span>
</span></span><span style=display:flex><span><span style=color:#57606a>//     x = q*y + r  and  |r| &lt; |y|</span>
</span></span><span style=display:flex><span><span style=color:#57606a>//</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// with x / y truncated towards zero (&#34;truncated division&#34;).</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Integer</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Orderable...</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Comparison operators compare two operands and yield a typed boolean value.</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// In any comparison, the first operand must be assignable to the type of the second operand, or vice versa.</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// The equality operators == and != apply to operands that are comparable.</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Orderable</span> <span style=color:#cf222e>interface</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Comparable</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Greater</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Bool</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>GreaterEquals</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Bool</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#6639ba>Less</span><span style=color:#1f2328>(</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Bool</span>
</span></span><span style=display:flex><span>    <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>LessEquals</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>](</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>N</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Bool</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span></span></span></code></pre></div><p>Go spec:</p><pre tabindex=0><code>The Go Programming Language Specification

[...]

Integer literals

[...] Literals are syntactic sugar for values of types that implement the Integer interface in the core package. See that package for more information. [...] [Or you could list all the possible types that literals can represent, whatever presents best.]</code></pre><p>That&rsquo;s it for generics. There might be more that could be done to simplify and generalize Go with generics, but not without horribly breaking compatibility.</p><h2 id=more-ideas>More ideas</h2><p>While I have you, here are some additional ideas for how to strengthen Go.</p><h3 id=sum-types>Sum types</h3><p>Go has <a href=https://en.wikipedia.org/wiki/Product_type rel=external>product types</a>
:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>X</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Y</span> <span style=color:#cf222e>rune</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Z</span> <span style=color:#cf222e>string</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span> <span style=color:#57606a>// A value of T has a value for each field at a time</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// NumPossibleValues(T) = NumPossibleValues(int) * NumPossibleValues(rune) * NumPossibleValues(string)</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Note the &#34;*&#34; for &#34;product&#34;</span></span></span></code></pre></div><p>Go doesn&rsquo;t have <a href=https://en.wikipedia.org/wiki/Tagged_union rel=external>sum types</a>
:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span> <span style=color:#1f2328>sum</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>X</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Y</span> <span style=color:#cf222e>rune</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>Z</span> <span style=color:#cf222e>string</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span> <span style=color:#57606a>// A value of T has a value for one field at a time</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// NumPossibleValues(T) = NumPossibleValues(int) + NumPossibleValues(rune) + NumPossibleValues(string)</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Note the &#34;+&#34; for &#34;sum&#34;</span></span></span></code></pre></div><p>Other names (more or less) for sum types are coproduct types, tagged unions, and algebraic data types.</p><p>Two useful features of sum types:</p><ul><li>Each field has a name to distinguish it, so there can be multiple fields with the same type</li><li>Fields can&rsquo;t be added, changed, or removed without changing the meaning of the type, so code using the type can know which fields to expect</li></ul><p>To see a need for sum types, look at how <a href="https://cs.opensource.google/go/go/+/refs/tags/go1.18:src/go/ast/ast.go;l=41" rel=external>go/ast.Expr</a>
uses an unexported, useless method to limit which types can implement it. It does this so go/ast code only has to handle go/ast types. Grammars, enumerations, and other types that have distinct cases can all be modeled well by sum types. All built-in Go types are sum types that have multiple cases: all the numbers for numeric types, nil and non-nil channels/maps/slices/functions/pointers, empty and non-empty strings, etc.</p><p>Here&rsquo;s a way to add user-declared sum types to Go:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Expr</span> <span style=color:#cf222e>switch</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Index</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>X</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Lbrack</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Index</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Rbrack</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>KeyValue</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Key</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Colon</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Value</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Bad</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span> <span style=color:#57606a>// The default case is the zero/nil value</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>From</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>To</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>e</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Expr</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>e</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{}:</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// e has type Expr here</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>KeyValue</span><span style=color:#1f2328>{}:</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// e has type Expr here</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Bad</span><span style=color:#1f2328>{}:</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// e has type Expr here</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// e has type Expr here</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>x</span> <span style=color:#0550ae>:=</span> <span style=color:#1f2328>e</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{}:</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// x has type struct {</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>//     X *Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>//     Lbrack token.Pos</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>//     Index *Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>//     Rbrack token.Pos</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// } here</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// x has type Expr here</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>e</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{}:</span> <span style=color:#57606a>// Zero value for the case</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{</span><span style=color:#cf222e>nil</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>nil</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>nil</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Lbrack</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Index</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>nil</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Rbrack</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>e</span> <span style=color:#1f2328>{</span> <span style=color:#57606a>// &#34;case var&#34; matches patterns of literals or variables</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{}:</span> <span style=color:#57606a>// Any Expr.Index value</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>l</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>i</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>r</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// x has type *Expr here</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Lbrack</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>55</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Index</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>i</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Rbrack</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>75</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// x has type *Expr here</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Index</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>l</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>i</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>r</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>e</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// x has type *Expr here</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// Structures are consistent:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>type</span> <span style=color:#1f2328>S</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span> <span style=color:#1f2328>X</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>S</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>S</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>S</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>S</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>S</span><span style=color:#1f2328>{})</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{}:</span> <span style=color:#57606a>// Any S value</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// x has type int here</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// x has type int here</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>S</span><span style=color:#1f2328>{</span><span style=color:#0550ae>55</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Bad</span><span style=color:#1f2328>{</span><span style=color:#0550ae>123</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>456</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>switch</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Red</span> <span style=color:#57606a>// The type defaults to struct{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Green</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Blue</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span> <span style=color:#57606a>// Value is Blue{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>switch</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Red</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Green</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Blue</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#cf222e>switch</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Red</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Green</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Blue</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}.</span><span style=color:#1f2328>Red</span><span style=color:#1f2328>{}</span> <span style=color:#57606a>// Value is Red{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Syntactic sugar for sum types</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Color</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Red</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Green</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Blue</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// Syntactic sugar for sum-of-product types</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Expr</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Index</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>X</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Lbrack</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Index</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Rbrack</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>KeyValue</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Key</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Colon</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Value</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Bad</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>From</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>To</span> <span style=color:#1f2328>token</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pos</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Here&rsquo;s a way to adapt built-in core types into sum types where applicable:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>core</span> <span style=color:#57606a>// import &#34;core&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Pointer</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Pointer</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>Value</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>T</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Nil</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Int</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>&amp;</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>Pointer</span><span style=color:#1f2328>[</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>&amp;</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>p</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Int</span> <span style=color:#1f2328>=</span> <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>p</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>nil</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Pointer</span><span style=color:#1f2328>[</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>].</span><span style=color:#1f2328>Nil</span><span style=color:#1f2328>{}:</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Pointer</span><span style=color:#1f2328>[</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>].</span><span style=color:#1f2328>Pointer</span><span style=color:#1f2328>{</span><span style=color:#0550ae>123</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Forces dereference to compare values</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Pointer</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Pointer</span><span style=color:#1f2328>{</span><span style=color:#1f2328>v</span><span style=color:#1f2328>}:</span> <span style=color:#57606a>// Forces dereference to assign value to v</span>
</span></span><span style=display:flex><span>        <span style=color:#57606a>// v has type int here</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// For all built-in nil-able types:</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Map</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>K</span> <span style=color:#1f2328>Comparable</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>V</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Map</span> <span style=color:#57606a>// Details hidden</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Nil</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>map</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>]</span><span style=color:#cf222e>int</span> <span style=color:#57606a>// == nil == Map[int, int].Nil{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>Map</span><span style=color:#1f2328>[</span><span style=color:#1f2328>Int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Int</span><span style=color:#1f2328>]</span> <span style=color:#57606a>// == nil == Map[Int, Int].Nil{}</span></span></span></code></pre></div><h3 id=tuple-types>Tuple types</h3><p>Semantics:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>core</span> <span style=color:#57606a>// import &#34;core&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Tuple0</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{}</span> <span style=color:#57606a>// The unit type, the tuple equivalent of struct{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#57606a>// No Tuple1</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>A</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>B</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Tuple3</span><span style=color:#1f2328>[</span><span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span><span style=color:#1f2328>,</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span><span style=color:#1f2328>]</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>A</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>A</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>B</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>B</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>C</span> <span style=color:#f6f8fa;background-color:#82071e>$</span><span style=color:#1f2328>C</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Tuple20</span> <span style=color:#57606a>// ...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>mypackage</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Tuple0</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>Tuple0</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Tuple0</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>]{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>]</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>]{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.</span><span style=color:#1f2328>B</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>x</span><span style=color:#1f2328>.</span><span style=color:#1f2328>A</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>.</span><span style=color:#1f2328>B</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>3</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>4</span> <span style=color:#57606a>// x is changed</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>x</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>{</span><span style=color:#1f2328>y</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>y</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span> <span style=color:#57606a>// x is unchanged</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>{</span><span style=color:#1f2328>y</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>i</span> <span style=color:#0550ae>:=</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>);</span> <span style=color:#1f2328>i</span><span style=color:#1f2328>.(</span><span style=color:#cf222e>type</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>]:</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span> <span style=color:#1f2328>Tuple2</span><span style=color:#1f2328>[</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>]</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Syntactic sugar:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{}</span> <span style=color:#57606a>// Tuple0</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>{}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{}</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// Tuple2</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x</span> <span style=color:#1f2328>{</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>x</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>y</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>        <span style=color:#1f2328>y</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>y</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>i</span> <span style=color:#0550ae>:=</span> <span style=color:#cf222e>interface</span><span style=color:#1f2328>{}(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>);</span> <span style=color:#1f2328>i</span><span style=color:#1f2328>.(</span><span style=color:#cf222e>type</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>{</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>type</span> <span style=color:#1f2328>T</span> <span style=color:#1f2328>{</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>T</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Constructing and deconstructing tuples:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// New variables x, y are assigned 1, 2, respectively</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>x2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y2</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>{</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// New variables x2, y2 are assigned 1, 2, respectively</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>x3</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y3</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>x4</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y4</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>_</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Functions now take and give tuples where applicable:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>T</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span><span style=color:#0550ae>...</span> <span style=color:#57606a>// Same as &#34;return x, y&#34;</span>
</span></span><span style=display:flex><span>    <span style=color:#57606a>// &#34;...&#34; deconstructs a tuple into multiple result values in this context</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>t</span> <span style=color:#1f2328>{</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>T</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span><span style=color:#0550ae>...</span> <span style=color:#57606a>// &#34;...&#34; constructs a tuple from multiple result values in this context</span>
</span></span><span style=display:flex><span>    <span style=color:#6639ba>T</span><span style=color:#1f2328>(</span><span style=color:#1f2328>t</span><span style=color:#0550ae>...</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// &#34;...&#34; deconstructs a tuple into multiple argument values in this context</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>{</span><span style=color:#1f2328>x1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y1</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>{</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>T</span><span style=color:#1f2328>({</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span><span style=color:#0550ae>...</span><span style=color:#1f2328>)</span><span style=color:#0550ae>...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y2</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>T</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>x3</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y3</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span><span style=color:#0550ae>...</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>x3</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y3</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>T</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>x3</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y3</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span><span style=color:#0550ae>...</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Sum types work nicely with tuple types:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Expr</span> <span style=color:#cf222e>switch</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Add</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#1f2328>Sub</span> <span style=color:#1f2328>{</span><span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>*</span><span style=color:#1f2328>Expr</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>default</span> <span style=color:#1f2328>Num</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>Eval</span><span style=color:#1f2328>(</span><span style=color:#1f2328>e</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Expr</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>switch</span> <span style=color:#1f2328>e</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Add</span><span style=color:#1f2328>{</span><span style=color:#1f2328>l</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>r</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Num</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>},</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Num</span><span style=color:#1f2328>{</span><span style=color:#1f2328>y</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Eval</span><span style=color:#1f2328>(</span><span style=color:#0550ae>*</span><span style=color:#1f2328>l</span><span style=color:#1f2328>),</span> <span style=color:#6639ba>Eval</span><span style=color:#1f2328>(</span><span style=color:#0550ae>*</span><span style=color:#1f2328>r</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>return</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Num</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span> <span style=color:#0550ae>+</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Sub</span><span style=color:#1f2328>{</span><span style=color:#1f2328>l</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>r</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Num</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>},</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Num</span><span style=color:#1f2328>{</span><span style=color:#1f2328>y</span><span style=color:#1f2328>}</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Eval</span><span style=color:#1f2328>(</span><span style=color:#0550ae>*</span><span style=color:#1f2328>l</span><span style=color:#1f2328>),</span> <span style=color:#6639ba>Eval</span><span style=color:#1f2328>(</span><span style=color:#0550ae>*</span><span style=color:#1f2328>r</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>return</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Num</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span> <span style=color:#0550ae>-</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>case</span> <span style=color:#cf222e>var</span> <span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Num</span><span style=color:#1f2328>{</span><span style=color:#1f2328>_</span><span style=color:#1f2328>}:</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>return</span> <span style=color:#1f2328>e</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>z</span> <span style=color:#1f2328>Expr</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Eval</span><span style=color:#1f2328>(</span><span style=color:#1f2328>Expr</span><span style=color:#1f2328>.</span><span style=color:#1f2328>Add</span><span style=color:#1f2328>{</span><span style=color:#0550ae>&amp;</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>&amp;</span><span style=color:#1f2328>y</span><span style=color:#1f2328>})</span> <span style=color:#0550ae>==</span> <span style=color:#1f2328>z</span> <span style=color:#57606a>// True</span></span></span></code></pre></div><h3 id=represent-function-signatures-with-structures>Represent function signatures with structures</h3><p>Last one. Let&rsquo;s get crazy.</p><p>Notice that structures:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Args</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>f</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>g</span> <span style=color:#cf222e>float32</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>s</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>t</span> <span style=color:#cf222e>string</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>look like function signatures:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>Args</span><span style=color:#1f2328>(</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>f</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>g</span> <span style=color:#cf222e>float32</span><span style=color:#1f2328>,</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>s</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>t</span> <span style=color:#cf222e>string</span><span style=color:#1f2328>,</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>)</span></span></span></code></pre></div><p>That&rsquo;s kinda weird, isn&rsquo;t it? Shouldn&rsquo;t different things be different, if we want feature orthogonality?</p><p>What happens if you make a function signature like a structure type, or vice versa?</p><p>You can have vararg structure values:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>OneOrMore</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>One</span> <span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>More</span> <span style=color:#0550ae>...</span><span style=color:#cf222e>int</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>OneOrMore</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>3</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>4</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>OneOrMore</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>myInts</span><span style=color:#0550ae>...</span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>That&rsquo;s kinda cool.</p><p>You can have compact, one-line structure types like function signatures:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>Args</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>f</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>g</span> <span style=color:#cf222e>float32</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>s</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>t</span> <span style=color:#cf222e>string</span> <span style=color:#1f2328>}</span></span></span></code></pre></div><p>That&rsquo;s kinda nice.</p><p>You can have value constructors that can act like real functions:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Args</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>3.4</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>5.6</span><span style=color:#1f2328>,</span> <span style=color:#0a3069>&#34;7&#34;</span><span style=color:#1f2328>,</span> <span style=color:#0a3069>&#34;8&#34;</span><span style=color:#1f2328>}</span> <span style=color:#57606a>// Equivalent to:</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>Args</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>3.4</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>5.6</span><span style=color:#1f2328>,</span> <span style=color:#0a3069>&#34;7&#34;</span><span style=color:#1f2328>,</span> <span style=color:#0a3069>&#34;8&#34;</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Looks like a function call, but implemented like Args{...}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#cf222e>func</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>float32</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>float32</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>string</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>string</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>Args</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>Args</span> <span style=color:#57606a>// Acts like a function value if not called immediately</span></span></span></code></pre></div><p>That&rsquo;s kinda neat.</p><p>You can use structures as bulk arguments and results:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>(</span><span style=color:#1f2328>z</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>err</span> <span style=color:#cf222e>error</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>_</span><span style=color:#1f2328>()</span> <span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>error</span><span style=color:#1f2328>)</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>arg</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>var</span> <span style=color:#1f2328>result</span> <span style=color:#cf222e>struct</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>z</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>err</span> <span style=color:#cf222e>error</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>arg</span><span style=color:#1f2328>.</span><span style=color:#1f2328>x</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>1</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>arg</span><span style=color:#1f2328>.</span><span style=color:#1f2328>y</span> <span style=color:#1f2328>=</span> <span style=color:#0550ae>2</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>result</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>arg</span><span style=color:#0550ae>...</span><span style=color:#1f2328>)</span><span style=color:#0550ae>...</span> <span style=color:#57606a>// &#34;...&#34; adapts between structures and signatures</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>z</span> <span style=color:#0550ae>:=</span> <span style=color:#1f2328>result</span><span style=color:#1f2328>.</span><span style=color:#1f2328>z</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>err</span> <span style=color:#0550ae>:=</span> <span style=color:#1f2328>result</span><span style=color:#1f2328>.</span><span style=color:#1f2328>err</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>if</span> <span style=color:#1f2328>z</span> <span style=color:#1f2328>&gt;</span> <span style=color:#0550ae>0</span> <span style=color:#1f2328>{</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>return</span> <span style=color:#1f2328>z</span> <span style=color:#0550ae>+</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>err</span>
</span></span><span style=display:flex><span>    <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#1f2328>result</span><span style=color:#0550ae>...</span>
</span></span><span style=display:flex><span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>That&rsquo;s kinda swell.</p><p>You can have keyword arguments:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>mine</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>error</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>G</span><span style=color:#1f2328>(</span><span style=color:#1f2328>X</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>error</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span> <span style=color:#cf222e>bool</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span> <span style=color:#cf222e>float64</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>error</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>G</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>G</span><span style=color:#1f2328>(</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>package</span> <span style=color:#1f2328>yours</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>import</span> <span style=color:#0a3069>&#34;mine&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>mine</span><span style=color:#1f2328>.</span><span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Can&#39;t use x, y keywords because they&#39;re unexported</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>mine</span><span style=color:#1f2328>.</span><span style=color:#6639ba>G</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>mine</span><span style=color:#1f2328>.</span><span style=color:#6639ba>G</span><span style=color:#1f2328>(</span><span style=color:#1f2328>X</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>mine</span><span style=color:#1f2328>.</span><span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>mine</span><span style=color:#1f2328>.</span><span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Can&#39;t use x, y keywords because they&#39;re unexported</span></span></span></code></pre></div><p>That&rsquo;s kinda interesting.</p><p>You can have no arguments mean the zero value for the function signature &ldquo;structure&rdquo; type:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>error</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#cf222e>struct</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>}{</span><span style=color:#0550ae>0</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>}</span><span style=color:#0550ae>...</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>(</span><span style=color:#cf222e>struct</span><span style=color:#1f2328>{</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span> <span style=color:#1f2328>}{}</span><span style=color:#0550ae>...</span><span style=color:#1f2328>)</span> <span style=color:#57606a>// Same as above</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>F</span><span style=color:#1f2328>()</span> <span style=color:#57606a>// Same as above</span></span></span></code></pre></div><p>You can have a hybrid model, where zero or more arguments are specified positionally from left to right, and then zero or more of the remaining arguments are specified by keyword arguments:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span><span style=color:#cf222e>func</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span> <span style=color:#cf222e>bool</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span> <span style=color:#cf222e>float64</span><span style=color:#1f2328>)</span> <span style=color:#cf222e>error</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>()</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#1f2328>x</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#6639ba>H</span><span style=color:#1f2328>(</span><span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>type</span> <span style=color:#1f2328>J</span> <span style=color:#cf222e>struct</span> <span style=color:#1f2328>{</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span> <span style=color:#cf222e>int</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span> <span style=color:#cf222e>bool</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span> <span style=color:#cf222e>float64</span> <span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#1f2328>x</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>}</span>
</span></span><span style=display:flex><span><span style=color:#cf222e>var</span> <span style=color:#1f2328>_</span> <span style=color:#1f2328>=</span> <span style=color:#1f2328>J</span><span style=color:#1f2328>{</span><span style=color:#1f2328>Length</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>23.45</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>MetricUnits</span><span style=color:#1f2328>:</span> <span style=color:#cf222e>true</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>y</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>2</span><span style=color:#1f2328>,</span> <span style=color:#1f2328>x</span><span style=color:#1f2328>:</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>While <code>H()</code> looks perhaps unsettling, is it really any different than <code>J{}</code>? If we can&rsquo;t be trusted to write <code>H()</code>, then shouldn&rsquo;t we not be trusted to write <code>J{}</code> either?</p><p>This could help alleviate the need for <a href=https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis rel=external>optional parameters</a>
. Is it really any better to add an option structure parameter to your function that you add a dozen new fields to over time, instead of adding a dozen new optional parameters over time? At least this way, all the parameters and documentation are in one place, and adding new parameters at the end of the signature is backwards compatible.</p><p>This would also remove the need to avoid positional notation for structure literals, since currently they break when you add a new field.</p><p>I don&rsquo;t know if this is a good idea overall, but it seems interesting.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2022-04-02:/2022/04/02/generics-for-go/</guid><link>https://willfaught.com/2022/04/02/generics-for-go/</link><atom:link href="https://willfaught.com/2022/04/02/generics-for-go/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 02 Apr 2022 12:45:03 -0700</pubDate><title>Generics For Go</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://www.cnn.com/2020/04/08/business/coronavirus-cobol-programmers-new-jersey-trnd/index.html rel=external>Alicia Lee, writing for CNN</a>
:</p><blockquote><p>On top of ventilators, face masks and health care workers, you can now add COBOL programmers to the list of what several states urgently need as they battle the coronavirus pandemic.</p><p>In New Jersey, Gov. Phil Murphy has put out a call for volunteers who know how to code the decades-old computer programming language called COBOL because many of the state&rsquo;s systems still run on older mainframes.</p><p>In Kansas, Gov. Laura Kelly said the state&rsquo;s Departments of Labor was in the process of modernizing from COBOL but then the virus interfered. &ldquo;So they&rsquo;re operating on really old stuff,&rdquo; she said.</p></blockquote><p>Sure, they were <em>almost</em> done taking 40 years to upgrade their technology. So close! What terrible luck for them.</p><p>It&rsquo;s been this way for a while. COBOL programmers are paid quite well because large dinosaur organizations (banks, schools, governments) still use systems that require it, but there aren&rsquo;t a lot of people left who already know how to do the work. At some point in the past, some vendor convinced these organizations that it was worth the long-term investment to buy these really expensive systems. It turns out that technology evolves pretty quickly (who knew?), so these systems were left in the dust. Now these organizations are trying to build modern systems on top of this creaky technology, and it&rsquo;s just terrible. This is why government websites are so bad. My state&rsquo;s unemployment website says it&rsquo;s unavailable after 10 PM every night. Can you imagine Facebook or Twitter being unavailable, ever? That crap rarely flies when private money is at stake. Rather than admit their mistake and swallow the cost of these bad products, the organizations try to make it work as long as possible, never mind the downsides.</p><blockquote><p>&ldquo;Literally, we have systems that are 40-plus-years-old,&rdquo; New Jersey Gov. Murphy said over the weekend. &ldquo;There&rsquo;ll be lots of postmortems and one of them on our list will be how did we get here where we literally needed COBOL programmers?&rdquo;</p></blockquote><p>There won&rsquo;t be any postmortems. The situation was already well understood, as I laid it out above. It&rsquo;s purely a political problem. <em>Of course</em> the engineers working with these products have been asking for replacements for decades. Governments could have paid the money to do it, but that would have required raising taxes or finding the money from somewhere, so they didn&rsquo;t do it. The fault lies squarely at the feet of the legislature: every representative that came and went since those systems exhibited problems. It&rsquo;s as simple as that.</p><p>The reality is that it&rsquo;s not that hard to learn COBOL and get up to speed on working with it. That&rsquo;s true for any programming language. I learn new programming stuff almost every week, and I&rsquo;ve learned many programming languages in my professional work. Just because a programming language is old, that doesn&rsquo;t mean that it&rsquo;s bad. Lisp is one of the oldest programming languages around (1958, one year older than COBOL) and it&rsquo;s still one of the best. The reality is probably that these governments aren&rsquo;t willing to pay fair market wages and give engineers time to learn and train properly. They want someone who can walk in the door and be productive today, but for a fraction of what they&rsquo;re worth.</p><p>You gotta love those 1950s capitalized names. COBOL!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2020-05-12:/2020/05/12/shortage-of-cobol-programmers/</guid><link>https://willfaught.com/2020/05/12/shortage-of-cobol-programmers/</link><atom:link href="https://willfaught.com/2020/05/12/shortage-of-cobol-programmers/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 12 May 2020 19:23:00 -0700</pubDate><title>Shortage Of COBOL Programmers</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Chris Moody on what part of company culture is actually important:</p><blockquote><p>I&rsquo;ve been fascinated by different company cultures for as long as I can remember (maintaining culture is also a hot topic at our CEO Lunches each month) and I&rsquo;m frequently asking entrepreneurs to describe the culture of their companies. Over time I&rsquo;ve come to realize that when you break down culture descriptions you&rsquo;ll often find a mix of two components: values and vibe. Although each component can have a significant impact on the overall feel of a company, the way you establish and manage the two should be different.</p></blockquote><p><a href=https://willfaught.com/2019/10/16/startup-culture-values-vs.-vibe/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2019-10-16:/2019/10/16/startup-culture-values-vs.-vibe/</guid><link>https://chrismoody.com/startup-culture/</link><atom:link href="https://chrismoody.com/startup-culture/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 16 Oct 2019 15:20:26 -0700</pubDate><title>Startup Culture: Values Vs. Vibe</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Looks like a new version of Wi-Fi is on the horizon: Wi-Fi 6, or 802.11ax. Better for network capacity and small device battery life.</p><p><a href=https://willfaught.com/2019/08/02/wi-fi-6-is-coming/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2019-08-02:/2019/08/02/wi-fi-6-is-coming/</guid><link>https://9to5mac.com/guides/wi-fi-6/</link><atom:link href="https://9to5mac.com/guides/wi-fi-6/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 02 Aug 2019 17:45:40 -0700</pubDate><title>Wi-Fi 6 Is Coming</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>This is so spot on.</p><p><a href=https://willfaught.com/2019/03/30/early-botw-players-know-whats-up/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2019-03-30:/2019/03/30/early-botw-players-know-whats-up/</guid><link>https://reddit.com/r/Breath_of_the_Wild/comments/b7baiv/early_game_players_know_whats_up/</link><atom:link href="https://reddit.com/r/Breath_of_the_Wild/comments/b7baiv/early_game_players_know_whats_up/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 30 Mar 2019 09:46:31 -0700</pubDate><title>Early BotW Players Know What’s Up</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m really interested in dependent types, and hope this comes to fruition!</p><p><a href=https://willfaught.com/2019/03/29/why-dependent-haskell-is-the-future-of-software-development/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2019-03-29:/2019/03/29/why-dependent-haskell-is-the-future-of-software-development/</guid><link>https://serokell.io/blog/2018/12/17/why-dependent-haskell</link><atom:link href="https://serokell.io/blog/2018/12/17/why-dependent-haskell" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 29 Mar 2019 09:06:36 -0700</pubDate><title>Why Dependent Haskell Is The Future Of Software Development</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2019-03-29:/2019/03/29/suburban-sprawl-is-unaffordable/</guid><link>https://www.seattletimes.com/business/after-decades-of-suburban-sprawl-san-diego-eyes-big-shift-to-dense-development/</link><atom:link href="https://www.seattletimes.com/business/after-decades-of-suburban-sprawl-san-diego-eyes-big-shift-to-dense-development/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 29 Mar 2019 06:35:54 -0700</pubDate><title>Suburban Sprawl Is Unaffordable</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Andrew McDermott:</p><blockquote><p>A tech employee, who I&rsquo;ll call Alan, was watching anime porn at work. Not satisfied with simply watching it, he decided it was time to start printing his porn — on a color laser printer, no less.</p><p>He printed it on transparencies which, as it turns out, weren&rsquo;t compatible with the laser printer.</p><p>They melted inside the printer.</p><p>Alan has just ruined a very expensive new printer. Then to make matters worse, he takes the printer apart in a misguided attempt to try and fix things himself. He&rsquo;s voided the warranty.</p><p>After he was told specifically not to.</p><p>Naturally, He Was Fired for His Mistake</p><p>But it wasn&rsquo;t for any of the mistakes I just mentioned. He definitely made a mess of things; he creeped out his co-workers, destroyed company property and cost his employers a lot of money.</p><p>He was fired because he lied about it.</p></blockquote><p>It&rsquo;s a pretty good list.</p><p><a href=https://willfaught.com/2018/12/10/8-common-mistakes-that-get-developers-fired/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-12-10:/2018/12/10/8-common-mistakes-that-get-developers-fired/</guid><link>https://www.sitepoint.com/8-common-mistakes-that-get-developers-fired/</link><atom:link href="https://www.sitepoint.com/8-common-mistakes-that-get-developers-fired/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 10 Dec 2018 19:14:20 -0800</pubDate><title>“8 Common Mistakes That Get Developers Fired”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/P4VBqTViEx4?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Steve Jobs explains why a company&rsquo;s product deteriorates as it becomes more successful.</p><p>Via <a href=https://reddit.com/r/videos/comments/9tv799/steve_jobs_explains_why_a_companys_product/ rel=external>Reddit</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-11-03:/2018/11/03/steve-jobs-on-product-deterioration/</guid><link>https://willfaught.com/2018/11/03/steve-jobs-on-product-deterioration/</link><atom:link href="https://willfaught.com/2018/11/03/steve-jobs-on-product-deterioration/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 03 Nov 2018 15:56:36 -0700</pubDate><title>Steve Jobs On Product Deterioration</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Michael Church on the &ldquo;math&rdquo; of software engineer contributions in an organization:</p><blockquote><p>Teams, in general, have four categories into which a person&rsquo;s contribution can fall: dividers, subtracters, adders, and multipliers. Dividers are the cancerous people who have a broad-based negative effect on productivity. This usually results from problems with a person&rsquo;s attitude or ethics– &ldquo;benign incompetence&rdquo; (except in managers, whose job descriptions allow them only to be multipliers or dividers) is rarely enough to have a &ldquo;divider&rdquo; effect. This is an &ldquo;HR issue&rdquo; (dividers must improve or be fired) but not the scope of this professional-development scale, which assumes good-faith and a wish for progress. Subtracters are people who produce less than they cost, including the time of others who must coach and supervise them. As a temporary state, there&rsquo;s nothing wrong with being a subtracter– almost every software engineer starts out his career as one, and it&rsquo;s common to be a subtracter in the first weeks of a new job. Adders are the workhorses: competent individual contributors who deliver most of the actual work. Finally, multipliers are those who, often in tandem with &ldquo;adder&rdquo; contributions, make other people more productive. In many industries, being a multiplier is thought to be the province of management alone, but in technology that couldn&rsquo;t be farther from the truth, because architectural and infrastructural contributions (such as reusable code libraries) have a broad-based impact on the effectiveness of the entire company.</p></blockquote><p><a href=https://willfaught.com/2018/11/02/the-math-of-software-engineer-contributions/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-11-02:/2018/11/02/the-math-of-software-engineer-contributions/</guid><link>https://web.archive.org/web/20120211164647/http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-of-a-software-engineer-and-where-it-all-goes-wrong/</link><atom:link href="https://web.archive.org/web/20120211164647/http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-of-a-software-engineer-and-where-it-all-goes-wrong/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 02 Nov 2018 23:00:12 -0700</pubDate><title>The Math Of Software Engineer Contributions</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Melissa Mittelman on why GitHub added management to its workforce:</p><blockquote><p>While the old times created a strong sense of camaraderie, employees didn&rsquo;t know who to direct questions to, either about uncomfortable confrontations with colleagues or about their own performance. &ldquo;Without even a minimal layer of management, it was difficult to have some of those conversations and to get people feeling like they understood what was expected of them, and that they were getting the support that they needed in order to do the best work,&rdquo; says Avalos, who&rsquo;s since been promoted to chief business officer, the only C-level position besides CEO.</p></blockquote><p>Humans in a workplace seem to need at least some basic level of management, like defining general expectations, assessing performance, conflict resolution, and stewarding the company culture.</p><p>On the problem of coordination:</p><blockquote><p>As GitHub has grown to about 600 employees, it says a flat organization compromised its ability to get things done. GitHub says coordination by the heads of the engineering, legal, marketing, sales, and other departments has been crucial to recent achievements, including the ability to open-source more projects than before, increase the frequency of some product updates to quarterly, and secure a major partnership this year with IBM.</p></blockquote><p><a href=https://willfaught.com/2018/10/30/why-github-added-management/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-30:/2018/10/30/why-github-added-management/</guid><link>https://www.theglobeandmail.com/report-on-business/small-business/startups/why-github-finally-abandoned-its-bossless-workplace/article31718152/</link><atom:link href="https://www.theglobeandmail.com/report-on-business/small-business/startups/why-github-finally-abandoned-its-bossless-workplace/article31718152/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 30 Oct 2018 23:00:24 -0700</pubDate><title>Why GitHub Added Management</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Vladimir Oane explains <a href=https://en.wikipedia.org/wiki/Holacracy rel=external>holacracy</a>
:</p><blockquote><p>Holacracy is a system designed to move companies away from rigid corporate structures and toward decentralized management and dynamic composition. As envisioned, under a holacracy teams largely self-organize, and individuals operate with a fair amount of autonomy. Ideally, this puts work at the forefront and lets a company&rsquo;s organizational structure support that work, rather than the other way around. As Tom Thomison, a partner at HolacracyOne — the company teaching this system — puts it, &ldquo;Nothing gets in the way of the work.&rdquo;</p></blockquote><p>It didn&rsquo;t work out so well for some notable examples:</p><blockquote><p>Github, a code repository company that geeks are in love with, was one of the early adopters of holacracy. So was Buffer, a social media darling, and Medium, the company I use to host my articles. But over the last few months, these companies began renouncing Holacracy and returning to a more conventional pyramid-shaped command structure.</p></blockquote><p>The reasons given for why it failed for them:</p><ul><li>Lack of coordination</li><li>Lack of direction</li><li>Systems too complex to manage</li><li>Shared ownership</li></ul><p>He goes into detail for each. On the problem of shared ownership in particular:</p><blockquote><p>An attraction to shared ownership is as old as time. The choice members of each community had to make at some point was: Should they empower a gifted, driven, powerful member of the community in a leadership position? Or should they create a society in which all citizens are &ldquo;equal&rdquo; (note, a discussion of equality is beyond the purpose of this article)? The former approach can lead to dictatorship, the latter to mediocrity. The former optimizes for upside, the latter protects against the downside. So which one should a company choose?</p></blockquote><p><a href=https://willfaught.com/2018/10/30/the-problems-with-holacracy/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-30:/2018/10/30/the-problems-with-holacracy/</guid><link>https://medium.com/battle-room/holacracy-and-the-mirage-of-the-boss-less-workplace-lessons-from-the-failures-at-github-medium-4355993926d4</link><atom:link href="https://medium.com/battle-room/holacracy-and-the-mirage-of-the-boss-less-workplace-lessons-from-the-failures-at-github-medium-4355993926d4" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 30 Oct 2018 11:08:43 -0700</pubDate><title>The Problems With Holacracy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Robin Message on how Scrum goes awry:</p><blockquote><p>The Product Owner in a scrum is typically someone from the business or product side of the business. They are not there to advocate for technical priorities; and indeed, this is fair enough, because someone needs to advocate for business and customer value. Scrum intends them to be &ldquo;responsible&rdquo; and &ldquo;accountable&rdquo; for the product backlog, and therefore to work with others to create backlog items, but in practice, they are typically the sole person creating the backlog. So, they are setting the direction of development, but without any thought as to practicalities of the development process.</p><p>Then we have the Scrum master. The ideal Scrum master would be someone with technical and product experience, respected in the company as a leader, willing to work as a servant, and outside of the technical or product hierarchy. Unfortunately, the Scrum master is typically someone with limited experience, two days training, who is not respected as a leader but only considered to be a servant, and often in the product part of the organisation (as that is where project management has sat previously.) Often they are even managed by the product owner, or share a boss with the product owner.</p><p>Finally we have this self-organised, cross-functional, non-hierarchical, essentially amorphous development team. They are meant to be self organising, with no one telling them how to build the product backlog. However, they have limited or no say over what is top of the product backlog, pressure to deliver something sprint-after-sprint, and no-one with the authority to balance the product owner and advocate for developing with higher quality.</p></blockquote><p>I&rsquo;ve seen all of this happen. It&rsquo;s so frustrating.</p><p><a href=https://willfaught.com/2018/10/29/how-scrum-goes-awry/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-29:/2018/10/29/how-scrum-goes-awry/</guid><link>https://www.lambdacambridge.com/blog/how-scrum-disempowers-developers-and-destroys-agile</link><atom:link href="https://www.lambdacambridge.com/blog/how-scrum-disempowers-developers-and-destroys-agile" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 29 Oct 2018 18:20:04 -0700</pubDate><title>How Scrum Goes Awry</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Robin Message on the mismatch between the parts of the <a href=https://agilemanifesto.org rel=external>agile manifesto</a>
concerned with technical craft and those concerned with project management:</p><blockquote><p>So, to summarise, almost every method and technique that was represented at the Agile manifesto was concerned with technical craft. XP is a methodology for software development, and as such, seven of the twelve practices are about how the software is written (pair programming, TDD, continuous integration, refactoring, simple design, system metaphor, coding standards). The craft/Pragmatic contingent weren&rsquo;t designing a methodology for a team per se; they were concerned with how the software was written. But Scrum? Go read the Scrum Guide. It&rsquo;s not long, I&rsquo;ll wait. [&mldr;]</p><p>It&rsquo;s not a software methodology. Or even a technical methodology. It&rsquo;s aimed at project managers who have this amorphous &ldquo;development team&rdquo; that they are trying to make develop what they want, faster. Scrum could be used to design HelloFresh menus (it isn&rsquo;t, to my knowledge) or apparently to prepare a ship for war. If you search for the word software in the guide, that quote above contains the only two mentions!</p></blockquote><p><a href=https://willfaught.com/2018/10/29/the-two-faces-of-the-agile-manifesto/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-29:/2018/10/29/the-two-faces-of-the-agile-manifesto/</guid><link>https://www.lambdacambridge.com/blog/2018-05-how-scrum-destroyed-agile</link><atom:link href="https://www.lambdacambridge.com/blog/2018-05-how-scrum-destroyed-agile" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 29 Oct 2018 18:02:19 -0700</pubDate><title>The Two Faces Of The Agile Manifesto</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>James Whittaker on Google&rsquo;s reaction to Facebook becoming more valuable to advertisers than Google:</p><blockquote><p>Larry Page himself assumed command to right this wrong. Social became state-owned, a corporate mandate called Google+. It was an ominous name invoking the feeling that Google alone wasn&rsquo;t enough. Search had to be social. Android had to be social. You Tube, once joyous in their independence, had to be … well, you get the point. Even worse was that innovation had to be social. Ideas that failed to put Google+ at the center of the universe were a distraction.</p><p>Suddenly, 20% meant half-assed. Google Labs was shut down. App Engine fees were raised. APIs that had been free for years were deprecated or provided for a fee. As the trappings of entrepreneurship were dismantled, derisive talk of the &ldquo;old Google&rdquo; and its feeble attempts at competing with Facebook surfaced to justify a &ldquo;new Google&rdquo; that promised &ldquo;more wood behind fewer arrows.&rdquo;</p><p>The days of old Google hiring smart people and empowering them to invent the future was gone. The new Google knew beyond doubt what the future should look like. Employees had gotten it wrong and corporate intervention would set it right again.</p></blockquote><p>The destruction of a very successful open allocation company culture, and the end of a golden era.</p><p><a href=https://willfaught.com/2018/10/29/googles-management-upheaval/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-29:/2018/10/29/googles-management-upheaval/</guid><link>https://blogs.msdn.microsoft.com/jw_on_tech/2012/03/13/why-i-left-google/</link><atom:link href="https://blogs.msdn.microsoft.com/jw_on_tech/2012/03/13/why-i-left-google/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 29 Oct 2018 13:04:37 -0700</pubDate><title>Google’s Management Upheaval</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Michael Church on the self-organizing employees of Valve:</p><blockquote><p>The game company Valve has gotten a lot of press recently for, among other things, its unusual corporate culture in which employees are free to move to whatever project they choose. There&rsquo;s no &ldquo;transfer process&rdquo; to go through when an employee decides to move to another team. They just move. This is symbolized by placing wheels under each desk. People are free to move as they are capable. Employees are trusted with their time and energy. And it works.</p><p>Surely this can&rsquo;t work for larger companies, can it? Actually, I&rsquo;d argue that Valve has found the only solution that actually works. When companies trust their employees to self-organize and allocate their time as they will, the way to make sure that unpleasant but important work gets done is to provide an incentive: a leadership position or a promotion or a bonus to the person who rolls up her sleeves and solves this problem. That&rsquo;s &ldquo;expensive&rdquo;, but it actually works.</p></blockquote><p>There is indeed something very interesting about how Valve works, and I can&rsquo;t help but see how it leads to happier, more productive employees.</p><p><a href=https://willfaught.com/2018/10/25/valve-humiliated-your-corporate-culture/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-25:/2018/10/25/valve-humiliated-your-corporate-culture/</guid><link>https://web.archive.org/web/20120913001404/http://michaelochurch.wordpress.com:80/2012/08/09/dont-look-now-but-valve-just-humiliated-your-corporate-culture/</link><atom:link href="https://web.archive.org/web/20120913001404/http://michaelochurch.wordpress.com:80/2012/08/09/dont-look-now-but-valve-just-humiliated-your-corporate-culture/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 25 Oct 2018 00:52:38 -0700</pubDate><title>Valve Humiliated Your Corporate Culture</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Michael Church on <a href=https://en.wikipedia.org/wiki/Open_allocation rel=external>open allocation</a>
:</p><blockquote><p>When open allocation is in play, projects compete for engineers, and the result is better projects. When closed allocation is in force, engineers compete for projects, and the result is worse engineers.</p><p>When you manage people like children, that&rsquo;s what they become. Traditional, 20th-century management (so-called &ldquo;Theory X&rdquo;) is based on the principle that people are lazy and need to be intimidated into working hard, and that they&rsquo;re unethical and need to be terrified of the consequences of stealing from the company, with a definition of &ldquo;stealing&rdquo; that includes &ldquo;poaching&rdquo; clients and talent, education on company time, and putting their career goals over the company&rsquo;s objectives. In this mentality, the only way to get something decent out of a worker is to scare him by threatening to turn off his income– suddenly and without appeal. Micromanagement and Theory X are what I call the Aztec Syndrome: the belief in many companies that if there isn&rsquo;t a continual indulgence in sacrifice and suffering, the sun will stop rising.</p></blockquote><p>The whole thing is a great read.</p><p>There&rsquo;s also some great <a href=https://gist.github.com/h3h/4437224 rel=external>discussion</a>
about it by a reader and the author. Michael Church again:</p><blockquote><p>I don&rsquo;t know what the best approach to rewarding important-but-not-desired projects is. Large bonuses are usually a sign of something broken, and &ldquo;performance-based bonuses&rdquo; turn after entitlements in peoples&rsquo; minds after one year. Promotions for citizenship are a good idea, but how does one define promotions without creating the sort of power dynamic that open allocation is supposed to prevent?</p><p>I think the ultimate answer involves ownership, which is more than just notional equity. People will do the grungy work associated with something they own. Bonuses aren&rsquo;t real ownership, because there&rsquo;s no guarantee of another one. Nor am I talking about equity, which has its own issues (largely rooted in VCs being stingy and setting ~0.1% caps on engineer grants). To make OA work, you probably need a culture where people are encouraged to take ownership&ndash; not behave like an employee. Very few corporate cultures actually exist like that. In most companies, an ownership attitude gets you fired.</p></blockquote><p><a href=https://willfaught.com/2018/10/24/open-allocation-is-tech-companies-only-realxa0option/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-24:/2018/10/24/open-allocation-is-tech-companies-only-realxa0option/</guid><link>https://web.archive.org/web/20120915071935/http://michaelochurch.wordpress.com/2012/09/03/tech-companies-open-allocation-is-your-only-real-option/</link><atom:link href="https://web.archive.org/web/20120915071935/http://michaelochurch.wordpress.com/2012/09/03/tech-companies-open-allocation-is-your-only-real-option/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 24 Oct 2018 21:14:23 -0700</pubDate><title>Open Allocation Is Tech Companies’ Only Realxa0Option</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Joel Spolsky:</p><blockquote><p>But the rules and procedures only work when nothing goes wrong. Various &ldquo;data-backed Web site&rdquo; consulting companies sprouted up in the last couple of years and filled their ranks by teaching rank amateurs the fourteen things you need to know to create a data-backed Web site (&ldquo;here&rsquo;s a select statement, kid, build a Web site&rdquo;).</p></blockquote><p>The last line cracked me up.</p><p>The moral of the story:</p><blockquote><p>Beware of Methodologies. They are a great way to bring everyone up to a dismal, but passable, level of performance, but at the same time, they are aggravating to more talented people who chafe at the restrictions that are placed on them. It&rsquo;s pretty obvious to me that a talented chef is not going to be happy making burgers at McDonald&rsquo;s, precisely because of McDonald&rsquo;s rules. So why do IT consultants brag so much about their methodologies? (Beats me.)</p></blockquote><p><a href=https://willfaught.com/2018/10/24/big-macs-vs.-the-naked-chef/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-24:/2018/10/24/big-macs-vs.-the-naked-chef/</guid><link>https://www.joelonsoftware.com/2001/01/18/big-macs-vs-the-naked-chef/</link><atom:link href="https://www.joelonsoftware.com/2001/01/18/big-macs-vs-the-naked-chef/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 24 Oct 2018 00:23:19 -0700</pubDate><title>Big Macs Vs. The Naked Chef</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Steve Yegge:</p><blockquote><p>Up until maybe a year ago, I had a pretty one-dimensional view of so-called &ldquo;Agile&rdquo; programming, namely that it&rsquo;s an idiotic fad-diet of a marketing scam making the rounds as yet another technological virus implanting itself in naive programmers who&rsquo;ve never read &ldquo;No Silver Bullet&rdquo;, the kinds of programmers who buy extended warranties and self-help books and believe their bosses genuinely care about them as people, the kinds of programmers who attend conferences to make friends and who don&rsquo;t know how to avoid eye contact with leaflet-waving fanatics in airports and who believe writing shit on index cards will suddenly make software development easier.</p></blockquote><p>The best deconstruction of Agile I&rsquo;ve ever come across.</p><p><a href=https://willfaught.com/2018/10/23/good-agile-bad-agile/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-23:/2018/10/23/good-agile-bad-agile/</guid><link>https://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html</link><atom:link href="https://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 23 Oct 2018 23:16:58 -0700</pubDate><title>Good Agile, Bad Agile</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Sean Patterson:</p><blockquote><ul><li>Commit each fix or task as a separate change</li><li>Only commit when a block of work is complete</li><li>Commit each layout change separately</li><li>Joint commit for layout file, code behind file, and additional resources</li></ul></blockquote><p>Invaluable advice for keeping a sane commit history.</p><p><a href=https://willfaught.com/2018/10/23/keep-your-commits-atomic/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-23:/2018/10/23/keep-your-commits-atomic/</guid><link>https://www.freshconsulting.com/atomic-commits/</link><atom:link href="https://www.freshconsulting.com/atomic-commits/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 23 Oct 2018 16:02:54 -0700</pubDate><title>Keep Your Commits Atomic</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Chris Beams:</p><blockquote><p>A project&rsquo;s long-term success rests (among other things) on its maintainability, and a maintainer has few tools more powerful than his project&rsquo;s log. It&rsquo;s worth taking the time to learn how to care for one properly. What may be a hassle at first soon becomes habit, and eventually a source of pride and productivity for all involved.</p><p>In this post, I am addressing just the most basic element of keeping a healthy commit history: how to write an individual commit message. There are other important practices like commit squashing that I am not addressing here. Perhaps I&rsquo;ll do that in a subsequent post.</p></blockquote><p>I follow these. A company&rsquo;s commit history is its greatest asset.</p><p><a href=https://willfaught.com/2018/10/23/how-to-write-a-git-commit-message/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-23:/2018/10/23/how-to-write-a-git-commit-message/</guid><link>https://chris.beams.io/posts/git-commit/</link><atom:link href="https://chris.beams.io/posts/git-commit/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 23 Oct 2018 14:59:07 -0700</pubDate><title>How To Write A Git Commit Message</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A reply to someone saying someone else had a bad experience with Scrum because they did Scrum wrong:</p><blockquote><p>That sounds ridiculously similar to people hanging on to communism/socialism: &ldquo;the principles are sound, it just hasn&rsquo;t been implemented as intended&rdquo;. Except, just like communism, Scrum has never and will never be implemented &ldquo;as intended&rdquo; because that&rsquo;s contrary to our collective evolutionary gifts, and against a developer&rsquo;s desire to find satisfaction in good craftsmanship. A project management methodology building on utopian altruistic ideals and delusions wrt people&rsquo;s motives is just propaganda.</p></blockquote><p>Couldn&rsquo;t have said it better myself.</p><p><a href=https://willfaught.com/2018/10/22/scrum-disempowers-developers/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-10-22:/2018/10/22/scrum-disempowers-developers/</guid><link>https://news.ycombinator.com/item?id=17186591</link><atom:link href="https://news.ycombinator.com/item?id=17186591" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 22 Oct 2018 15:34:28 -0700</pubDate><title>Scrum Disempowers Developers</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>but it&rsquo;s const final static private abstract unsigned int CURRENT_YEAR = 2018</p></blockquote><p>LOL.</p><p><a href=https://willfaught.com/2018/03/31/current-year/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-03-31:/2018/03/31/current-year/</guid><link>https://reddit.com/r/cscareerquestions/comments/88b07i/_/dwjbsjp/?context=1</link><atom:link href="https://reddit.com/r/cscareerquestions/comments/88b07i/_/dwjbsjp/?context=1" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 31 Mar 2018 00:18:52 -0700</pubDate><title>Current Year</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>The use of self-compilation speed as a benchmark seems like a great way to target and then maintain a balance between complexity and the performance benefits of optimizations in a compiler. Complex optimizations where the cost of optimization in terms of code complexity, outweigh the benefits of faster binaries could be clearly recognised with such a metric.</p></blockquote><p>An interesting idea for seeing the tradeoffs between compiler design/implementation complexity and speed.</p><p><a href=https://willfaught.com/2018/03/19/wirth-oberon-and-simplicity/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-03-19:/2018/03/19/wirth-oberon-and-simplicity/</guid><link>https://web.archive.org/web/20180626230640/https://gmacd.net/simplicity/2013/04/25/wirth-oberon-and-simplicity.html</link><atom:link href="https://web.archive.org/web/20180626230640/https://gmacd.net/simplicity/2013/04/25/wirth-oberon-and-simplicity.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 19 Mar 2018 14:04:27 -0700</pubDate><title>Wirth, Oberon And Simplicity</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Hyrum Wright:</p><blockquote><p>Given enough use, there is no such thing as a private implementation. That is, if an interface has enough consumers, they will collectively depend on every aspect of the implementation, intentionally or not. This effect serves to constrain changes to the implementation, which must now conform to both the explicitly documented interface, as well as the implicit interface captured by usage. We often refer to this phenomenon as &ldquo;bug-for-bug compatibility.&rdquo;</p></blockquote><p><a href=https://willfaught.com/2018/03/10/life-of-a-go-infrastructure-maintainer/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-03-10:/2018/03/10/life-of-a-go-infrastructure-maintainer/</guid><link>https://medium.com/@zombiezen/life-of-a-go-infrastructure-maintainer-cb1419308eb5</link><atom:link href="https://medium.com/@zombiezen/life-of-a-go-infrastructure-maintainer-cb1419308eb5" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 10 Mar 2018 16:00:26 -0800</pubDate><title>Life Of A Go Infrastructure Maintainer</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Anthony Alaribe:</p><blockquote><p>Firstly, a NoSQL key value store is fast, much faster than a comparable relational database. Its speed comes from its simplicity. A key value database stores a data record using one primary key. The key means the record is uniquely identifiable, and can be directly accessed. Other than this, it&rsquo;s up to the developer to architect any more complexity in accessing data.</p><p><img src=https://cdn-images-1.medium.com/max/800/1*zTzSNjtU-kudy78iZss1vw.png alt="the dark side"></p></blockquote><p>I love the Dark Side meme.</p><p><a href=https://willfaught.com/2018/03/02/what-i-learnt-from-building-3-high-traffic-web-applications-on-an-embedded-key-value-store./>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-03-02:/2018/03/02/what-i-learnt-from-building-3-high-traffic-web-applications-on-an-embedded-key-value-store./</guid><link>https://hackernoon.com/what-i-learnt-from-building-3-high-traffic-web-applications-on-an-embedded-key-value-store-68d47249774f</link><atom:link href="https://hackernoon.com/what-i-learnt-from-building-3-high-traffic-web-applications-on-an-embedded-key-value-store-68d47249774f" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 02 Mar 2018 17:51:14 -0800</pubDate><title>What I Learnt From Building 3 High Traffic Web Applications On An Embedded Key Value Store.</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The other day I was thinking about how many RFCs there are, and how likely it is that someone has actually read them all and understands how all Internet technologies work. Then I ran across this, and was enlightened.</p><p><a href=https://willfaught.com/2018/01/24/the-naming-of-hosts/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2018-01-24:/2018/01/24/the-naming-of-hosts/</guid><link>https://tools.ietf.org/html/rfc2100</link><atom:link href="https://tools.ietf.org/html/rfc2100" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 24 Jan 2018 11:10:38 -0800</pubDate><title>The Naming Of Hosts</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you ever wondered what Journey was all about, this is the best you&rsquo;re going to find. The ending blew my mind. So great.</p><p><a href=https://willfaught.com/2017/12/13/finding-the-meaning-of-journey-in-its-music/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-12-13:/2017/12/13/finding-the-meaning-of-journey-in-its-music/</guid><link>https://www.youtube.com/watch?v=KeKnkaB0MBE</link><atom:link href="https://www.youtube.com/watch?v=KeKnkaB0MBE" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 13 Dec 2017 13:29:16 -0800</pubDate><title>Finding The Meaning Of Journey In Its Music</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Nintendo&rsquo;s first mobile game, Super Mario Run, was enormously popular — but that doesn&rsquo;t mean it was a success for the company. During its most recent earnings report, Nintendo revealed that Mario Run has been downloaded 200 million times, 90 percent of which came from outside of Japan. However, Nintendo says that despite these big numbers, the game has &ldquo;not yet reached an acceptable profit point.&rdquo; While Nintendo didn&rsquo;t reveal any specifics with regards to conversion rates, a big sticking point for many with Super Mario Run was its comparatively large price point; it&rsquo;s free to download, but requires a one-time fee of $9.99 to unlock the whole game. Nintendo&rsquo;s problem is that they don&rsquo;t want to devalue their software, but Apple does; the entire App Store is geared around devaluing apps as much as possible. Hence the race to the bottom in app prices we see. Nintendo wants a hefty profit from every sale, but that&rsquo;s not how App Store profits work anymore: you have to entice users with free apps to get lots of downloads and then entice them more with relatively low in-app purchases or freemium shit. It&rsquo;s a losing situation for them.</p></blockquote><p><a href=https://willfaught.com/2017/10/31/super-mario-runs-200-million-downloads-didnt-result-in-acceptable-profit-for-nintendo/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-10-31:/2017/10/31/super-mario-runs-200-million-downloads-didnt-result-in-acceptable-profit-for-nintendo/</guid><link>https://www.theverge.com/2017/10/31/16580976/super-mario-run-nintendo-downloads-profit</link><atom:link href="https://www.theverge.com/2017/10/31/16580976/super-mario-run-nintendo-downloads-profit" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 31 Oct 2017 12:41:53 -0700</pubDate><title>“Super Mario Run’s 200 Million Downloads Didn’t Result In ‘Acceptable Profit’ For Nintendo”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2017-10-27:/2017/10/27/the-icon-journey/</guid><link>https://code.visualstudio.com/blogs/2017/10/24/theicon</link><atom:link href="https://code.visualstudio.com/blogs/2017/10/24/theicon" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 27 Oct 2017 21:58:14 -0700</pubDate><title>The Icon Journey</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Sweet.</p><p><a href=https://willfaught.com/2017/09/26/golang-interfaces-with-one-method-can-now-be-on-one-line/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-09-26:/2017/09/26/golang-interfaces-with-one-method-can-now-be-on-one-line/</guid><link>https://go-review.googlesource.com/#/c/go/+/66130/</link><atom:link href="https://go-review.googlesource.com/#/c/go/+/66130/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 Sep 2017 21:56:55 -0700</pubDate><title>Golang Interfaces With One Method Can Now Be On One Line</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>Sniff</em>. I&rsquo;m just so proud.</p><p><a href=https://willfaught.com/2017/09/10/my-first-golang-contribution/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-09-10:/2017/09/10/my-first-golang-contribution/</guid><link>https://go-review.googlesource.com/#/c/go/+/62671/</link><atom:link href="https://go-review.googlesource.com/#/c/go/+/62671/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 10 Sep 2017 18:55:39 -0700</pubDate><title>My First Golang Contribution</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Half-Life 3, gaming&rsquo;s greatest unicorn, may finally be with us—albeit in text form. Marc Laidlaw, the now retired lead writer of the Half-Life series, has published what appears to be a summary of the plot of Half-Life 3, or Half-Life 2: Episode 3, entitled &ldquo;Epistle 3.&rdquo; This pretty much clinches it for me that it isn&rsquo;t being worked on. Thanks to Mark Laidlaw for giving us fans some kind of closure.</p></blockquote><p><a href=https://willfaught.com/2017/08/27/potential-half-life-3-plot-outed-by-series-writer-marc-laidlaw/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-08-27:/2017/08/27/potential-half-life-3-plot-outed-by-series-writer-marc-laidlaw/</guid><link>https://arstechnica.com/?p=1153463</link><atom:link href="https://arstechnica.com/?p=1153463" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 27 Aug 2017 17:46:05 -0700</pubDate><title>Potential Half-Life 3 Plot Outed By Series Writer Marc Laidlaw</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Rounding in Go is hard to do correctly. That is, given a float64, truncate the fractional part (anything right of the decimal point), and add one to the truncated value if the fractional part was >= 0.5. This problem doesn&rsquo;t come up often, but it does enough that as of this writing, the second hit on Google for golang round is a <a href=https://github.com/golang/go/issues/4594 rel=external>closed issue</a>
from the Go project, which declined to add a Round function to the math package.</p></blockquote><p>Of course it did. Sigh.</p><p><a href=https://willfaught.com/2017/07/13/survey-of-rounding-implementations-in-go/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-07-13:/2017/07/13/survey-of-rounding-implementations-in-go/</guid><link>https://www.cockroachlabs.com/blog/rounding-implementations-in-go/</link><atom:link href="https://www.cockroachlabs.com/blog/rounding-implementations-in-go/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 13 Jul 2017 16:58:11 -0700</pubDate><title>Survey Of Rounding Implementations In Go</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The U.S. uses its own own standard paper sizes: letter, legal, tabloid, and so on. Europe uses an ingenious system:</p><blockquote><p>The base A0 size of paper is defined as having an area of 1 m<sup>2</sup> and a side ratio of 1 by √2 [&mldr;]</p><p>Successive paper sizes in the series A1, A2, A3, and so forth, are defined by halving the preceding paper size across the larger dimension. This also effectively halves the area of each sheet. The most frequently used paper size is A4 measuring 210 by 297 millimetres (8.27 in × 11.7 in).</p><p>The significant advantage of this system is its scaling: if a sheet with an aspect ratio of √2 is divided into two equal halves parallel to its shortest sides, then the halves will again have an aspect ratio of √2. Folded brochures of any size can be made by using sheets of the next larger size, e.g. A4 sheets are folded to make A5 brochures. The system allows scaling without compromising the aspect ratio from one size to another—as provided by office photocopiers, e.g. enlarging A4 to A3 or reducing A3 to A4. Similarly, two sheets of A4 can be scaled down and fit exactly on 1 sheet without any cutoff or margins. [&mldr;]</p><p>Weights are easy to calculate as well: a standard A4 sheet made from 80 g/m<sup>2</sup> paper weighs 5 g (as it is  1⁄16 of an A0 page, measuring 1 m<sup>2</sup>), allowing one to easily compute the weight—and associated postage rate—by counting the number of sheets used. [&mldr;]</p><p>In addition to the A series, there is a less common B series. The area of B series sheets is the geometric mean of successive A series sheets. So, B1 is between A0 and A1 in size, with an area of 0.707 m<sup>2</sup> (1⁄√2 m<sup>2</sup>). As a result, B0 is 1 metre wide, and other sizes in the B series are a half, a quarter or further fractions of a metre wide. While less common in office use, it is used for a variety of special situations. Many posters use B-series paper or a close approximation, such as 50 cm × 70 cm; B5 is a relatively common choice for books. The B series is also used for envelopes and passports. The B-series is widely used in the printing industry to describe both paper sizes and printing press sizes, including digital presses. B3 paper is used to print two US letter or A4 pages side by side using imposition; four pages would be printed on B2, eight on B1, etc.</p><p>The C series is usually used for envelopes and is defined in ISO 269. The area of C series sheets is the geometric mean of the areas of the A and B series sheets of the same number; for instance, the area of a C4 sheet is the geometric mean of the areas of an A4 sheet and a B4 sheet. This means that C4 is slightly larger than A4, and slightly smaller than B4. The practical usage of this is that a letter written on A4 paper fits inside a C4 envelope, and C4 paper fits inside a B4 envelope.</p></blockquote><p><a href=https://willfaught.com/2017/07/04/ingenious-paper-sizes/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-07-04:/2017/07/04/ingenious-paper-sizes/</guid><link>https://en.wikipedia.org/wiki/Paper_size</link><atom:link href="https://en.wikipedia.org/wiki/Paper_size" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 04 Jul 2017 20:53:21 -0700</pubDate><title>Ingenious Paper Sizes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>From chapter 59 of <em>Endymion</em> by Dan Simmons:</p><blockquote><p>I once said to you that you were reading this for the wrong reason. What I should have said was that I was writing this for the wrong reason.</p><p>I have filled these seamless days and nights and smooth pages of microvellum with memories of Aenea, of Aenea as a child, with not one word of her life as the messiah whom you must know and perhaps whom you mistakenly worship. But I have not written these pages for you, I discover, nor have I written them for myself. I have brought Aenea the child alive in my writing because I want Aenea the woman to be alive—despite logic, despite fact, despite all loss of hope.</p><p>Each morning—each self-programmed brightening of the lights, I should say—I awaken in this three-by-six meter Schrodinger cat box and find myself amazed to be alive. There has been no scent of bitter almonds in the night.</p><p>Each morning I fight despair and terror by writing these memories on my text slate, stacking the microvellum pages as they accumulate. But the recycler in this little world is limited; it can produce only a dozen or so pages at a time. So as I finish each dozen or so pages of memory, I feed the oldest pages into the recycler to have them come out fresh and empty so as to have new pages upon which to write. It is the snake swallowing its own tail. It is insanity. Or the absolute essence of sanity.</p><p>It is possible that the chip in the text slate has the full memory of what I have written here…what I shall write in the coming days if fate grants me those days…but the truth is, I do not really care. Only the dozen pages of microvellum are of interest to me each day—pristine, empty pages in the morning, crowded, ink-splashed pages filled with my small and spidery script each evening.</p><p>Aenea comes alive for me then.</p></blockquote><p>I love the &ldquo;Aenea comes alive for me then&rdquo; part. So great.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-07-01:/2017/07/01/endymion/</guid><link>https://willfaught.com/2017/07/01/endymion/</link><atom:link href="https://willfaught.com/2017/07/01/endymion/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 01 Jul 2017 23:57:03 -0700</pubDate><title>Endymion</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>By popular request, ./&mldr; no longer matches packages in vendor directories in tools accepting package names, such as go test. To match vendor directories, write ./vendor/&mldr;. Finally! This removes the need for any kind of vendor-aware Makefile. I was worried when the suggestion of adding a -vendor flag was rejected.</p></blockquote><p><a href=https://willfaught.com/2017/06/22/go-1.9-doesnt-match-vendor-packages-with-path-wildcards/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-06-22:/2017/06/22/go-1.9-doesnt-match-vendor-packages-with-path-wildcards/</guid><link>https://tip.golang.org/doc/go1.9</link><atom:link href="https://tip.golang.org/doc/go1.9" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 22 Jun 2017 03:12:29 -0700</pubDate><title>Go 1.9 Doesn’t Match Vendor Packages With Path Wildcards</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My little suggestion:</p><blockquote><p>Viewing documentation on struct fields is now supported with go doc struct.field.</p></blockquote><p><a href=https://willfaught.com/2017/06/22/go-1.9-release-notes/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-06-22:/2017/06/22/go-1.9-release-notes/</guid><link>https://tip.golang.org/doc/go1.9</link><atom:link href="https://tip.golang.org/doc/go1.9" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 22 Jun 2017 03:07:56 -0700</pubDate><title>Go 1.9 Release Notes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Chris Lattner:</p><blockquote><p>Turns out that Tesla isn&rsquo;t a good fit for me after all. I&rsquo;m interested to hear about interesting roles for a seasoned engineering leader!</p></blockquote><p>Him and everyone else. It&rsquo;s a shame he gave up such a great job.</p><p><a href=https://willfaught.com/2017/06/21/swift-creator-chris-lattner-leaves-tesla-after-only-six-months-in-the-job/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-06-21:/2017/06/21/swift-creator-chris-lattner-leaves-tesla-after-only-six-months-in-the-job/</guid><link>https://www.macrumors.com/2017/06/21/swift-creator-chris-lattner-quits-tesla/</link><atom:link href="https://www.macrumors.com/2017/06/21/swift-creator-chris-lattner-quits-tesla/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 21 Jun 2017 07:54:12 -0700</pubDate><title>“Swift Creator Chris Lattner Leaves Tesla After Only Six Months In The Job”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Scott Adams:</p><blockquote><p>That isn&rsquo;t necessarily bad news. The Republic form of government doesn&rsquo;t make sense in the modern world anyway. We already evolved into a form of direct democracy via social media and polling. Our politicians can&rsquo;t risk going against a big majority – even for noble reasons – because social media will organize to drive that person out of office over the issue. In effect, we are already a direct democracy. The Republic is already history, except in a technical sense.</p></blockquote><p>I hadn&rsquo;t really thought of it this way, but I agree. Politicians&rsquo; desire to stay in office, combined with the wide and prompt dissemination of information, effectively makes the U.S. government a direct democracy. It&rsquo;s supposed to be a representative democracy.</p><p>I see his point about the &ldquo;hope&rdquo; comment (see the full post), but I&rsquo;m not convinced that there&rsquo;s a pattern that could be construed as character assassination. Trump is doing a fine job hanging himself.</p><p><a href=https://willfaught.com/2017/05/22/the-end-of-representative-democracy/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-05-22:/2017/05/22/the-end-of-representative-democracy/</guid><link>https://web.archive.org/web/20170521124427/http://blog.dilbert.com/post/160770453201/the-slow-motion-assassination-of-president-trump</link><atom:link href="https://web.archive.org/web/20170521124427/http://blog.dilbert.com/post/160770453201/the-slow-motion-assassination-of-president-trump" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 22 May 2017 09:59:04 -0700</pubDate><title>The End Of Representative Democracy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/NSXbb5KZl_I?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Pretty cool footage of cilia moving mucus. I have a cold. 🤧</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-04-24:/2017/04/24/what-you-watch-with-a-cold/</guid><link>https://willfaught.com/2017/04/24/what-you-watch-with-a-cold/</link><atom:link href="https://willfaught.com/2017/04/24/what-you-watch-with-a-cold/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 24 Apr 2017 11:07:22 -0700</pubDate><title>What You Watch With A Cold</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ian Elliot:</p><blockquote><p>JavaScript is the single most important programming language and yet, as it reaches its high point, everyone is complaining about it and there are significant efforts to replace it with something better - Go, Dart, Coffeescript. Even the people who love it seem to misunderstand it because they want to add &ldquo;class&rdquo;. JavaScript doesn&rsquo;t need class! And if you think it does you need to look more carefully at JavaScript.</p></blockquote><p>I&rsquo;d never quite thought of JavaScript in this way. Thought-provoking.</p><p><a href=https://willfaught.com/2017/04/12/javascript-doesnt-need-class/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-04-12:/2017/04/12/javascript-doesnt-need-class/</guid><link>https://www.i-programmer.info/programming/javascript/3354-javascript-doesnt-need-class.html</link><atom:link href="https://www.i-programmer.info/programming/javascript/3354-javascript-doesnt-need-class.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 12 Apr 2017 12:57:19 -0700</pubDate><title>JavaScript Doesn’t Need Class</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ivo Wetzel:</p><blockquote><p>JavaScript Garden is a growing collection of documentation about the most quirky parts of the JavaScript programming language. It gives advice to avoid common mistakes and subtle bugs, as well as performance issues and bad practices, that non-expert JavaScript programmers may encounter on their endeavours into the depths of the language.</p></blockquote><p>Really good resource.</p><p><a href=https://willfaught.com/2017/04/12/javascript-garden/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-04-12:/2017/04/12/javascript-garden/</guid><link>https://bonsaiden.github.io/JavaScript-Garden/</link><atom:link href="https://bonsaiden.github.io/JavaScript-Garden/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 12 Apr 2017 12:27:35 -0700</pubDate><title>JavaScript Garden</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Jeff Walker:</p><blockquote><p>How is JavaScript a minefield? Well, JavaScript has all sorts of pitfalls lurking for the developer. Each pitfall is like a mine in the minefield, silently waiting for you to accidentally step on it. Just like the minefield, JavaScript&rsquo;s mines are hidden in plain sight. Entire books have been written about all the mines present in JavaScript. Maybe I&rsquo;ll get into what some of those are in future blog posts. Now, if you are going to venture into a minefield, you need a way to avoid stepping on a mine. You need either a safe path through the minefield or a detailed map of all the mine locations.</p></blockquote><p>It&rsquo;s interesting how two of his solutions, explicit this parameters and explicit object literal inheritance, are very similar to Golang&rsquo;s method receiver parameters and struct embedding.</p><p><a href=https://willfaught.com/2017/04/10/the-javascript-minefield/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-04-10:/2017/04/10/the-javascript-minefield/</guid><link>https://walkercoderanger.com/blog/2014/02/javascript-minefield/</link><atom:link href="https://walkercoderanger.com/blog/2014/02/javascript-minefield/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 10 Apr 2017 15:02:53 -0700</pubDate><title>The JavaScript Minefield</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>The novice finished aligning two beams and had positioned a nail ready for beating into the wood, but found the hammer was out of reach.</p><p>&ldquo;Would you pass me the hammer, master?&rdquo;</p><p>Master Wq handed the novice a saw.</p><p>At once, the novice was enlightened.</p></blockquote><p>So good.</p><p><a href=https://willfaught.com/2017/04/10/vim-koans/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-04-10:/2017/04/10/vim-koans/</guid><link>https://sanctum.geek.nz/arabesque/vim-koans/</link><atom:link href="https://sanctum.geek.nz/arabesque/vim-koans/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 10 Apr 2017 11:55:47 -0700</pubDate><title>Vim Koans</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>&ldquo;Master,&rdquo; said the novice, &ldquo;what is the nature of long and short options for commands? I thought they were equivalent, but when that developer used -h you said something different than when I said &ndash;help.&rdquo;</p><p>&ldquo;Perspective is everything,&rdquo; answered the Master.</p><p>The novice was puzzled. She decided to experiment and said &ldquo;git -h branch&rdquo;.</p><p>Master Git turned and threw himself off the railing, falling to his death on the rocks below.</p><p>Upon seeing this, the novice was enlightened.</p></blockquote><p>So funny.</p><p><a href=https://willfaught.com/2017/04/10/git-koans/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-04-10:/2017/04/10/git-koans/</guid><link>https://stevelosh.com/blog/2013/04/git-koans/</link><atom:link href="https://stevelosh.com/blog/2013/04/git-koans/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 10 Apr 2017 11:06:55 -0700</pubDate><title>Git Koans</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Most countries which were British colonies still drive on the left hand side of the road including huge land masses such as India, Australia and Southern Africa as well as the Caribbean. Europe generally drives on the right hand side apart from the United Kingdom, Ireland, Malta and Cyprus. Guyana (formerly a British colony) is the only country in South America to drive on the left.</p></blockquote><blockquote><p>The other two thirds of the countries in the world drive on the right including the USA, China and Russia. Canada used to drive on the left but changed to the right to make border crossings with the USA more manageable.</p></blockquote><blockquote><p>The reasons for these distinctions are historical. British horseback riders used to ride on the left hand side of the road, thus keeping their right arm free to offer greetings to passersby or, if needs be, draw their sword. However, in The USA teamsters used to sit on the left hand horse while driving a wagon and therefore keep their right hand free for whipping the other horses. They decided to start driving on the right so that they could see the passing wheels of other wagons and avoid collisions.</p></blockquote><p><a href=https://willfaught.com/2017/04/09/a-guide-to-which-countries-drive-on-the-left/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-04-09:/2017/04/09/a-guide-to-which-countries-drive-on-the-left/</guid><link>https://www.rhinocarhire.com/Car-Hire-Blog/August-2009/Which-Countries-Drive-on-the-Left,--a-Handy-Guide.aspx</link><atom:link href="https://www.rhinocarhire.com/Car-Hire-Blog/August-2009/Which-Countries-Drive-on-the-Left,--a-Handy-Guide.aspx" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 09 Apr 2017 23:55:47 -0700</pubDate><title>A Guide To Which Countries Drive On The Left</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Igor Horst:</p><blockquote><p>I am a big fan of [Language_1] and one of its early adopters, having been disappointed with the utter failures of [Language_0]. I have been an avid contributor to many open source projects such as [Obscure_Project_1], [Obscure_Project_2], and [Obscure_Project_3]. However, after using [Langauge_1] for over 5 years, I have been dealing with [Minor_Technical_Flaws]. At first, I ignored and even tolerated these flaws, but ultimately, I was forced to confront reality. I could not live with these flaws, and since [Language_1] is a mature language, it will be difficult, if not impossible, to actually fix [Minor_Technical_Flaws].</p></blockquote><p>So funny, so true.</p><p><a href=https://willfaught.com/2017/03/16/why-i-left-language-1-for-language-2/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-03-16:/2017/03/16/why-i-left-language-1-for-language-2/</guid><link>https://medium.com/@igorhorst/why-i-left-language-1-for-language-2-1d2fa418cd4c#.7w24d4dst</link><atom:link href="https://medium.com/@igorhorst/why-i-left-language-1-for-language-2-1d2fa418cd4c#.7w24d4dst" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 16 Mar 2017 15:16:51 -0700</pubDate><title>Why I Left Language 1 For Language 2</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://lobste.rs rel=external>Looks cool.</a></p><p><a href=https://willfaught.com/2017/02/21/just-discovered-lobste.rs/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2017-02-21:/2017/02/21/just-discovered-lobste.rs/</guid><link>https://lobste.rs</link><atom:link href="https://lobste.rs" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 21 Feb 2017 20:36:54 -0800</pubDate><title>Just Discovered Lobste.rs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>The requirement of setting a GOPATH has been a major issue for Go users who installed the Go tools for the first time and got the &ldquo;you have to set a GOPATH&rdquo; error in their initial experience with the tools. Explaining the GOPATH is and instructing how to set this env variable were both distracting new users away from using Go. This was especially true for users who are not necessarily developing in Go but using go get to download commands.</p><p>Go 1.8 is introducing a default GOPATH. If you don&rsquo;t set one, the tools will use the default.</p></blockquote><p><a href=https://willfaught.com/2016/12/23/the-default-gopath/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-12-23:/2016/12/23/the-default-gopath/</guid><link>https://rakyll.org/default-gopath/</link><atom:link href="https://rakyll.org/default-gopath/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 23 Dec 2016 15:08:17 -0800</pubDate><title>The Default GOPATH</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Nathaniel J. Smith on the purpose of calloc:</p><blockquote><p>When the operating system hands out memory to a process, it always zeros it out first, because otherwise our process would be able to peek at whatever detritus was left in that memory by the last process to use it, which might include, like, crypto keys, or embarrassing fanfiction. So that&rsquo;s the first way that calloc cheats: when you call malloc to allocate a large buffer, then probably the memory will come from the operating system and already be zeroed, so there&rsquo;s no need to call memset. But you don&rsquo;t know that for sure! Memory allocators are pretty inscrutable. So you have to call memset every time just in case. But calloc lives inside the memory allocator, so it knows whether the memory it&rsquo;s returning is fresh from the operating system, and if it is then it skips calling memset. And this is why calloc has to be built into the standard library, and you can&rsquo;t fake it yourself.</p></blockquote><p>Never knew.</p><p><a href=https://willfaught.com/2016/12/06/why-does-calloc-exist/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-12-06:/2016/12/06/why-does-calloc-exist/</guid><link>https://vorpus.org/blog/why-does-calloc-exist/</link><atom:link href="https://vorpus.org/blog/why-does-calloc-exist/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 06 Dec 2016 23:06:43 -0800</pubDate><title>Why Does Calloc Exist?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I got a laugh learning about the fish shell on its main page.</p><p><a href=https://willfaught.com/2016/11/05/fish-shell/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-11-05:/2016/11/05/fish-shell/</guid><link>https://www.fishshell.com</link><atom:link href="https://www.fishshell.com" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Nov 2016 19:17:16 -0700</pubDate><title>Fish Shell</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Andrew Cunningham, writing for Ars Technica:</p><blockquote><p>But when you dig down to find the root cause of most people&rsquo;s angst, it&rsquo;s less about the new MacBook Pros individually and more about the way Apple has been treating the Mac lineup in general for the last two or three years. Even if you consider the MacBook and MacBook Pros to be solid computers—and they are, in most respects for most users—these refreshes by themselves don&rsquo;t really right the Good Ship Macintosh. The Mac Mini is two years old, the Mac Pro is three years old, and the iMac just missed out on a yearly refresh for the first time since the 2012 models came out. The company is serving its entry-level Mac customers by selling them 2015&rsquo;s laptops virtually unchanged for the same price as it sold them for last year. And Apple being Apple, we never hear about future products before they&rsquo;re ready, which does nothing to ease the minds of longtime Mac customers who are uncertain about the platform&rsquo;s future in a time where iOS is clearly (and rightfully, based on Apple&rsquo;s earnings) the top priority.</p></blockquote><p>Bingo.</p><p><a href=https://willfaught.com/2016/11/02/ars-technica-reviews-the-new-13-inch-macbook-pro/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-11-02:/2016/11/02/ars-technica-reviews-the-new-13-inch-macbook-pro/</guid><link>https://arstechnica.com/apple/2016/11/review-cheapest-2016-macbook-pro-is-good-but-its-missing-all-the-cool-stuff/4/</link><atom:link href="https://arstechnica.com/apple/2016/11/review-cheapest-2016-macbook-pro-is-good-but-its-missing-all-the-cool-stuff/4/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 02 Nov 2016 10:54:44 -0700</pubDate><title>Ars Technica Reviews The New 13-Inch MacBook Pro</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>It took me forever to figure this out, but if you want IDE-like autocomplete in TextMate 2, press Option-Escape.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2016-10-17:/2016/10/17/textmate-2-autocomplete-pop-up-menu/</guid><link>https://willfaught.com/2016/10/17/textmate-2-autocomplete-pop-up-menu/</link><atom:link href="https://willfaught.com/2016/10/17/textmate-2-autocomplete-pop-up-menu/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 17 Oct 2016 01:34:43 -0700</pubDate><title>TextMate 2 Autocomplete Pop-Up Menu</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>HTTP Status Codes</p><p><a href=https://willfaught.com/2016/10/16/458-request-too-sexy/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-10-16:/2016/10/16/458-request-too-sexy/</guid><link>https://cube-drone.com/comics/c/http-status-codes</link><atom:link href="https://cube-drone.com/comics/c/http-status-codes" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 16 Oct 2016 22:18:55 -0700</pubDate><title>458 Request Too Sexy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A really compelling investigation of whether Eden existed and where. There&rsquo;s a really good telling of it all (but with less detail) in a Myth Hunters episode (currently available on Netflix).</p><p><a href=https://willfaught.com/2016/10/16/has-the-garden-of-eden-been-located-at-last/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-10-16:/2016/10/16/has-the-garden-of-eden-been-located-at-last/</guid><link>http://www.ldolphin.org/eden/</link><atom:link href="http://www.ldolphin.org/eden/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 16 Oct 2016 15:53:11 -0700</pubDate><title>Has The Garden Of Eden Been Located At Last?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Apparently compress/bzip2 is the only Golang compression standard library that doesn&amp;rsquo;t have a Writer counterpart for its Reader. Lame.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2016-10-06:/2016/10/06/no-reader-for-bzip2/</guid><link>https://willfaught.com/2016/10/06/no-reader-for-bzip2/</link><atom:link href="https://willfaught.com/2016/10/06/no-reader-for-bzip2/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 06 Oct 2016 23:09:31 -0700</pubDate><title>No Reader For Bzip2</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>TIL that if your server has even &lt;em>one&lt;/em> SQL injection vulnerability, the entire operating system can be compromised. Eye-opening!&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2016-09-07:/2016/09/07/sql-injection-can-compromise-the-os/</guid><link>https://willfaught.com/2016/09/07/sql-injection-can-compromise-the-os/</link><atom:link href="https://willfaught.com/2016/09/07/sql-injection-can-compromise-the-os/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 07 Sep 2016 23:00:35 -0700</pubDate><title>SQL Injection Can Compromise The OS</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Go raised the bar for new language distributions:</p><ul><li>UTF-8 code</li><li>Testing, benchmarking, and profiling built in</li><li>Single command line tool</li><li>Build tool that leaves code directories clean</li><li>Package manager</li><li>Package doc browser</li><li>Standard code style and formatter</li><li>Fast builds</li><li>Language spec with grammar and thorough library documentation</li><li>Uniform, batteries-included standard library</li><li>Concurrency support and automatic parallelism, sync and atomic libs, race detector</li><li>Interfaces, not inheritance</li><li>Vendoring support</li><li>Cross compilation</li><li>Static linking only for simple deployments</li><li>Tabs, not spaces</li><li>No semicolon line terminators</li><li>Trailing commas in lists to minimize diffs</li><li>Static types</li><li>Default values for uninitialized variables</li><li>Built-in comparisons and hashing</li><li>Safety (e.g. bounds checking)</li><li>Managed memory (uses GC, but could use ARC)</li><li>Simple encapsulation model (package level only)</li><li>Use of lower-vs-uppercase for meaning (exports in this case)</li><li>Simple selective build inclusion with tags and file name suffixes</li><li>Built-in code generation</li><li>Packages buildable without make files, just code</li><li>&ldquo;Panic&rdquo; program crashes for programmer errors</li><li>No unused local variables or imports</li><li>No build warnings or other output noise</li><li>Qualified imports only (idiomatically)</li></ul><p>If it doesn&rsquo;t do these, it&rsquo;s already outmoded. Looking at you, Swift.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-08-17:/2016/08/17/go-raised-the-bar/</guid><link>https://willfaught.com/2016/08/17/go-raised-the-bar/</link><atom:link href="https://willfaught.com/2016/08/17/go-raised-the-bar/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 17 Aug 2016 19:05:53 -0700</pubDate><title>Go Raised The Bar</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Cluster schedulers promise us ease of deployment with ultimate scalability. We designed an ambitious challenge to test these promises: schedule one million containers. We call this the Million Container Challenge (C1M).</p><p>HashiCorp prides itself on creating technically excellent software, and the C1M is a test to showcase this. We tested Nomad against the C1M to ensure that we meet the needs of our users at any scale.</p><p>A cluster of five Nomad servers scheduled one million containers in less than five minutes, a rate of 3,750 containers per second. Details and observations of this benchmark are explained below.</p></blockquote><p>Sounds really impressive.</p><p><a href=https://willfaught.com/2016/08/17/million-container-challenge/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-08-17:/2016/08/17/million-container-challenge/</guid><link>https://www.hashicorp.com/c1m.html</link><atom:link href="https://www.hashicorp.com/c1m.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 17 Aug 2016 17:02:42 -0700</pubDate><title>Million Container Challenge</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.</p></blockquote><p>So funny.</p><p><a href=https://willfaught.com/2016/08/17/fizzbuzzenterpriseedition/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-08-17:/2016/08/17/fizzbuzzenterpriseedition/</guid><link>https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition</link><atom:link href="https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 17 Aug 2016 12:47:53 -0700</pubDate><title>FizzBuzzEnterpriseEdition</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>&ldquo;Diversity thinkers&rdquo;? Who comes up with that terminology?</p><p>The pipeline <em>is</em> a valid argument because <a href=https://www.npr.org/sections/money/2014/10/21/357629765/when-women-stopped-coding rel=external>that&rsquo;s <em>exactly</em> what&rsquo;s happening</a>
.</p><p>Anyone who disagrees ought to first take a look in the mirror: have you ever bought your kid a gender-specific toy? A doll for a girl? An action figure for a boy? Because if so, that&rsquo;s the problem right there. The problem is you. The problem is social. The problem is parents holding their girls back by only giving them &ldquo;girly&rdquo; things.</p><p><a href=https://willfaught.com/2016/08/13/why-some-diversity-thinkers-arent-buying-tech-industrys-pipeline-excuses/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-08-13:/2016/08/13/why-some-diversity-thinkers-arent-buying-tech-industrys-pipeline-excuses/</guid><link>https://www.npr.org/sections/alltechconsidered/2016/07/19/486511816/why-some-diversity-thinkers-arent-buying-the-tech-industrys-excuses</link><atom:link href="https://www.npr.org/sections/alltechconsidered/2016/07/19/486511816/why-some-diversity-thinkers-arent-buying-the-tech-industrys-excuses" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 13 Aug 2016 00:45:39 -0700</pubDate><title>Why Some Diversity Thinkers Aren’t Buying Tech Industry’s ‘Pipeline’ Excuses</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Great bird&rsquo;s-eye view of politics from a few decades ago through to the presidential election after this coming one. The Republican Party needs to get its shit together.</p><p><a href=https://willfaught.com/2016/08/12/the-republicans-waged-a-3-decade-war-on-government.-they-got-trump./>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-08-12:/2016/08/12/the-republicans-waged-a-3-decade-war-on-government.-they-got-trump./</guid><link>https://www.vox.com/2016/7/18/12210500/diagnosed-dysfunction-republican-party</link><atom:link href="https://www.vox.com/2016/7/18/12210500/diagnosed-dysfunction-republican-party" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 12 Aug 2016 17:19:41 -0700</pubDate><title>The Republicans Waged A 3-Decade War On Government. They Got Trump.</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I can&rsquo;t decide who comes out of this looking worse: Mayer, who did nothing substantial, or the board that paid her a bonus for it.</p><p><a href=https://willfaught.com/2016/08/01/ceo-marissa-mayer-treated-yahoo-like-a-think-tank-not-a-sinking-ship/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-08-01:/2016/08/01/ceo-marissa-mayer-treated-yahoo-like-a-think-tank-not-a-sinking-ship/</guid><link>https://www.npr.org/sections/alltechconsidered/2016/08/01/488246171/ceo-marissa-mayer-treated-yahoo-like-a-think-tank-not-a-sinking-ship</link><atom:link href="https://www.npr.org/sections/alltechconsidered/2016/08/01/488246171/ceo-marissa-mayer-treated-yahoo-like-a-think-tank-not-a-sinking-ship" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 01 Aug 2016 21:14:13 -0700</pubDate><title>CEO Marissa Mayer Treated Yahoo Like A Think Tank, Not A Sinking Ship</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Aphyr on Redis correctness:</p><blockquote><p>So you&rsquo;re running a distributed Redis install, and have realized that the design of Redis Sentinel (or, for that matter, any other failover system on top of an asynchronously replicated primary-secondary design) means you can lose a lot of data when a partition occurs. What can you do?</p><p>From an operations perspective, I recommend you try to understand the Sentinel consensus algorithm. I don&rsquo;t, and I&rsquo;ve read it a dozen times.</p></blockquote><p>LOL.</p><p><a href=https://willfaught.com/2016/07/13/aphyr-tests-redis-withxa0jepsen/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-07-13:/2016/07/13/aphyr-tests-redis-withxa0jepsen/</guid><link>https://aphyr.com/posts/283-call-me-maybe-redis</link><atom:link href="https://aphyr.com/posts/283-call-me-maybe-redis" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 13 Jul 2016 23:54:14 -0700</pubDate><title>Aphyr Tests Redis Withxa0Jepsen</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Dan Moren, writing for Six Colors:</p><blockquote><p>Apple has, for a while now, offered two separate additional security measures to protect your Macs, iOS devices, and iCloud account, but thanks to some inexpert nomenclature, it can be a little difficult to tell them apart.</p></blockquote><p>I had no idea Apple added this. It&rsquo;s easy to switch.</p><p><a href=https://willfaught.com/2016/07/12/switching-to-apples-two-factor-authentication/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-07-12:/2016/07/12/switching-to-apples-two-factor-authentication/</guid><link>https://sixcolors.com/post/2016/07/doing-the-two-step-switching-to-apples-two-factor-authentication/</link><atom:link href="https://sixcolors.com/post/2016/07/doing-the-two-step-switching-to-apples-two-factor-authentication/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 12 Jul 2016 22:11:00 -0700</pubDate><title>Switching To Apple’s Two-Factor Authentication</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My Golang program to check whether Sudoku solutions are correct. It works for any valid Sudoku board size (1x1, 2x2, 4x4, 9x9, 16x16, etc.)</p><p><a href=https://willfaught.com/2016/07/11/check-sudoku-solutions/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-07-11:/2016/07/11/check-sudoku-solutions/</guid><link>https://play.golang.org/p/RBZAIs6lW9</link><atom:link href="https://play.golang.org/p/RBZAIs6lW9" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 11 Jul 2016 19:08:21 -0700</pubDate><title>Check Sudoku Solutions</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Io looks like a nifty language.</p><p><a href=https://willfaught.com/2016/06/24/io-language/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-06-24:/2016/06/24/io-language/</guid><link>https://iolanguage.org</link><atom:link href="https://iolanguage.org" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 24 Jun 2016 13:39:04 -0700</pubDate><title>Io Language</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Alex Osborn, writing for IGN:</p><blockquote><p>When asked how Nintendo NX will stack up against Sony and Microsoft&rsquo;s forthcoming hardware revisions—namely PlayStation 4 NEO and Xbox One Scorpio—Fils-Aime told Bloomberg (via Nibel): &ldquo;For us, it&rsquo;s not about specs, it&rsquo;s not about teraflops, it&rsquo;s not about the horsepower of a particular system. For us, it&rsquo;s about the content.&rdquo;</p></blockquote><p>In other words, not good. I stopped expecting good hardware from Nintendo a long time ago. It&rsquo;s still just as disappointing to hear, however.</p><p>If &ldquo;it&rsquo;s not about teraflops&rdquo;, then I guess they&rsquo;re not going to make VR games, since one of the reasons Microsoft is making the Xbox One Scorpio is because <a href=https://www.ign.com/articles/2016/06/15/e3-2016-xbox-boss-talks-vr-scorpio-specs-and-console-upgrade-cycle rel=external>VR game developers told them they need six teraflops to make good VR games</a>
:</p><blockquote><p>&ldquo;When we went out and talked to VR developers, the capability and the hardware spec that they need to deliver a console-like experience to VR was a requirement of 6 teraflops, which clearly, today&rsquo;s consoles—PlayStation 4 and Xbox One—don&rsquo;t have,&rdquo; he said, suggesting the current PS4 isn&rsquo;t well suited for VR.</p></blockquote><p>Ugh. Nintendo, just stop making consoles and put your games on PlayStation and Xbox already. Fine, make gimmicky controllers if you want to, but you don&rsquo;t need your own console to do that.</p><p><a href=https://willfaught.com/2016/06/24/for-nintendo-its-not-about-specs/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-06-24:/2016/06/24/for-nintendo-its-not-about-specs/</guid><link>https://www.ign.com/articles/2016/06/16/e3-2016-nintendo-boss-on-nx-for-us-its-not-about-specs</link><atom:link href="https://www.ign.com/articles/2016/06/16/e3-2016-nintendo-boss-on-nx-for-us-its-not-about-specs" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 24 Jun 2016 09:27:58 -0700</pubDate><title>For Nintendo, It’s Not About Specs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Bob Nystrom:</p><blockquote><p>What I want to talk about is something I see in a lot of code that drives me up the wall: identifiers that are too damn long.</p><p>Yes, names can be too short. Back when C only required external identifiers to be unique up to the first six characters; auto-complete hadn&rsquo;t been invented; and every keypress had to be made uphill, in the snow, both ways; it was a problem. I&rsquo;m glad we now live in a futuristic utopia where keyboard farts like p, idxcrpm, and x3 are rare.</p><p>But the pendulum has swung too far in the other direction. We shouldn&rsquo;t be Hemingway, but we don&rsquo;t need to be Tennessee Williams either. Very long names also hurt the clarity of the code where they are used. Giant identifiers dwarf the operations you&rsquo;re performing on them, are hard to visually scan, and force extra line breaks which interrupt the flow of the code.</p></blockquote><p>A collection of great advice.</p><p><a href=https://willfaught.com/2016/06/16/long-names-are-long/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-06-16:/2016/06/16/long-names-are-long/</guid><link>https://journal.stuffwithstuff.com/2016/06/16/long-names-are-long/</link><atom:link href="https://journal.stuffwithstuff.com/2016/06/16/long-names-are-long/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 16 Jun 2016 23:58:57 -0700</pubDate><title>Long Names Are Long</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ars reader Bad Monkey in a comment on an Ars post about it being 10 years since Valve announced Half-Life 2 Episode 3 and then left us hanging:</p><blockquote><p>A day at &ldquo;work&rdquo; for a Valve staffer:</p><p>9am: Arrive at work. Socialize in corridors for half an hour with coworkers, then head to the company cafeteria for breakfast. Free trade coffee and greek yogurt. Socialize with coworkers in cafeteria for 45 minutes.</p><p>10:30am: make it to desk. spend half an hour catching up on emails, and sorting HL3 inquiries and Steam customer service complaints to the trash folder. Whew, that was rough, you need a break! Get up to stretch and take a walk, socialize with coworkers at their &ldquo;workstations&rdquo; for half an hour.</p><p>11:30am: time to hit the gym. Head down to the company gym, and spend the next hour alternately browsing Insta-Tweet-Book, idly pedaling on the stationary bike, and socializing with coworkers.</p><p>12:30pm: After a quick rinse and change of clothes, time for lunch! Back to the cafeteria for some nosh and socializing.</p><p>1:30pm: Lunch is over back to the desk. Catching up on more emails. Damn, it&rsquo;s almost 2pm, better get some work done.</p><p>2:00pm - 3:30pm: work on the new implementation of a physics-based headcrab hat for TF2.</p><p>3:30pm: get up for a stretch and walk, spend next 30 minutes socializing with coworkers. Somebody&rsquo;s running up a helluva streak on DOTA2.</p><p>4:00pm: oh would you look at the time! You need to jet before traffic gets too bad on the 405. You get back to your workstation, check the email one last time, making sure to trash all the HL3 related stuff, lock up and head for the door. On the way out, meet up with some coworkers also trying to beat the afternoon rush, and everyone decides to head to the bar. You joke that we can&rsquo;t stay out too late tonight, because we have work tomorrow. Everybody laughs.</p></blockquote><p>So funny it hurts.</p><p><a href=https://willfaught.com/2016/05/31/its-been-over-a-decade-since-valve-first-promised-half-life-2-episode-3/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-05-31:/2016/05/31/its-been-over-a-decade-since-valve-first-promised-half-life-2-episode-3/</guid><link>https://arstechnica.com/gaming/2016/05/celebrating-ten-years-of-half-life-2-episode-3-not-coming-out/</link><atom:link href="https://arstechnica.com/gaming/2016/05/celebrating-ten-years-of-half-life-2-episode-3-not-coming-out/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 31 May 2016 03:32:47 -0700</pubDate><title>It’s Been Over A Decade Since Valve First Promised Half-Life 2: Episode 3</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Jon Purdy:</p><blockquote><p>Furthermore, 1D languages require jumps for flow control, but since any graph can be embedded in three dimensions, languages of three or more dimensions can be written jump-free. An easy way to do this is to allow changing the direction of the instruction pointer rather than its position.</p></blockquote><p>Blew my mind.</p><p><a href=https://willfaught.com/2016/04/20/frighteningly-ambitious-programming-language-ideas/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-04-20:/2016/04/20/frighteningly-ambitious-programming-language-ideas/</guid><link>https://evincarofautumn.blogspot.com/2012/04/frighteningly-ambitious-programming.html</link><atom:link href="https://evincarofautumn.blogspot.com/2012/04/frighteningly-ambitious-programming.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 20 Apr 2016 09:58:23 -0700</pubDate><title>Frighteningly Ambitious Programming Language Ideas</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>On the classification of programming language names:</p><blockquote><p>Artificially shortened names:</p><ul><li>Scheme (from &ldquo;Schemer&rdquo;, following on from &ldquo;Planner&rdquo; and &ldquo;Conniver&rdquo;; shortened to fit in 6 characters because ofa limitation of the ITS operating system)</li><li>Perl (from &ldquo;Pearl&rdquo;, the precious stone; shortened to avoid a clash with &ldquo;some obscure graphics language called Pearl&rdquo;)</li><li>Forth (from &ldquo;Fourth&rdquo;, because its creator considered Forth a &ldquo;fourth-generation language&rdquo;; shortened to fit into 5 characters because of a limitation on the IBM 1130)</li></ul></blockquote><p>The origins of some programming language names are fascinating.</p><p><a href=https://willfaught.com/2016/04/20/programming-language-naming-patterns/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-04-20:/2016/04/20/programming-language-naming-patterns/</guid><link>https://c2.com/cgi/wiki?ProgrammingLanguageNamingPatterns</link><atom:link href="https://c2.com/cgi/wiki?ProgrammingLanguageNamingPatterns" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 20 Apr 2016 00:23:45 -0700</pubDate><title>Programming Language Naming Patterns</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Brett Slatner on the trials and tribulations of being a software engineering individual contributor, tech lead, and manager:</p><blockquote><p>I&rsquo;ve been building software professionally for over 10 years now. I love what I do and I hope to be an old programmer someday. But along the way, I&rsquo;ve encountered many terrible things that have made me hate my job. I wish that someone had given me a roadmap of what to expect earlier in my career, so when some new and unfortunate awfulness occurred that I wouldn&rsquo;t have felt so alone and frustrated.</p></blockquote><p>Some are so simply worded and yet true that they&rsquo;re funny.</p><p><a href=https://willfaught.com/2016/04/11/whats-awful-about-being-a-software-engineer-ic-tech-lead-manager/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-04-11:/2016/04/11/whats-awful-about-being-a-software-engineer-ic-tech-lead-manager/</guid><link>https://www.onebigfluke.com/2016/04/whats-awful-building-software.html?m=1</link><atom:link href="https://www.onebigfluke.com/2016/04/whats-awful-building-software.html?m=1" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 11 Apr 2016 16:09:18 -0700</pubDate><title>What’s Awful About Being A Software Engineer IC, Tech Lead &amp; Manager</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Joanna Stern, writing for the Wall Street Journal:</p><blockquote><p>These days it&rsquo;s hard to decide which is more thrilling: watching a new phone announcement or doing laundry while listening to hold music.</p><p>A slightly better camera! A slightly brighter screen! Rose gold!</p><p>I don&rsquo;t mean to sound ungrateful. How powerful and accessible smartphones have become over the last decade is one of the greatest technological feats ever. But smartphone design has become as predictable as an Adam Sandler movie.</p></blockquote><p>She goes on to detail many exciting developing technologies. Lots of smartphone hardware innovation on the horizon. Pretty exciting stuff.</p><p><a href=https://willfaught.com/2016/04/07/smartphones-are-boring-heres-what-happens-next/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-04-07:/2016/04/07/smartphones-are-boring-heres-what-happens-next/</guid><link>https://apple.news/AuDjSEaWvRDeX9Pwy5qRfug</link><atom:link href="https://apple.news/AuDjSEaWvRDeX9Pwy5qRfug" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 07 Apr 2016 07:39:20 -0700</pubDate><title>Smartphones Are Boring: Here’s What Happens Next</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>It sounds like science fiction but it&rsquo;s true: A killer amoeba living in lakes enters the body through the nose and attacks the brain where it feeds until you die.</p></blockquote><p>Thanks a lot, brain-eating amoebas, now I can&rsquo;t submerge my head anywhere.</p><p>Terrifying.</p><p><a href=https://willfaught.com/2016/04/06/6-die-from-brain-eating-amoeba/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-04-06:/2016/04/06/6-die-from-brain-eating-amoeba/</guid><link>https://www.nbcnews.com/id/21034344/ns/health-infectious_diseases/t/die-brain-eating-amoeba-after-swimming/</link><atom:link href="https://www.nbcnews.com/id/21034344/ns/health-infectious_diseases/t/die-brain-eating-amoeba-after-swimming/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 06 Apr 2016 08:45:08 -0700</pubDate><title>6 Die From Brain-Eating Amoeba</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>WhatsApp:</p><blockquote><p>WhatsApp has always prioritized making your data and communication as secure as possible. And today, we&rsquo;re proud to announce that we&rsquo;ve completed a technological development that makes WhatsApp a leader in protecting your private communication: full end-to-end encryption. From now on when you and your contacts use the latest version of the app, every call you make, and every message, photo, video, file, and voice message you send, is end-to-end encrypted by default, including group chats.</p></blockquote><p>It was inevitable, but I applaud them for doing it all the same.</p><p><a href=https://willfaught.com/2016/04/05/whatsapp-adds-end-to-end-encryption/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-04-05:/2016/04/05/whatsapp-adds-end-to-end-encryption/</guid><link>https://blog.whatsapp.com/10000618/end-to-end-encryption</link><atom:link href="https://blog.whatsapp.com/10000618/end-to-end-encryption" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 05 Apr 2016 18:04:57 -0700</pubDate><title>WhatsApp Adds End-To-End Encryption</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Venture capital is getting nervous. And the flood of new money has become a trickle. As money dries up, startups have to tighten their belts and lower their burn rates in order to live another day. In the process, big hiring plans are shelved.</p><p>The formerly rosy scenario has turned grim. Companies like Twitter fell all over each other to lure tech gurus with blue-sky compensation packages that then allowed these folks to rent or buy whatever they wanted to, and drive up prices in the process. Now Twitter is laying off people.</p></blockquote><p>I hadn&rsquo;t realized there would be widespread repercussions like this from the downturn in tech investment. Perhaps the bubble wasn&rsquo;t in the San Francisco housing market after all, but rather in the tech industry, whose lucrative hiring and relocation packages in turn skyrocketed housing prices.</p><p><a href=https://willfaught.com/2016/04/05/this-will-crush-the-insane-san-francisco-silicon-valley-housing-bubble-wolf-street/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-04-05:/2016/04/05/this-will-crush-the-insane-san-francisco-silicon-valley-housing-bubble-wolf-street/</guid><link>https://wolfstreet.com/2016/02/25/bust-royale-for-insane-san-francisco-silicon-valley-housing-markets/</link><atom:link href="https://wolfstreet.com/2016/02/25/bust-royale-for-insane-san-francisco-silicon-valley-housing-markets/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 05 Apr 2016 10:33:48 -0700</pubDate><title>This Will Crush The Insane San Francisco &amp; Silicon Valley Housing Bubble | Wolf Street</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve been looking forward to this. NewSQL seems like the future. NoSQL has impressive strengths, but managing denormalization is a pain in the ass.</p><blockquote><p>One of the most notable features of CockroachDB is just how simple it is to deploy. CockroachDB is a single binary which requires only the location of one or more storage devices to manage. Starting a multi-node cluster is as simple as starting the first node on its own and then pointing each additional node at the first node or any other node which has already joined the cluster. There are no external dependencies required. No global configuration, no distributed file system, no bundle of resources or install scripts. There are no config files and we&rsquo;ve strictly limited the available command line flags to those which are useful and not just tunable knobs for the sake of having knobs. Securing a cluster is similarly straightforward.</p></blockquote><p>Amen! Music to my ears.</p><p><a href=https://willfaught.com/2016/03/30/cockroachdb-skitters-into-beta/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-30:/2016/03/30/cockroachdb-skitters-into-beta/</guid><link>https://www.cockroachlabs.com/blog/cockroachdb-skitters-beta/</link><atom:link href="https://www.cockroachlabs.com/blog/cockroachdb-skitters-beta/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 30 Mar 2016 11:45:42 -0700</pubDate><title>“CockroachDB Skitters Into Beta”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Andrew Ambrosino hits the nail on the head:</p><blockquote><p>With the release of macOS should come innovation that positions the OS for the next decade of innovation, and it&rsquo;s all about common threads that run through the ecosystem. Specifically, macOS 11 should introduce a common framework for presentation, a brand new model for content, and a common thread for people.</p></blockquote><blockquote><p>[&mldr;]</p></blockquote><blockquote><p>When these three new developments materialize– UIKit, a new Filesystem, and a new model for people– there will be an explosion in next-generation apps across the ecosystem. This ecosystem, now drawn tightly together, will be a collection of four purpose-built operating system variants built on one common, advanced platform, one best described as Apple OS.</p></blockquote><p>I&rsquo;ve been waiting for them to do this for a long time. It&rsquo;s so obvious.</p><p>Great screen shot mockups too.</p><p><a href=https://willfaught.com/2016/03/26/macos-its-time-to-take-the-next-step/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-26:/2016/03/26/macos-its-time-to-take-the-next-step/</guid><link>https://blog.prototypr.io/macos-it-s-time-to-take-the-next-step-ee7871ccd3c7#.my414arfi</link><atom:link href="https://blog.prototypr.io/macos-it-s-time-to-take-the-next-step-ee7871ccd3c7#.my414arfi" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 26 Mar 2016 19:13:40 -0700</pubDate><title>MacOS: It’s Time To Take The Next Step</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Don&rsquo;t name your count variables <code>cnt</code> for obvious reasons.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-21:/2016/03/21/programming-etiquette/</guid><link>https://willfaught.com/2016/03/21/programming-etiquette/</link><atom:link href="https://willfaught.com/2016/03/21/programming-etiquette/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 21 Mar 2016 17:32:35 -0700</pubDate><title>Programming Etiquette</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Mike Posner on the popularity of the remix of his song <em>I Took a Pill in Ibiza</em>:</p><blockquote><p>If they want to party and do all the things I say brought me sadness in my song, with my song as the soundtrack…so be it. Then maybe they can get some ironies going in their life as I have in mine. When did God or whatever divinity orchestrating my life and career become such a prankster?</p></blockquote><p>It&rsquo;s an interesting problem, the audience not hearing or understanding the lyrics. I myself have trouble understanding a lot of lyrics. I&rsquo;m glad he worked so hard to make them more audible.</p><p><a href=https://willfaught.com/2016/03/18/i-took-a-pill-in-ibiza/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-18:/2016/03/18/i-took-a-pill-in-ibiza/</guid><link>https://medium.com/@MikePosner/i-took-a-pill-in-ibiza-2f7de1406c6d#.xi2v8fulw</link><atom:link href="https://medium.com/@MikePosner/i-took-a-pill-in-ibiza-2f7de1406c6d#.xi2v8fulw" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 18 Mar 2016 21:53:03 -0700</pubDate><title>“I Took A Pill In Ibiza”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>There&rsquo;s a fun little Steve Jobs reference at the end:</p><blockquote><p>Meanwhile, no formal research exists—just anecdotal observations—on how the world appears different when wearing a black turtleneck and jeans.</p></blockquote><p><a href=https://willfaught.com/2016/03/18/wearing-a-suit-makes-you-think-differently/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-18:/2016/03/18/wearing-a-suit-makes-you-think-differently/</guid><link>https://www.theatlantic.com/business/archive/2015/04/wearing-a-suit-makes-people-think-differently/391802/</link><atom:link href="https://www.theatlantic.com/business/archive/2015/04/wearing-a-suit-makes-people-think-differently/391802/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 18 Mar 2016 21:36:16 -0700</pubDate><title>Wearing A Suit Makes You Think Differently</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Just automated bootstrapping my OS X programming environment. It sets up:</p><ul><li>Homebrew</li><li>Homebrew cask</li><li>Homebrew and cask packages</li><li>Oh My Zsh</li><li>Maximum Awesome</li></ul><p>That takes care of my terminal, shell, programs, and configurations.</p><p><a href=https://willfaught.com/2016/03/12/bootstrap/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-12:/2016/03/12/bootstrap/</guid><link>https://github.com/willfaught/bootstrap</link><atom:link href="https://github.com/willfaught/bootstrap" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 12 Mar 2016 00:53:40 -0800</pubDate><title>Bootstrap</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Finally.</p><p><a href=https://willfaught.com/2016/03/11/new-github-reactions-for-xa0pull-requests-issues-and-comments/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-11:/2016/03/11/new-github-reactions-for-xa0pull-requests-issues-and-comments/</guid><link>https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments</link><atom:link href="https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 11 Mar 2016 16:49:07 -0800</pubDate><title>New GitHub Reactions For xa0Pull Requests, Issues, And Comments</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Stock options are valuable compensation for startup employees. The high potential upside of these options motivates employees to turn down larger salaries at bigger companies and work at startups. It seems obvious, then, to expect that employees should own their vested options outright, even if they leave the company. Stock options are compensation for work that&rsquo;s already been done. Returning them to the company when you leave would be inequitable.</p><p>Unfortunately, this is exactly what often happens. The industry standard stock option agreement gives employees 90 days after leaving a company to exercise their vested options, or they are returned to the company. Many employees don&rsquo;t have the money to exercise their options within such a short window and lose them.</p></blockquote><p><a href=https://willfaught.com/2016/03/04/fixing-the-inequity-of-startup-equity/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-03-04:/2016/03/04/fixing-the-inequity-of-startup-equity/</guid><link>https://data.triplebyte.com/fixing-the-inequity-of-startup-equity-469793baad1e#.87fry2ooz</link><atom:link href="https://data.triplebyte.com/fixing-the-inequity-of-startup-equity-469793baad1e#.87fry2ooz" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 04 Mar 2016 22:44:24 -0800</pubDate><title>Fixing The Inequity Of Startup Equity</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Great tip from Sandi Metz on how abstractions can worsen code:</p><blockquote><p>When the abstraction is wrong, the fastest way forward is back. This is not retreat, it&rsquo;s advance in a better direction. Do it. You&rsquo;ll improve your own life, and the lives of all who follow.</p></blockquote><p><a href=https://willfaught.com/2016/02/25/the-wrong-abstraction/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-02-25:/2016/02/25/the-wrong-abstraction/</guid><link>https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction</link><atom:link href="https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 25 Feb 2016 21:24:01 -0800</pubDate><title>The Wrong Abstraction</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A beautiful and heartfelt letter from a Civil War soldier to his wife shortly before his death:</p><blockquote><p>But, my dear wife, when I know that with my own joys I lay down nearly all of yours, and replace them in this life with cares and sorrows - when, after having eaten for long years the bitter fruit of orphanage myself, I must offer it as their only sustenance to my dear little children - is it weak or dishonorable, while the banner of my purpose floats calmly and proudly in the breeze, that my unbounded love for you, my darling wife and children, should struggle in fierce, though useless, contest with my love of country?</p></blockquote><p><a href=https://willfaught.com/2016/02/17/sullivan-ballou-letter/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-02-17:/2016/02/17/sullivan-ballou-letter/</guid><link>https://web.archive.org/web/20160310152158/https://www.civilwar.org/education/history/primarysources/sullivan-ballou-letter.html</link><atom:link href="https://web.archive.org/web/20160310152158/https://www.civilwar.org/education/history/primarysources/sullivan-ballou-letter.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 17 Feb 2016 12:53:58 -0800</pubDate><title>Sullivan Ballou Letter</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Firewatch became available for pre-order today. You can get 10% off on Steam.</p><p><a href=https://willfaught.com/2016/02/02/firewatch-available-for-pre-order/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-02-02:/2016/02/02/firewatch-available-for-pre-order/</guid><link>https://store.steampowered.com/app/383870/</link><atom:link href="https://store.steampowered.com/app/383870/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 02 Feb 2016 19:50:08 -0800</pubDate><title>Firewatch Available For Pre-Order</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An interesting idea of exploiting bugs in code minifiers, inspired from compiler exploits.</p><p><a href=https://willfaught.com/2016/01/28/backdooring-your-javascript-using-minifier-bugs/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-01-28:/2016/01/28/backdooring-your-javascript-using-minifier-bugs/</guid><link>https://zyan.scripts.mit.edu/blog/backdooring-js/</link><atom:link href="https://zyan.scripts.mit.edu/blog/backdooring-js/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 28 Jan 2016 11:23:51 -0800</pubDate><title>Backdooring Your JavaScript Using Minifier Bugs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A very nice tutorial for transforming Golang ASTs by Tim Clark.</p><p><a href=https://willfaught.com/2016/01/27/using-the-syntax-tree-in-go/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-01-27:/2016/01/27/using-the-syntax-tree-in-go/</guid><link>https://web.archive.org/web/20161006161444/http://www.lshift.net/blog/2011/04/30/using-the-syntax-tree-in-go/</link><atom:link href="https://web.archive.org/web/20161006161444/http://www.lshift.net/blog/2011/04/30/using-the-syntax-tree-in-go/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 27 Jan 2016 22:08:14 -0800</pubDate><title>Using The Syntax Tree In Go</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/3NCK99mQUxw?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>An extension of the previously linked-to theory that shows there is an undiscovered passage to the King&rsquo;s Chamber in the Great Pyramid.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-01-20:/2016/01/20/khufu-reborn/</guid><link>https://willfaught.com/2016/01/20/khufu-reborn/</link><atom:link href="https://willfaught.com/2016/01/20/khufu-reborn/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 20 Jan 2016 14:50:13 -0800</pubDate><title>Khufu Reborn</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Dave Cheney:</p><blockquote><p>In my mind, of all the possible candidates that Go has removed, it is the removal of threads that will be its most profound contribution.</p><p>This is not to say that Go programs do not use threads, any more than you can say structured programs are not compiled into branch and jump instructions.</p><p>But Go programmers no longer have to concern themselves with thread management, or as Uncle Bob would say, Go programmers are restricted from directly controlling the thread their code runs on.</p></blockquote><p>Really insightful. His points about code formatting and interfaces are spot-on too.</p><p><a href=https://willfaught.com/2016/01/03/the-legacy-of-go/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2016-01-03:/2016/01/03/the-legacy-of-go/</guid><link>https://dave.cheney.net/2015/11/15/the-legacy-of-go</link><atom:link href="https://dave.cheney.net/2015/11/15/the-legacy-of-go" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 03 Jan 2016 19:20:45 -0800</pubDate><title>The Legacy Of Go</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/MFWIPiA-r_o?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Aerial drone footage of San Francisco. Really interesting.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-30:/2015/12/30/san-francisco-aerial-drone-footage/</guid><link>https://willfaught.com/2015/12/30/san-francisco-aerial-drone-footage/</link><atom:link href="https://willfaught.com/2015/12/30/san-francisco-aerial-drone-footage/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 30 Dec 2015 18:45:07 -0800</pubDate><title>San Francisco Aerial Drone Footage</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Hide your wallets! The <em>Northpole Noir</em> Steam winter sale is upon us. I picked up 89 games:</p><ul><li>Aliens versus Predator Classic 2000</li><li>Anachronox</li><li>Angry Video Game Nerd Adventures</li><li>BattleBlock Theater</li><li>Beat Hazard</li><li>Binary Domain</li><li>BloodRayne</li><li>Brutal Legend</li><li>Champion of the Gods</li><li>Costume Quest</li><li>Cthulhu Saves the World & Breath of Death VII Double Pack</li><li>DLC Quest</li><li>Darwinia</li><li>Defy Gravity</li><li>Disco Dodgeball</li><li>Divekick</li><li>DreadOut</li><li>Duke Nukem Kill-A-Ton Collection</li><li>Dustforce</li><li>Five Nights at Freddy&rsquo;s 3</li><li>Five Nights at Freddy&rsquo;s 4</li><li>Flame Over</li><li>Gateways</li><li>Geometry Wars</li><li>Gothic Universe Edition</li><li>Gran Vitreous</li><li>Grow Home</li><li>Gunman Clive</li><li>Gunpoint</li><li>HER STORY</li><li>Hack &rsquo;n&rsquo; Slash</li><li>Half Minute Hero: Super Mega Neo Climax Ultimate Boy</li><li>Heavy Bullets Launch</li><li>Hexcells Infinite</li><li>Hitman: Codename 47</li><li>Iron Fisticle</li><li>Jets&rsquo;n&rsquo;Guns Gold</li><li>Just Get Through</li><li>LISA</li><li>Legacy of Kain Collection</li><li>Legend of Grimrock</li><li>Lost Planet: Extreme Condition</li><li>Luckslinger</li><li>Magicka</li><li>Multiwinia</li><li>Murdered: Soul Suspect</li><li>Nidhogg Store</li><li>One Finger Death Punch</li><li>Our Darker Purpose</li><li>Papo & Yo</li><li>Prelogate</li><li>Quake Live</li><li>REVOLVER360 RE:ACTOR</li><li>Really Big Sky</li><li>Red Orchestra</li><li>Replay - VHS is not dead</li><li>Retro City Rampage</li><li>Risen</li><li>Rock Boshers DX: Director&rsquo;s Cut</li><li>STARWHAL</li><li>Sanctum 2</li><li>Serious Sam 3 BFE</li><li>Serious Sam Double D</li><li>Serious Sam Gold Pack</li><li>Shadow Man</li><li>Shank</li><li>Shank 2</li><li>Shatter</li><li>Shower With Your Dad Simulator 2015</li><li>Sid Meier&rsquo;s Pirates!</li><li>Skullgirls</li><li>SpaceChem</li><li>Stacking</li><li>Startopia</li><li>Stronghold HD</li><li>Super Amazing Wagon Adventure</li><li>Surgeon Simulator</li><li>Survivalist</li><li>Teleglitch: Base Game</li><li>The Bridge</li><li>Toki Tori</li><li>Total Annihilation</li><li>Tron 2.0</li><li>Unreal II: The Awakening</li><li>Unreal Tournament 2004</li><li>Uplink</li><li>Wargame: European Escalation</li><li>Waves</li><li>Yargis - Space Melee Deluxe Edition</li></ul><p>All but one of them were under $4. Many were under $3, $2, and $1. Total cost: $213.57.</p><p>I have a problem.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-30:/2015/12/30/northpole-noir/</guid><link>https://willfaught.com/2015/12/30/northpole-noir/</link><atom:link href="https://willfaught.com/2015/12/30/northpole-noir/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 30 Dec 2015 17:01:22 -0800</pubDate><title>Northpole Noir</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Pretty funny spoof with the artists that made the theme song.</p><p><a href=https://willfaught.com/2015/12/30/where-the-f-is-carmen-sandiego/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-30:/2015/12/30/where-the-f-is-carmen-sandiego/</guid><link>https://m.youtube.com/watch?v=PYhodCCUyBs</link><atom:link href="https://m.youtube.com/watch?v=PYhodCCUyBs" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 30 Dec 2015 01:45:59 -0800</pubDate><title>Where The F*** Is Carmen Sandiego</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Zoe Williams, writing for The Guardian:</p><blockquote><p>By Attack of the Clones, three years later in 2002, the Jedi have a kind of UN blue helmets mandate – &ldquo;You must realise there aren&rsquo;t enough Jedi to protect the Republic. We are keepers of the peace, not soldiers,&rdquo; says Mace Windu, apropos some urgent battle or other. Now we&rsquo;re in a postmodern, post-heroism landscape, where good and evil still exist, but good is on the clock and evil has all day.</p><p>It was noted in 1977 that A New Hope, both in its tone and in its reception, represented a kind of wish-fulfilment after Vietnam, the rebuilding of shared moral absolutes after a visceral pasting. Two decades on, a sad adaptation to a new reality had taken place, where the living incarnation of all that is noble – the Jedi – are critically limited by the rather limp and indecisive democracy that governs them. This is inevitable, if the highest beings are aristocrats but the highest stated value is democracy. The ideas that all citizens share the dignity of being born equal, and the best among them are more equal than the others, are simply incompatible. This explains why the goodies are suddenly so complicated while the baddies&rsquo; motivation is intact and as strong as ever.</p></blockquote><p>Some really interesting insights into the pre-Empire Republic. I liked the UN analogy.</p><p><a href=https://willfaught.com/2015/12/23/why-star-wars-is-a-political-force-to-be-reckoned-with/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-23:/2015/12/23/why-star-wars-is-a-political-force-to-be-reckoned-with/</guid><link>https://www.theguardian.com/film/2015/dec/17/why-star-wars-is-a-political-force-to-be-reckoned-with</link><atom:link href="https://www.theguardian.com/film/2015/dec/17/why-star-wars-is-a-political-force-to-be-reckoned-with" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 23 Dec 2015 17:00:23 -0800</pubDate><title>Why Star Wars Is A Political Force To Be Reckoned With</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Robbie Gonzales, writing for io9:</p><blockquote><p>The human palate is arguably the weakest of the five traditional senses. This raises an important question regarding wine tasting: is it bullshit, or is it complete and utter bullshit?</p><p>There are no two ways about it: the bullshit is strong with wine. Wine tasting. Wine rating. Wine reviews. Wine descriptions. They&rsquo;re all related. And they&rsquo;re all egregious offenders, from a bullshit standpoint.</p></blockquote><p>Even more information about the fallacies of wine tasting and judgment. It&rsquo;s interesting that amateurs are less happy with expensive wines. Works for me!</p><p><a href=https://willfaught.com/2015/12/20/wine-tasting-is-bullshit.-heres-why./>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-20:/2015/12/20/wine-tasting-is-bullshit.-heres-why./</guid><link>https://io9.gizmodo.com/wine-tasting-is-bullshit-heres-why-496098276</link><atom:link href="https://io9.gizmodo.com/wine-tasting-is-bullshit-heres-why-496098276" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 20 Dec 2015 19:24:25 -0800</pubDate><title>Wine Tasting Is Bullshit. Here’s Why.</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Incredible that this isn&rsquo;t a joke.</p><p><a href=https://willfaught.com/2015/12/20/more-crap-for-christmas/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-20:/2015/12/20/more-crap-for-christmas/</guid><link>https://web.archive.org/web/20151222092641/http://nightflight.com/more-crap-for-christmas-the-catalan-tradition-of-the-crapping-caganer-in-the-santa-hat/</link><atom:link href="https://web.archive.org/web/20151222092641/http://nightflight.com/more-crap-for-christmas-the-catalan-tradition-of-the-crapping-caganer-in-the-santa-hat/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 20 Dec 2015 15:09:23 -0800</pubDate><title>More Crap For Christmas</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Toasty.</p><p><a href=https://willfaught.com/2015/12/20/darth-vader-yule-log-five-hours/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-20:/2015/12/20/darth-vader-yule-log-five-hours/</guid><link>https://www.youtube.com/watch?v=PVJzibVS2YM</link><atom:link href="https://www.youtube.com/watch?v=PVJzibVS2YM" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 20 Dec 2015 14:57:15 -0800</pubDate><title>Darth Vader Yule Log Five Hours</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Philip Elmer-DeWitt writing for Fortune:</p><blockquote><p>What they couldn&rsquo;t foresee was whether Apple&rsquo;s customers would see the benefits to the buyer. Piper Jaffray&rsquo;s Gene Munster, for example, predicted that 15% of new iPhone customers would opt for what is, in effect, a 24-month lease.</p><p>[&mldr;]</p><p>For 24 relatively low monthly payments—anywhere from $32.41 to $44.91—customers get AppleCare+ phone support/damage insurance (a $11/month value) and the option to trade up to an iPhone 7 (or whatever it&rsquo;s called) a year from now.</p></blockquote><p>It&rsquo;s not so much a lease as a financed purchase. After 24 months, you&rsquo;ve fully paid for the iPhone and the AppleCare+ warranty. If you choose to upgrade after a year, you&rsquo;ve only paid for half of the iPhone, and its value has only dropped by about half, so that&rsquo;s a wash.</p><p>The upshot of the Apple purchase program is that when you upgrade after a year, the AppleCare+ resets and applies for 2 years to the new phone, so you get that extra year of coverage for free. However, you&rsquo;ll only enjoy that extra year when you <em>stop</em> the Apple purchase plan, such that you&rsquo;re no longer paying Apple, but you&rsquo;re still enjoying that extra year of AppleCare+.</p><p><a href=https://willfaught.com/2015/12/15/apples-secret-plan-to-boost-iphone-sales-is-working/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-15:/2015/12/15/apples-secret-plan-to-boost-iphone-sales-is-working/</guid><link>https://fortune.com/2015/12/15/apple-iphone-upgrade-program/</link><atom:link href="https://fortune.com/2015/12/15/apple-iphone-upgrade-program/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 15 Dec 2015 11:10:44 -0800</pubDate><title>Apple’s Secret Plan To Boost IPhone Sales Is Working</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Unsurprisingly, wine tasting is full of shit:</p><blockquote><p>In a sneaky study, Brochet dyed a white wine red and gave it to 54 oenology (wine science) students. The supposedly expert panel overwhelmingly described the beverage like they would a red wine. They were completely fooled.</p><p>The research, later published in the journal Brain and Language, is now widely used to show why wine tasting is total BS. But more than that, the study says something fascinating about how we perceive the world around us: that visual cues can effectively override our senses of taste and smell (which are, of course, pretty much the same thing.)</p></blockquote><p>The takeaway:</p><blockquote><p>Brochet also noted that, in general, descriptions of smell are almost entirely based on what we see.</p><p>&ldquo;The fact that there are no specific terms to describe odors supports the idea of a defective association between odor and language. Odors take the name of the objects that have these odors.&rdquo;</p></blockquote><p>That&rsquo;s really interesting.</p><p><a href=https://willfaught.com/2015/12/15/the-legendary-study-that-embarrassed-wine-experts-across-the-globe/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-15:/2015/12/15/the-legendary-study-that-embarrassed-wine-experts-across-the-globe/</guid><link>https://www.realclearscience.com/blog/2014/08/the_most_infamous_study_on_wine_tasting.html</link><atom:link href="https://www.realclearscience.com/blog/2014/08/the_most_infamous_study_on_wine_tasting.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 15 Dec 2015 02:01:37 -0800</pubDate><title>The Legendary Study That Embarrassed Wine Experts Across The Globe</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Brandur:</p><blockquote><p>If you&rsquo;ve ever run an app on Heroku, you may have come across log messages produced by the Heroku router and wondered about their untraditional formatting [&mldr;]</p><p>This curious format is unofficially known as &ldquo;logfmt&rdquo;, and at Heroku we&rsquo;ve adopted it as a standard to provide some consistency across internal components. [&mldr;]</p><p>At its core, logfmt is just a basic way of displaying key/value pairs in such a way that its output is fairly easily readable by a human or a computer, while at the same time not being absolutely optimal for either.</p></blockquote><p>Seems sensible to me.</p><p><a href=https://willfaught.com/2015/12/14/logfmt/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-14:/2015/12/14/logfmt/</guid><link>https://brandur.org/logfmt</link><atom:link href="https://brandur.org/logfmt" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 14 Dec 2015 01:11:35 -0800</pubDate><title>Logfmt</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Great overview of all the new self-balancing scooters and hoverboards out there. I&rsquo;ve never heard of some of these. The one-wheel designs seem safer to me, like the Airwheel. It&rsquo;s still early days; time will tell.</p><p><a href=https://willfaught.com/2015/12/13/what-are-all-those-weird-new-skateboards-and-scooters-youre-seeing-everywhere/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-13:/2015/12/13/what-are-all-those-weird-new-skateboards-and-scooters-youre-seeing-everywhere/</guid><link>https://gizmodo.com/a-guide-to-the-booming-world-of-souped-up-skateboards-a-1723729805</link><atom:link href="https://gizmodo.com/a-guide-to-the-booming-world-of-souped-up-skateboards-a-1723729805" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 13 Dec 2015 19:27:20 -0800</pubDate><title>What Are All Those Weird New Skateboards And Scooters You’re Seeing Everywhere?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>&ldquo;I&rsquo;m excited to announce that starting tomorrow, you will be able to purchase and play PS2 games on your PS4 via PlayStation Store in the Americas and Europe,&rdquo; SCE Worldwide Studios president Shuhei Yoshida said in a post on PlayStation Blog.</p><p>A total of eight &ldquo;fan favorites&rdquo; will be able for purchase, including:</p><ul><li>Dark Cloud — $14.99</li><li>Grand Theft Auto III — $14.99</li><li>Grand Theft Auto: Vice City — $14.99</li><li>Grand Theft Auto: San Andreas — $14.99</li><li>Rogue Galaxy — $14.99</li><li>The Mark of Kri — $14.99</li><li>Twisted Metal: Black — $9.99</li><li>War of the Monsters — $9.99</li></ul></blockquote><p>I just bought Grand Theft Auto III, Grand Theft Auto: Vice City, and Grand Theft Auto: San Andreas during the Steam autumn sale for about $5, and they&rsquo;re charging $45 here. Nuts.</p><p><a href=https://willfaught.com/2015/12/04/sony-announces-first-batch-of-ps2-games-coming-to-ps4-tomorrow/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-04:/2015/12/04/sony-announces-first-batch-of-ps2-games-coming-to-ps4-tomorrow/</guid><link>https://www.ign.com/articles/2015/12/04/sony-announces-first-batch-of-ps2-games-coming-to-ps4-tomorrow</link><atom:link href="https://www.ign.com/articles/2015/12/04/sony-announces-first-batch-of-ps2-games-coming-to-ps4-tomorrow" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 04 Dec 2015 23:36:25 -0800</pubDate><title>Sony Announces First Batch Of PS2 Games Coming To PS4 Tomorrow</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Since the birth of mobile apps, we&rsquo;ve witnessed an explosion of mobile development tools. Today, many of these tools still require countless hours on the developer&rsquo;s part to implement: creating different accounts, configuring the SDKs, among others. With Fabric, you&rsquo;ll never have to worry about tedious configurations or juggling different accounts. We let you get right into coding and building the next big app. Interesting. I would consider using this if I knew how to make apps.</p></blockquote><p><a href=https://willfaught.com/2015/12/02/fabric-twitters-mobile-development-platform/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-02:/2015/12/02/fabric-twitters-mobile-development-platform/</guid><link>https://get.fabric.io</link><atom:link href="https://get.fabric.io" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 02 Dec 2015 14:11:19 -0800</pubDate><title>Fabric: Twitter’s Mobile Development Platform</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/M6Oxl5dAnR0?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Really good interview of Steve Jobs while he was at NeXT. I didn&rsquo;t know he had such strong views about education; they made sense to me.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-12-01:/2015/12/01/steve-jobs-on-education/</guid><link>https://willfaught.com/2015/12/01/steve-jobs-on-education/</link><atom:link href="https://willfaught.com/2015/12/01/steve-jobs-on-education/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 01 Dec 2015 13:59:48 -0800</pubDate><title>Steve Jobs On Education</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s that time of the year again. Hide your wallets! I picked up:</p><ul><li>AI War: Fleet Command</li><li>Aliens vs Predator</li><li>Aliens: Colonial Marines</li><li>Bleed</li><li>Command and Conquer: Tiberium Wars</li><li>Consortium</li><li>Darksiders</li><li>DeadCore</li><li>Doom 3</li><li>Door Kickers</li><li>Doorways: Prelude</li><li>Duke Nukem 3D and Shadow Warrior</li><li>E.Y.E.: Divine Cybermancy</li><li>Electronic Super Joy</li><li>FEAR 2: Project Origin</li><li>FEAR: Ultimate Shooter Edition</li><li>GTA Collection</li><li>Hard Reset: Extended edition</li><li>Hitman 2: Silent Assassin</li><li>Hotline Miami</li><li>Jedi Knight: Dark Forces II</li><li>Love</li><li>Monaco</li><li>Myst V</li><li>Never Alone</li><li>Neverending Nightmares</li><li>Oniken Steam Store and Retail Key</li><li>Painkiller Hell and Damnation</li><li>Painkiller Overdose</li><li>Painkiller: Black Edition</li><li>Payday: The Heist</li><li>Primordia</li><li>Quake</li><li>Quake 2</li><li>Red Faction: Armageddon</li><li>Saints Row 2</li><li>Sanctum</li><li>Shadow Warrior</li><li>Star Ruler</li><li>Super House of Dead Ninjas</li><li>Supreme Commander</li><li>Supreme Commander: Forged Alliance</li><li>TIS-100</li><li>The Cave</li><li>They Bleed Pixels</li><li>Titan Quest</li><li>Titan Souls</li><li>Tropico 4</li><li>Unreal Gold</li><li>Unreal Tournament: GoTY</li><li>Volgarr The Viking</li><li>Wolfenstein: The New Order</li></ul><p>It looks like I spent a lot, but it was all pretty cheap. Really good savings.</p><p><a href=https://willfaught.com/2015/11/30/steam-exploration-sale/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-11-30:/2015/11/30/steam-exploration-sale/</guid><link>https://store.steampowered.com</link><atom:link href="https://store.steampowered.com" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 30 Nov 2015 23:28:14 -0800</pubDate><title>Steam Exploration Sale</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A free source of web crawler data. Neat!</p><p><a href=https://willfaught.com/2015/11/30/common-crawl/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-11-30:/2015/11/30/common-crawl/</guid><link>https://commoncrawl.org</link><atom:link href="https://commoncrawl.org" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 30 Nov 2015 13:04:56 -0800</pubDate><title>Common Crawl</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Search for &ldquo;a long time ago in a galaxy far, far away&rdquo;.</p><p><a href=https://willfaught.com/2015/11/25/a-cute-star-wars-easter-egg-by-google-search/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-11-25:/2015/11/25/a-cute-star-wars-easter-egg-by-google-search/</guid><link>https://www.google.com/search?q=a%20long%20time%20ago%20in%20a%20galaxy%20far%20far%20away&amp;cad=h</link><atom:link href="https://www.google.com/search?q=a%20long%20time%20ago%20in%20a%20galaxy%20far%20far%20away&amp;cad=h" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Nov 2015 14:18:30 -0800</pubDate><title>A Cute Star Wars Easter Egg By Google Search</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Will Yager on Golang:</p><blockquote><p>I like Go. I use it for a number of things (including this blog, at the time of writing). Go is useful. With that said, Go is not a good language. It&rsquo;s not bad; it&rsquo;s just not good.</p><p>We have to be careful using languages that aren&rsquo;t good, because if we&rsquo;re not careful, we might end up stuck using them for the next 20 years.</p><p>This is a list of my chief complaints about Go. Some of these are mentioned frequently, and some are rarely discussed.</p><p>I&rsquo;ve also included some comparisons to both Rust and Haskell (which I consider to be good languages). This is to show that all the problems listed here have already been solved.</p></blockquote><p>I completely agree with every point. I&rsquo;m pleased yet annoyed that he wrote it before I could.</p><p><a href=https://willfaught.com/2015/11/19/why-go-is-not-good/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-11-19:/2015/11/19/why-go-is-not-good/</guid><link>https://yager.io/programming/go.html</link><atom:link href="https://yager.io/programming/go.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 19 Nov 2015 09:26:57 -0800</pubDate><title>“Why Go Is Not Good”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The Ostrich Pillow is too funny.</p><p><a href=https://willfaught.com/2015/11/11/four-ways-to-nap-at-your-desk/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-11-11:/2015/11/11/four-ways-to-nap-at-your-desk/</guid><link>https://www.bloomberg.com/news/videos/2015-08-20/four-ways-to-nap-at-your-desk</link><atom:link href="https://www.bloomberg.com/news/videos/2015-08-20/four-ways-to-nap-at-your-desk" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 11 Nov 2015 22:51:28 -0800</pubDate><title>Four Ways To Nap At Your Desk</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>So funny!</p><p><a href=https://willfaught.com/2015/11/10/housing-prices-spike-as-tech-employee-takes-stroll-through-neighborhood/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-11-10:/2015/11/10/housing-prices-spike-as-tech-employee-takes-stroll-through-neighborhood/</guid><link>https://www.theonion.com/article/housing-prices-spike-tech-employee-takes-stroll-th-51813</link><atom:link href="https://www.theonion.com/article/housing-prices-spike-tech-employee-takes-stroll-th-51813" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 10 Nov 2015 10:07:48 -0800</pubDate><title>Housing Prices Spike As Tech Employee Takes Stroll Through Neighborhood</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Now those rebase conflict markers make sense.</p><p><a href=https://willfaught.com/2015/10/30/understanding-git-conflict-markers/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-30:/2015/10/30/understanding-git-conflict-markers/</guid><link>https://wincent.com/wiki/Understanding_Git_conflict_markers</link><atom:link href="https://wincent.com/wiki/Understanding_Git_conflict_markers" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 30 Oct 2015 14:25:37 -0700</pubDate><title>Understanding Git Conflict Markers</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An excellent explanation of how Git works internally. Simple and beautiful.</p><p><a href=https://willfaught.com/2015/10/30/git-for-computer-scientists/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-30:/2015/10/30/git-for-computer-scientists/</guid><link>https://eagain.net/articles/git-for-computer-scientists/</link><atom:link href="https://eagain.net/articles/git-for-computer-scientists/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 30 Oct 2015 14:24:45 -0700</pubDate><title>Git For Computer Scientists</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>They&rsquo;re real and they&rsquo;re spectacular.</p><p>— Karl Marx</p></blockquote><p><a href=https://willfaught.com/2015/10/29/definitely-real-quotes/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-29:/2015/10/29/definitely-real-quotes/</guid><link>http://www.definitelyrealquotes.com/?id=7_5</link><atom:link href="http://www.definitelyrealquotes.com/?id=7_5" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 29 Oct 2015 23:00:24 -0700</pubDate><title>Definitely Real Quotes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Jim Scott at blackpawn.com:</p><blockquote><p>Pop Quiz: You have 765,618 lightmaps for a scene and very few of them have power of 2 dimensions, what do you do? If your answer was to rescale them and call CreateTexture 765,618 times please slap yourself. If your answer had anything to do with glTexImage2D, you might want to leave now. What you really want to do is smush them all into a couple larger textures, and this text will show you one way of doing it.</p></blockquote><p>There are a couple pictures of the result, and they&rsquo;re fascinating.</p><p><a href=https://willfaught.com/2015/10/25/packing-lightmaps/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-25:/2015/10/25/packing-lightmaps/</guid><link>https://www.blackpawn.com/texts/lightmaps/default.html</link><atom:link href="https://www.blackpawn.com/texts/lightmaps/default.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 25 Oct 2015 18:34:14 -0700</pubDate><title>Packing Lightmaps</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>South Park doing what South Park does best. I would worry about it losing its edge if they weren&rsquo;t getting sued.</p><p>Also, WTF?</p><blockquote><p>Before being listed on Yelp we had no problem going around the country speaking to elementary school children about the dangers and consequences of masturbation. Now, with our poor reviews on Yelp, people are beginning to question our morals and ethics, like that is so important. Just because I have been arrested three times for public masturbation and each case was pardoned by the Governor, doesn&rsquo;t mean our federal funding and government support had anything to do with it. With the assumptions made by Yelp reviewers, they are causing deadly self-rape addictions in this country to continue and in the end it is Big Masturbation that wins. Such a shame.</p></blockquote><p><a href=https://willfaught.com/2015/10/22/yelp-sues-south-park-for-10-million-over-latest-episode/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-22:/2015/10/22/yelp-sues-south-park-for-10-million-over-latest-episode/</guid><link>https://nbc.com.co/yelp-sues-south-park-for-10-million-over-episode/</link><atom:link href="https://nbc.com.co/yelp-sues-south-park-for-10-million-over-episode/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 22 Oct 2015 01:01:22 -0700</pubDate><title>Yelp Sues South Park For $10 Million Over Latest Episode</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Pretty neat weather report app for the terminal, written in Golang.</p><p><a href=https://willfaught.com/2015/10/17/weather-report-in-golang/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-17:/2015/10/17/weather-report-in-golang/</guid><link>https://github.com/gizak/termui</link><atom:link href="https://github.com/gizak/termui" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Oct 2015 18:56:23 -0700</pubDate><title>Weather Report In Golang</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Matt Asay, writing for InfoWorld on the shift to minimal server operating systems like CoreOS:</p><blockquote><p>Linux vendors, particularly Red Hat, have built their businesses on meeting the needs of operations professionals. Developers, as I wrote recently, have been a secondary concern.</p><p>That strategy worked great while operations ruled, but as developers have increasingly taken control, the ops-first strategy looks increasingly suspect. Indeed, Gartner estimates that 38 percent of total IT spend comes from outside IT today, and will balloon to 50 percent by 2017 as lines of business take more responsibility for their systems.</p><p>In this new developer-centric world, it&rsquo;s worrisome that incumbent Linux distributions have yet to deliver a first-class, modern developer experience. As one industry observer who prefers not to be named told me:</p><p>Red Hat Enterprise Linux is what you create when you ask ops people what they want from an operating system. Ubuntu is what you get when you ask ops what they think their devs want from an OS. CoreOS is what you get when you ask the developers what they want in an OS.</p></blockquote><p>It definitely seems like the way forward.</p><p><a href=https://willfaught.com/2015/10/17/whats-coreos-an-existential-threat-to-linux-vendors/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-17:/2015/10/17/whats-coreos-an-existential-threat-to-linux-vendors/</guid><link>https://www.infoworld.com/article/2692889/open-source-software/coreos-an-existential-threat-to-linux-vendors.html</link><atom:link href="https://www.infoworld.com/article/2692889/open-source-software/coreos-an-existential-threat-to-linux-vendors.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Oct 2015 18:44:32 -0700</pubDate><title>What’s CoreOS? An Existential Threat To Linux Vendors</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>HashiCorp on Consul versus Chef, Puppet, etc.:</p><blockquote><p>It is not uncommon to find people using Chef, Puppet, and other configuration management tools to build service discovery mechanisms. This is usually done by querying global state to construct configuration files on each node during a periodic convergence run.</p></blockquote><blockquote><p>Unfortunately, this approach has a number of pitfalls. The configuration information is static and cannot update any more frequently than convergence runs. Generally this is on the interval of many minutes or hours. Additionally, there is no mechanism to incorporate the system state in the configuration: nodes which are unhealthy may receive traffic exacerbating issues further. Using this approach also makes supporting multiple datacenters challenging as a central group of servers must manage all datacenters.</p></blockquote><blockquote><p>Consul is designed specifically as a service discovery tool. As such, it is much more dynamic and responsive to the state of the cluster.</p></blockquote><p>They conclude:</p><blockquote><p>That said, Consul is not a replacement for configuration management tools. These tools are still critical to set up applications, including Consul itself. Static provisioning is best managed by existing tools while dynamic state and discovery is better managed by Consul. The separation of configuration management and cluster management also has a number of advantageous side effects: Chef recipes and Puppet manifests become simpler without global state, periodic runs are no longer required for service or configuration changes, and the infrastructure can become immutable since config management runs require no global state.</p></blockquote><p><a href=https://willfaught.com/2015/10/17/consul-vs.-chef-puppet-etc./>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-17:/2015/10/17/consul-vs.-chef-puppet-etc./</guid><link>https://www.consul.io/intro/vs/chef-puppet.html</link><atom:link href="https://www.consul.io/intro/vs/chef-puppet.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Oct 2015 18:22:50 -0700</pubDate><title>Consul Vs. Chef, Puppet, Etc.</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>HashiCorp on Consul versus ZooKeeper, doozerd, and etcd:</p><blockquote><p>ZooKeeper, doozerd, and etcd are all similar in their architecture. All three have server nodes that require a quorum of nodes to operate (usually a simple majority). They are strongly-consistent and expose various primitives that can be used through client libraries within applications to build complex distributed systems.</p><p>[&mldr;]</p><p>All of these systems have roughly the same semantics when providing key/value storage: reads are strongly consistent and availability is sacrificed for consistency in the face of a network partition. However, the differences become more apparent when these systems are used for advanced cases.</p></blockquote><p>They conclude:</p><blockquote><p>Consul provides first-class support for service discovery, health checking, K/V storage, and multiple datacenters. To support anything more than simple K/V storage, all these other systems require additional tools and libraries to be built on top. By using client nodes, Consul provides a simple API that only requires thin clients. Additionally, the API can be avoided entirely by using configuration files and the DNS interface to have a complete service discovery solution with no development at all.</p></blockquote><p>A pretty compelling story.</p><p><a href=https://willfaught.com/2015/10/17/consul-vs.xa0zookeeper-doozerd-etcd/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-17:/2015/10/17/consul-vs.xa0zookeeper-doozerd-etcd/</guid><link>https://www.consul.io/intro/vs/zookeeper.html</link><atom:link href="https://www.consul.io/intro/vs/zookeeper.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Oct 2015 18:20:08 -0700</pubDate><title>Consul Vs.xa0ZooKeeper, Doozerd, Etcd</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Brilliant.</p><p><a href=https://willfaught.com/2015/10/17/get-the-fuck/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-17:/2015/10/17/get-the-fuck/</guid><link>https://github.com/nvbn/thefuck</link><atom:link href="https://github.com/nvbn/thefuck" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Oct 2015 17:36:42 -0700</pubDate><title>Get The Fuck</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>What&rsquo;s the difference between libevent, libev, and libuv?</p><p><a href=https://stackoverflow.com/questions/9433864/whats-the-difference-between-libev-and-libevent rel=external>Marc Lehmann on Stack Overflow</a>
:</p><blockquote><p>libev was created to improve on some of the architectural decisions in libevent, for example, global variable usage made it hard to use libevent safely in multithreaded environments, watcher structures are big because they combine I/O, time and signal handlers in one, the extra components such as the http and dns servers suffered from bad implementation quality and resultant security issues, and timers were inexact and didn&rsquo;t cope well with time jumps.</p></blockquote><blockquote><p>Libev tried to improve each of these, by not using global variables but using a loop context for all functions, by using small watchers for each event type (an I/O watcher uses 56 bytes on x86_64 compared to 136 for libevent), allowing extra event types such as timers based on wallclock vs. monotonic time, inter-thread interruptions, prepare and check watchers to embed other event loops or to be embedded and so on.</p></blockquote><p><a href=https://nikhilm.github.io/uvbook/introduction.html rel=external>Nikhil Marathe on GitHub</a>
:</p><blockquote><p>The node.js project began in 2009 as a JavaScript environment decoupled from the browser. Using Google&rsquo;s V8 and Marc Lehmann&rsquo;s libev, node.js combined a model of I/O – evented – with a language that was well suited to the style of programming; due to the way it had been shaped by browsers. As node.js grew in popularity, it was important to make it work on Windows, but libev ran only on Unix. The Windows equivalent of kernel event notification mechanisms like kqueue or (e)poll is IOCP. libuv was an abstraction around libev or IOCP depending on the platform, providing users an API based on libev. In the node-v0.9.0 version of libuv libev was removed.</p></blockquote><p>So each one succeeds the previous one. Libuv is the hot stuff today.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-17:/2015/10/17/libevent-vs.-libev-vs.-libuv/</guid><link>https://willfaught.com/2015/10/17/libevent-vs.-libev-vs.-libuv/</link><atom:link href="https://willfaught.com/2015/10/17/libevent-vs.-libev-vs.-libuv/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Oct 2015 17:23:30 -0700</pubDate><title>Libevent Vs. Libev Vs. Libuv</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Thor Spieker, fellow Betable engineer, on his experience at JSConf 2015:</p><blockquote><p>First off, let me start by saying that this was my first conference ever, and also that I am not actually a front-end JavaScript developer. Day to day, I spend my time building back-end micro-services in GO for Betable, an online gambling platform. I only dabble in JavaScript when I need to work on our externally facing API, which is written in Node.js. Needless to say, I was a little intimidated going to an all-JavaScript conference where every single person there was probably a much better JavaScript developer than I currently am.</p></blockquote><p>It sounds like an amazing event.</p><p><a href=https://willfaught.com/2015/10/17/things-i-learned-at-jsconf.eu-2015/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-17:/2015/10/17/things-i-learned-at-jsconf.eu-2015/</guid><link>https://medium.com/@betable/things-i-learned-at-jsconf-eu-2015-cb218fa054fe</link><atom:link href="https://medium.com/@betable/things-i-learned-at-jsconf-eu-2015-cb218fa054fe" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Oct 2015 17:11:50 -0700</pubDate><title>Things I Learned At JSConf.eu 2015</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Just heard about this for the first time.</p><p><a href=https://willfaught.com/2015/10/04/netflix-and-chill/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-04:/2015/10/04/netflix-and-chill/</guid><link>https://knowyourmeme.com/memes/netflix-and-chill</link><atom:link href="https://knowyourmeme.com/memes/netflix-and-chill" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 04 Oct 2015 14:59:18 -0700</pubDate><title>Netflix And Chill</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Great rundown on the options. It&rsquo;s Craigslist all the way for me. I was surprised at how good a deal the Amazon trade-in program is.</p><p><a href=https://willfaught.com/2015/10/04/how-to-get-the-best-resale-price-for-your-iphone-6-6-plus-or-5s/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-10-04:/2015/10/04/how-to-get-the-best-resale-price-for-your-iphone-6-6-plus-or-5s/</guid><link>https://www.macrumors.com/2015/09/02/iphone-6-trade-in-options-2015/</link><atom:link href="https://www.macrumors.com/2015/09/02/iphone-6-trade-in-options-2015/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 04 Oct 2015 00:50:08 -0700</pubDate><title>“How To Get The Best Resale Price For Your IPhone 6, 6 Plus, Or 5S”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Listen up. I know the shit you&rsquo;ve been saying behind my back. You think I&rsquo;m stupid. You think I&rsquo;m immature. You think I&rsquo;m a malformed, pathetic excuse for a font. Well think again, nerdhole, because I&rsquo;m Comic Sans, and I&rsquo;m the best thing to happen to typography since Johannes fucking Gutenberg.</p></blockquote><p>Really funny if you&rsquo;ve heard criticism of Comic Sans before.</p><p><a href=https://willfaught.com/2015/09/25/im-comic-sans-asshole/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-25:/2015/09/25/im-comic-sans-asshole/</guid><link>https://www.mcsweeneys.net/articles/im-comic-sans-asshole</link><atom:link href="https://www.mcsweeneys.net/articles/im-comic-sans-asshole" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 25 Sep 2015 12:07:18 -0700</pubDate><title>I’m Comic Sans, Asshole</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/nutSYGMp6_M?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>If you&rsquo;re stuck in Far Cry 4 trying to discover the location of a sunken truck at the bottom of a river, watch this video to see how to use a glitch to do it (you fly with your wingsuit underground—pretty cool!).</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-20:/2015/09/20/cant-discover-the-sunken-truck-in-far-cry-4/</guid><link>https://willfaught.com/2015/09/20/cant-discover-the-sunken-truck-in-far-cry-4/</link><atom:link href="https://willfaught.com/2015/09/20/cant-discover-the-sunken-truck-in-far-cry-4/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 20 Sep 2015 23:45:18 -0700</pubDate><title>Can’t Discover The Sunken Truck In Far Cry 4</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/yxXIuJJ0yBs?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>If you&rsquo;re stuck in Far Cry 4 trying to get the loot chest in a locked underground bunker called Royal Vault III, watch this video to see how to use a glitch to get through the door.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-20:/2015/09/20/cant-loot-bunker-in-far-cry-4/</guid><link>https://willfaught.com/2015/09/20/cant-loot-bunker-in-far-cry-4/</link><atom:link href="https://willfaught.com/2015/09/20/cant-loot-bunker-in-far-cry-4/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 20 Sep 2015 23:42:11 -0700</pubDate><title>Can’t Loot Bunker In Far Cry 4</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>David Pogue on the shortcomings of the Apple Watch:</p><blockquote><p>On the Watch&rsquo;s weird software layout, as noted earlier, apps aren&rsquo;t anywhere at all. No matter where you start, you can&rsquo;t swipe your way to the Home screen.</p></blockquote><blockquote><p>The only way to find them is to click the Watch&rsquo;s crown.</p></blockquote><blockquote><p>OK, we could probably learn that: Clicking the crown is like clicking the Home button. Clicking it always opens the Home screen.</p></blockquote><blockquote><p>Except that it doesn&rsquo;t. If you&rsquo;re in Glances or Notifications, pressing the crown once takes you back to the watch face; a second press opens the Home screen.</p></blockquote><blockquote><p>Well, we could probably learn that: The first crown-click opens the watch face, and the second crown-click opens the Home screen.
Except that&rsquo;s not always how it works, either.</p></blockquote><blockquote><p>If you&rsquo;re in an app, like Mail, the logic is reversed. This time, the first crown-click opens the Home screen, and the second crown-click opens the watch face!</p></blockquote><blockquote><p>How is anyone supposed to learn that?</p></blockquote><p>This was exactly my problem when I first tried using the Apple Watch. I was turned off because nothing made any sense; the mental model was too complicated and inconsistent.</p><p><a href=https://willfaught.com/2015/09/19/a-humble-proposition-how-to-fix-the-apple-watch/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-19:/2015/09/19/a-humble-proposition-how-to-fix-the-apple-watch/</guid><link>https://www.yahoo.com/tech/a-humble-proposition-how-to-fix-the-apple-watch-129185196924.html</link><atom:link href="https://www.yahoo.com/tech/a-humble-proposition-how-to-fix-the-apple-watch-129185196924.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 19 Sep 2015 12:32:37 -0700</pubDate><title>A Humble Proposition: How To Fix The Apple Watch</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Betable just hired a new engineering VP.</p><p><a href=https://willfaught.com/2015/09/16/im-joining-betable-to-disrupt-gambling/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-16:/2015/09/16/im-joining-betable-to-disrupt-gambling/</guid><link>https://medium.com/@admc/i-m-joining-betable-to-disrupt-gambling-81a51169745d</link><atom:link href="https://medium.com/@admc/i-m-joining-betable-to-disrupt-gambling-81a51169745d" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 16 Sep 2015 09:45:24 -0700</pubDate><title>I’m Joining Betable, To Disrupt Gambling</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ben Croshaw on the problem with walking simulator games:</p><blockquote><p>Video games don&rsquo;t have that very basic necessity - the ability to naturally control the pace of the story. There&rsquo;s only so much the creator can do when ultimately the player is the one in control. If they had total freedom then they might just gazump all the way to the ending and miss boatloads of things that were all carefully placed to in some way pay the story off. That, friends, is where challenge comes in. Challenge is the means by which video game creators naturally structure the experience. Whether it be a fight you need to be good enough to win before you can enter some area or another, or a puzzle that requires careful exploration of the environment and understanding of what needs to go where.</p></blockquote><p><a href=https://willfaught.com/2015/09/15/yahtzee-on-everybodys-gone-to-the-rapture-and-gone-home/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-15:/2015/09/15/yahtzee-on-everybodys-gone-to-the-rapture-and-gone-home/</guid><link>https://web.archive.org/web/20150913152507/https://www.escapistmagazine.com/articles/view/video-games/columns/extra-punctuation/14547-Yahtzee-On-Everybodys-Gone-To-The-Rapture-and-Gone-Home</link><atom:link href="https://web.archive.org/web/20150913152507/https://www.escapistmagazine.com/articles/view/video-games/columns/extra-punctuation/14547-Yahtzee-On-Everybodys-Gone-To-The-Rapture-and-Gone-Home" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 15 Sep 2015 10:45:21 -0700</pubDate><title>Yahtzee On Everybodys Gone To The Rapture And Gone Home</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I never get extended warranties for phones or computers. I figure if there&rsquo;s ever a problem where I need it, then I&rsquo;ll wish I had it, and if it&rsquo;s painful enough, I can get it then, but until then, that&rsquo;s money in the bank. It&rsquo;s been years. Extended warranties are a scam unless you have special circumstances, like you&rsquo;re a klutz.</p><p><a href=https://willfaught.com/2015/09/13/the-great-american-phone-insurance-rip-off/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-13:/2015/09/13/the-great-american-phone-insurance-rip-off/</guid><link>https://www.pcmag.com/article2/0,2817,2425755,00.asp</link><atom:link href="https://www.pcmag.com/article2/0,2817,2425755,00.asp" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 13 Sep 2015 01:43:31 -0700</pubDate><title>The Great American Phone Insurance Rip-Off</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>They sure knew their audience. 😣</p><p><a href=https://willfaught.com/2015/09/13/xbox-one-reveal-2013-highlights/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-13:/2015/09/13/xbox-one-reveal-2013-highlights/</guid><link>https://youtu.be/KbWgUO-Rqcw</link><atom:link href="https://youtu.be/KbWgUO-Rqcw" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 13 Sep 2015 01:19:23 -0700</pubDate><title>Xbox One Reveal 2013 Highlights</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Pretty funny.</p><p><a href=https://willfaught.com/2015/09/05/2-kinds-of-people/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-05:/2015/09/05/2-kinds-of-people/</guid><link>https://2kindsofpeople.tumblr.com/</link><atom:link href="https://2kindsofpeople.tumblr.com/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Sep 2015 15:39:40 -0700</pubDate><title>2 Kinds Of People</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Jeff Dean:</p><blockquote><p>0.5 ns L1 cache reference
5 ns Branch mispredict
7 ns L2 cache reference
25 ns Mutex lock/unlock
100 ns Main memory reference
3,000 ns Compress 1K bytes with Zippy
20,000 ns Send 2K bytes over 1 Gbps network
250,000 ns Read 1 MB sequentially from memory
500,000 ns Round trip within same datacenter
10,000,000 ns Disk seek
20,000,000 ns Read 1 MB sequentially from disk
150,000,000 ns Send packet CA->Netherlands->CA</p></blockquote><p><a href=https://willfaught.com/2015/09/04/numbers-every-software-engineer-should-know/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-04:/2015/09/04/numbers-every-software-engineer-should-know/</guid><link>https://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf</link><atom:link href="https://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 04 Sep 2015 18:58:06 -0700</pubDate><title>Numbers Every Software Engineer Should Know</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>It took me ten minutes and a Google search to figure out how to post a comment for a change in &lt;a href=https://www.gerritcodereview.com rel=external>Gerrit&lt;/a>
.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2015-09-04:/2015/09/04/gerrits-ui-is-awful/</guid><link>https://willfaught.com/2015/09/04/gerrits-ui-is-awful/</link><atom:link href="https://willfaught.com/2015/09/04/gerrits-ui-is-awful/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 04 Sep 2015 18:51:23 -0700</pubDate><title>Gerrit’s UI Is Awful</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Go blog:</p><blockquote><p>Go 1.5&rsquo;s GC ushers in a future where stop-the-world pauses are no longer a barrier to moving to a safe and secure language. It is a future where applications scale effortlessly along with hardware and as hardware becomes more powerful the GC will not be an impediment to better, more scalable software. It&rsquo;s a good place to be for the next decade and beyond.</p></blockquote><p>Really impressive goals. I love the idea of having only one GC &ldquo;knob&rdquo; to turn. Scaling automatically is very smart.</p><p><a href=https://willfaught.com/2015/09/02/go-gc-prioritizing-low-latency-and-simplicity/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-09-02:/2015/09/02/go-gc-prioritizing-low-latency-and-simplicity/</guid><link>https://blog.golang.org/go15gc</link><atom:link href="https://blog.golang.org/go15gc" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 02 Sep 2015 14:25:08 -0700</pubDate><title>Go GC: Prioritizing Low Latency And Simplicity</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>My iPhone just killed the Voice Memos app in the middle of recording. The moment is lost forever. What the fuck, Apple?&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2015-08-30:/2015/08/30/lost-voice-memo/</guid><link>https://willfaught.com/2015/08/30/lost-voice-memo/</link><atom:link href="https://willfaught.com/2015/08/30/lost-voice-memo/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Aug 2015 01:00:00 -0700</pubDate><title>Lost Voice Memo</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Imagine the Wright brothers, after they invented their airplane, filed for a patent claiming &ldquo;a machine for flying.&rdquo; Essentially claiming a machine for what it does rather than how it does it. This is known as &ldquo;functional claiming.&rdquo;</p><p>Under previous Federal Circuit precedent, there was a very strong presumption that would give the Wright brothers the rights to any &ldquo;machine for flying,&rdquo; including things like the rocket or the Space Shuttle. But the Wright brothers only invented one type of machine for flying: why would they get to own things they didn&rsquo;t invent?</p><p>The U.S. Supreme Court, in the early 20th century, saw the danger of these types of &ldquo;functionally&rdquo; defined inventions. As it explained in the seminal 1946 case Halliburton v. Walker:</p><blockquote><p>In this age of technological development there may be many other devices beyond our present information or indeed our imagination which will perform that function and yet fit these claims. And unless frightened from the course of experimentation by broad functional claims like these, inventive genius may evolve many more devices to accomplish the same purpose.</p></blockquote><p>In 1952, in what many commentators believe to be a response to Halliburton, Congress revised the Patent Act to allow functional claiming</p></blockquote><p><em>Face palm.</em> Why am I not surprised.</p><blockquote><p>but did so with an important caveat. That caveat allowed inventors to claim their inventions functionally, yet the scope of the patent rights would be limited to only what the inventor actually structurally described in the patent specification (or its equivalents). The Wright brothers could claim their &ldquo;machine for flying,&rdquo; limited to what they actually described and things that were essentially the same, but they couldn&rsquo;t stop someone from building the Space Shuttle.</p></blockquote><p>Oh good, at least it <em>looked</em> like they were thinking.</p><p><a href=https://willfaught.com/2015/08/22/federal-circuit-strikes-its-own-blow-against-overbroad-software-patents/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-08-22:/2015/08/22/federal-circuit-strikes-its-own-blow-against-overbroad-software-patents/</guid><link>https://www.eff.org/deeplinks/2015/06/federal-circuit-strikes-its-own-blow-against-overbroad-software-patents</link><atom:link href="https://www.eff.org/deeplinks/2015/06/federal-circuit-strikes-its-own-blow-against-overbroad-software-patents" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 22 Aug 2015 16:33:55 -0700</pubDate><title>“Federal Circuit Strikes Its Own Blow Against Overbroad Software Patents”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A game that nobody wants—and nobody should need—to play.</p><p><a href=https://willfaught.com/2015/08/22/board-game/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-08-22:/2015/08/22/board-game/</guid><link>https://xkcd.com/1566/</link><atom:link href="https://xkcd.com/1566/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 22 Aug 2015 15:46:48 -0700</pubDate><title>Board Game</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m on hold with Comcast, waiting for someone to help me. This loud, high-pitched saxophone jazz music is playing in the background, and every 60 seconds they play a loud ad about voting for my home town for some contest. What were these people thinking? Why can&rsquo;t there just be a low beep every minute to let me know I&rsquo;m still connected, and otherwise let me wait in peace and quiet? It&rsquo;s not enough that their customer support is terrible, they also have to subject me to this crap when I want to <em>add</em> more service (and they know this based on my phone input). This is what happens when there&rsquo;s no market competition.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-08-16:/2015/08/16/comcastic-craptastic/</guid><link>https://willfaught.com/2015/08/16/comcastic-craptastic/</link><atom:link href="https://willfaught.com/2015/08/16/comcastic-craptastic/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 16 Aug 2015 17:10:05 -0700</pubDate><title>Comcastic, Craptastic</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A really great list of basic ops and engineering lessons learned the hard way.</p><p><a href=https://willfaught.com/2015/08/15/notes-on-distributed-systems-for-young-bloods/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-08-15:/2015/08/15/notes-on-distributed-systems-for-young-bloods/</guid><link>https://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/</link><atom:link href="https://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 15 Aug 2015 14:55:29 -0700</pubDate><title>Notes On Distributed Systems For Young Bloods</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Looks like the excellent whatisthematrix.com went offline at some point in the past. Such a pity, it was a great collection of The Matrix production and related material.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2015-08-09:/2015/08/09/what-is-the-matrix/</guid><link>https://willfaught.com/2015/08/09/what-is-the-matrix/</link><atom:link href="https://willfaught.com/2015/08/09/what-is-the-matrix/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 09 Aug 2015 23:50:40 -0700</pubDate><title>What Is The Matrix</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>English makes no sense.</p><p><a href=https://willfaught.com/2015/08/06/gallagher-and-the-language/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-08-06:/2015/08/06/gallagher-and-the-language/</guid><link>https://www.youtube.com/watch?v=yDFQXxWIyvQ</link><atom:link href="https://www.youtube.com/watch?v=yDFQXxWIyvQ" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 06 Aug 2015 00:06:41 -0700</pubDate><title>Gallagher And The Language</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Jack Bogle:</p><blockquote><p>When our financial system—essentially our money managers, marketers of investment products and stockbrokers—put up zero percent of the capital and assume zero percent of the risk yet receive fully 80 percent of the return, something has gone terribly wrong in our financial system. As I note in the book, &ldquo;the shift in our system from owners&rsquo; capitalism to managers&rsquo; capitalism has been devastating to investors.&rdquo;</p><p>The principles of sensible savings and investing are time-tested, perhaps even eternal. The way to wealth, it turns out, is to avoid the high-cost, high-turnover, opportunistic marketing modalities that characterize today&rsquo;s financial service system and rely on the magic of compounding returns. While the interests of the business are served by the aphorism &ldquo;Don&rsquo;t just stand there. Do something!&rdquo; the interests of investors are served by an approach that is its diametrical opposite: &ldquo;Don&rsquo;t do something. Just stand there!&rdquo;</p></blockquote><p>Sounds sensible. The entire thing is a great read.</p><p><a href=https://willfaught.com/2015/07/31/jack-bogles-advice-for-a-rocky-market-follow-ben-franklin/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-07-31:/2015/07/31/jack-bogles-advice-for-a-rocky-market-follow-ben-franklin/</guid><link>https://www.cnbc.com/2014/01/31/-advice-for-a-rocky-market-follow-ben-franklin.html</link><atom:link href="https://www.cnbc.com/2014/01/31/-advice-for-a-rocky-market-follow-ben-franklin.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 31 Jul 2015 21:47:42 -0700</pubDate><title>Jack Bogle’s Advice For A Rocky Market: Follow Ben Franklin</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Blake Ross:</p><blockquote><p>Wealthfront loves to paint itself as the anti-Wall Street, but it exploits the same achilles heel as its Manhattan cousins: Many people don&rsquo;t have an intuitive grasp of the magic of compound interest, and so they certainly haven&rsquo;t internalized the tyranny of compound fees.</p><p>Then let us be clear: A 30-year old who invests $100,000 in his retirement with Wealthfront &ldquo;for less than a night at the movies&rdquo; will likely pay the company over $100,000 in fees by his 75th birthday.</p><p>If he sets aside additional money from his salary over that time period — say, $15,000 per year — the fees could come to half a million or more. Still less than a night at the movies, assuming you also had to produce the movie.</p><p>This is all a great deal for Wealthfront. If they hook enough young professionals early, the company gets to invest their money for the rest of their lives, skimming a larger and larger portion off the top as it compounds. Heck, I like this model enough that I consider investing in Wealthfront, Inc. at least twice a year.</p></blockquote><p>Really interesting. I&rsquo;m new to all of this.</p><p><a href=https://willfaught.com/2015/07/25/wealthfront-silicon-valley-tech-at-wall-street-prices/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-07-25:/2015/07/25/wealthfront-silicon-valley-tech-at-wall-street-prices/</guid><link>https://medium.com/@blakeross/wealthfront-silicon-valley-tech-at-wall-street-prices-fdd2e5f54905</link><atom:link href="https://medium.com/@blakeross/wealthfront-silicon-valley-tech-at-wall-street-prices-fdd2e5f54905" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 25 Jul 2015 23:06:32 -0700</pubDate><title>Wealthfront: Silicon Valley Tech At Wall Street Prices</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Adam Nash:</p><blockquote><p>Unlike the many banks and brokerage firms that came before us, Wealthfront refuses to build our business by preying on clients with small accounts. It is why Wealthfront is completely free for investors with less than $10,000 invested and only a 0.25% advisory fee thereafter.</p></blockquote><p><a href=https://willfaught.com/2015/07/19/its-time-to-kill-the-monthly-fee-for-small-accounts/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-07-19:/2015/07/19/its-time-to-kill-the-monthly-fee-for-small-accounts/</guid><link>https://medium.com/@adamnash/it-s-time-to-kill-the-monthly-fee-for-small-accounts-51d37177bfe7</link><atom:link href="https://medium.com/@adamnash/it-s-time-to-kill-the-monthly-fee-for-small-accounts-51d37177bfe7" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 19 Jul 2015 20:42:57 -0700</pubDate><title>It’s Time To Kill The Monthly Fee For Small Accounts</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>He said he expects to see the same sort of back-door dealings that ensued during Chicago&rsquo;s short-lived ban, in effect from 2006 to 2008, when it was repealed. There, chefs reportedly gave away foie gras and charged $20 for the cracker on which it was served. Clever.</p></blockquote><p><a href=https://willfaught.com/2015/07/13/foie-gras-ban-proves-confusing-hard-to-enforce/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-07-13:/2015/07/13/foie-gras-ban-proves-confusing-hard-to-enforce/</guid><link>https://m.sfgate.com/food/article/Foie-gras-ban-proves-confusing-hard-to-enforce-3676731.php</link><atom:link href="https://m.sfgate.com/food/article/Foie-gras-ban-proves-confusing-hard-to-enforce-3676731.php" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 13 Jul 2015 00:29:44 -0700</pubDate><title>Foie Gras Ban Proves Confusing, Hard To Enforce</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Finally!</p><p><a href=https://willfaught.com/2015/07/10/facebook-adds-generics-to-golang/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-07-10:/2015/07/10/facebook-adds-generics-to-golang/</guid><link>https://github.com/facebookgo/generics</link><atom:link href="https://github.com/facebookgo/generics" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 10 Jul 2015 00:19:31 -0700</pubDate><title>Facebook Adds Generics To Golang</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The field of medicine is all screwed up by money.</p><p><a href=https://willfaught.com/2015/07/06/knowing-how-doctors-die-can-change-end-of-life-discussions/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-07-06:/2015/07/06/knowing-how-doctors-die-can-change-end-of-life-discussions/</guid><link>https://www.npr.org/sections/health-shots/2015/07/06/413691959/knowing-how-doctors-die-can-change-end-of-life-discussions?sc=17&amp;f=1001</link><atom:link href="https://www.npr.org/sections/health-shots/2015/07/06/413691959/knowing-how-doctors-die-can-change-end-of-life-discussions?sc=17&amp;f=1001" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 06 Jul 2015 16:22:45 -0700</pubDate><title>Knowing How Doctors Die Can Change End-Of-Life Discussions</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>He meant to say he didn&rsquo;t accept the premise of the question.</p><p><a href=https://willfaught.com/2015/06/24/the-financial-advisor/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-24:/2015/06/24/the-financial-advisor/</guid><link>https://dilbert.com/strip/2014-12-15</link><atom:link href="https://dilbert.com/strip/2014-12-15" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 24 Jun 2015 23:53:17 -0700</pubDate><title>The Financial Advisor</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I never quite understood until recently whether Roth or non-Roth was better for me. This made it a lot clearer.</p><p><a href=https://willfaught.com/2015/06/24/roth-retirement-accounts-are-very-overrated-over-hyped/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-24:/2015/06/24/roth-retirement-accounts-are-very-overrated-over-hyped/</guid><link>https://20somethingfinance.com/roth-retirement-accounts-are-overrated/</link><atom:link href="https://20somethingfinance.com/roth-retirement-accounts-are-overrated/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 24 Jun 2015 22:51:57 -0700</pubDate><title>Roth Retirement Accounts Are Very Overrated &amp; Over-Hyped</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Couldn&rsquo;t happen soon enough.</p><p><a href=https://willfaught.com/2015/06/20/ssd-prices-in-a-free-fall/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-20:/2015/06/20/ssd-prices-in-a-free-fall/</guid><link>https://web.archive.org/web/20150622193917/http://www.networkcomputing.com/storage/ssd-prices-in-a-free-fall/a/d-id/1320958</link><atom:link href="https://web.archive.org/web/20150622193917/http://www.networkcomputing.com/storage/ssd-prices-in-a-free-fall/a/d-id/1320958" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 20 Jun 2015 23:37:41 -0700</pubDate><title>SSD Prices In A Free Fall</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Time to crack 1Password passphrases by number of words in the passphrase:</p><ul><li>3: 2 days, 17 hours</li><li>4: 58 years</li><li>5: 449,528 years</li><li>6: 3.5 billion years</li><li>7: 27 trillion years</li></ul><p>1Password uses <a href=https://en.wikipedia.org/wiki/PBKDF2 rel=external>PBKDF2</a>
to achieve this. They <a href=https://blog.agilebits.com/2011/06/21/toward-better-master-passwords/ rel=external>recommended</a>
four or five words per passphrase in 2013.</p><p><a href=https://willfaught.com/2015/06/14/1password-is-ready-for-john-the-ripper/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-14:/2015/06/14/1password-is-ready-for-john-the-ripper/</guid><link>https://blog.agilebits.com/2012/07/31/1password-is-ready-for-john-the-ripper/</link><atom:link href="https://blog.agilebits.com/2012/07/31/1password-is-ready-for-john-the-ripper/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 14 Jun 2015 16:50:00 -0700</pubDate><title>1Password Is Ready For John The Ripper</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve been making my passwords all wrong. You can find Diceware <a href=https://world.std.com/~reinhold/diceware.html rel=external>here</a>
.</p><p><a href=https://willfaught.com/2015/06/14/toward-better-master-passwords/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-14:/2015/06/14/toward-better-master-passwords/</guid><link>https://blog.agilebits.com/2011/06/21/toward-better-master-passwords/</link><atom:link href="https://blog.agilebits.com/2011/06/21/toward-better-master-passwords/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 14 Jun 2015 16:03:05 -0700</pubDate><title>Toward Better Master Passwords</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The Steam summer sale has begun! Hide your wallets! Just picked up:</p><ul><li>Age of Empires II</li><li>Alan Wake American Nightmare</li><li>Apotheon</li><li>Awesomenauts</li><li>Back to Bed</li><li>Bastion</li><li>Battlefield Bad Company 2 Standard Edition</li><li>Betrayer Steam</li><li>BioShock 2</li><li>Black Mesa</li><li>Botanicula</li><li>Bulletstorm</li><li>Bully: Scholarship Edition</li><li>Child of Light</li><li>Day of Defeat: Source</li><li>Deponia</li><li>Deus Ex: Game of the Year Edition</li><li>Deus Ex: Human Revolution - Director&rsquo;s Cut (ROW)</li><li>Doom 2</li><li>Eldritch</li><li>Five Nights at Freddy&rsquo;s</li><li>Five Nights at Freddy&rsquo;s 2</li><li>FRACT OSC</li><li>Final Doom</li><li>Goat Simulator</li><li>Grim Fandango Remastered</li><li>Guns of Icarus Online</li><li>Half-Life 1: Source</li><li>Hammerwatch</li><li>Hatoful Boyfriend</li><li>Hero Siege</li><li>Hitman Contracts</li><li>Hitman: Blood Money</li><li>Insurgency</li><li>Jazzpunk</li><li>Just Cause</li><li>Just Cause 2</li><li>L.A. Noire</li><li>Legend of Korra</li><li>Luftrausers</li><li>Machinarium</li><li>Mark of the Ninja</li><li>Max Payne</li><li>Max Payne 2: The Fall of Max Payne</li><li>Memoria</li><li>Metal Slug X</li><li>Miasmata</li><li>Mount Your Friends</li><li>Napoleon: Total War</li><li>Not The Robots</li><li>Oddworld Abes Oddysee and Exoddus package</li><li>ORION: Prelude</li><li>PAC-MAN Championship Edition DX+</li><li>Pixel Heroes</li><li>Prototype</li><li>RAGE</li><li>Rainbow Six 3: Gold</li><li>Rainbow Six Vegas</li><li>Rainbow Six Vegas 2</li><li>realMyst Masterpiece Edition</li><li>Red Faction</li><li>Red Faction Guerrilla</li><li>Return to Castle Wolfenstein</li><li>Riven</li><li>Rochard</li><li>Rock of Ages</li><li>Saints Row: The Third</li><li>SEGA Classics: Sonic the Hedgehog</li><li>Serious Sam 2</li><li>Space Run</li><li>Spelunky</li><li>Splinter Cell</li><li>Splintercell: Chaos Theory</li><li>Super Time Force Ultra</li><li>Teslagrad</li><li>The Fall</li><li>The Ship - Complete Pack</li><li>The Witcher: Enhanced Edition</li><li>Tom Clancy&rsquo;s H.A.W.X</li><li>Tomb Raider Collection (ROW)</li><li>Town of Salem</li><li>Transistor</li><li>Tropico 3</li><li>Tropico Reloaded</li><li>URU: CC</li><li>Ultimate Doom</li><li>Waking Mars</li><li>Windosill</li><li>Wolfenstein 3D</li><li>World of Goo</li><li>Worms Armageddon</li></ul><p><a href=https://willfaught.com/2015/06/13/steam-monster-summer-sale/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-13:/2015/06/13/steam-monster-summer-sale/</guid><link>https://store.steampowered.com</link><atom:link href="https://store.steampowered.com" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 13 Jun 2015 21:57:24 -0700</pubDate><title>Steam Monster Summer Sale</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Kyle Orland on the challenges of preserving video games as historic art:</p><blockquote><p>Jason Scott knows what he&rsquo;s talking about when it comes to the preservation of digital software. At the Internet Archive, he&rsquo;s collected thousands of classic games, pieces of software, and bits of digital ephemera. His sole goal is making those things widely available through the magic of browser-based emulation.</p><p>Compared to other types of archaeology, this kind of preservation is still relatively easy for now. While the magnetic and optical disks and ROM cartridges that hold classic games and software will eventually be rendered unusable by time, it&rsquo;s currently pretty simple to copy their digital bits to a form that can be preserved and emulated well into the future.</p><p>But paradoxically, an Atari 2600 cartridge that&rsquo;s nearly 40 years old is much easier to preserve at this point than many games released in the last decade. Thanks to changes in the way games are being distributed, protected, and played in the Internet era, large parts of what will become tomorrow&rsquo;s video game history could be lost forever. If we&rsquo;re not careful, that is.</p></blockquote><p>It&rsquo;s a tough problem. I like the idea of a DMCA exemption for abandoned video games.</p><p><a href=https://willfaught.com/2015/06/02/the-quest-to-save-todays-gaming-history-from-being-lost-forever/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-02:/2015/06/02/the-quest-to-save-todays-gaming-history-from-being-lost-forever/</guid><link>https://arstechnica.com/gaming/2015/06/the-quest-to-save-todays-gaming-history-from-being-lost-forever/#p3</link><atom:link href="https://arstechnica.com/gaming/2015/06/the-quest-to-save-todays-gaming-history-from-being-lost-forever/#p3" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 02 Jun 2015 19:05:29 -0700</pubDate><title>The Quest To Save Today’s Gaming History From Being Lost Forever</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Great list. I&rsquo;d love to see all of these.</p><p><a href=https://willfaught.com/2015/06/02/federico-viticiis-ios-9-wish-list/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-02:/2015/06/02/federico-viticiis-ios-9-wish-list/</guid><link>https://www.macstories.net/stories/ios-9-wishes/</link><atom:link href="https://www.macstories.net/stories/ios-9-wishes/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 02 Jun 2015 07:49:11 -0700</pubDate><title>Federico Viticii’s IOS 9 Wish List</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Neil Hepworth reviewed <em>Ancillary Sword</em> on Amazon:</p><blockquote><p>Downton Abbey…in SPAAAAAACE. No, it really is. The novel is filled with tea, and fine china. There&rsquo;s polite meetings in polite society. There&rsquo;s blushing in abundance at the smallest of social faux pas. There&rsquo;s tears from the young &lsquo;uns when their jobs are just a bit too overwhelming. There&rsquo;s snooty-as-hell top of society landowners with brat children to match. There&rsquo;s tea. There&rsquo;s gossip amongst the servants, and resentment amongst the slaves. There are gardens. And tea. And dressing expectations. And a funeral with a proper and lengthy period of mourning and doing nothing. And because everyone is bored with life, there are accepted and expected trysts galore. Also tea. 95% of the &ldquo;action&rdquo; in the book falls somewhere between &ldquo;a snore&rdquo; and &ldquo;a boring college professor&rsquo;s lecture.&rdquo; There is, to be fair, a bomb. And there is a murder. But everything, and I mean everything, is dealt with such straight faces and such inhuman emotional reactions (and I do understand we&rsquo;re working with ancillaries here) as to make the producers over at the BBC stand up and wildly applause (though quietly and politely, and certainly without smiling, unless it is wryly). And tea.</p></blockquote><p>And:</p><blockquote><p>In summary, all the interesting ideas were taken out (replaced by tea)</p></blockquote><p>Did he mention the tea?</p><p><a href=https://willfaught.com/2015/06/01/ancillary-sword...and-tea/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-01:/2015/06/01/ancillary-sword...and-tea/</guid><link>https://www.amazon.com/gp/aw/cr/0316246654/</link><atom:link href="https://www.amazon.com/gp/aw/cr/0316246654/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 01 Jun 2015 22:03:44 -0700</pubDate><title>Ancillary Sword…And Tea</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I thought the <em>Ancillary Justice</em> cover art looked familiar. Gorgeous work.</p><p><a href=https://willfaught.com/2015/06/01/john-harriss-science-fiction-cover-art/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-06-01:/2015/06/01/john-harriss-science-fiction-cover-art/</guid><link>https://www.google.com/search?q=john+harris+book+cover+art&amp;client=safari&amp;hl=en&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=KS1tVcPSJMvlsAST8YOoCQ&amp;ved=0CAcQ_AUoAQ&amp;biw=375&amp;bih=559</link><atom:link href="https://www.google.com/search?q=john+harris+book+cover+art&amp;client=safari&amp;hl=en&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=KS1tVcPSJMvlsAST8YOoCQ&amp;ved=0CAcQ_AUoAQ&amp;biw=375&amp;bih=559" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 01 Jun 2015 21:16:01 -0700</pubDate><title>John Harris’s Science Fiction Cover Art</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>At Re/Code&rsquo;s &ldquo;Code&rdquo; conference on May 27, CBS CEO Les Moonves acknowledged CBS has held talks with Apple and that they would &ldquo;probably&rdquo; sign a deal to carry the network on Apple&rsquo;s expected streaming service.</p></blockquote><p>Apple must be livid. No one has officially confirmed their rumored new service, and you can be damned sure Apple wanted it to be them. Steve Jobs is rolling in his grave.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-31:/2015/05/31/cbs-spills-the-beans-on-the-new-apple-streaming-service/</guid><link>https://willfaught.com/2015/05/31/cbs-spills-the-beans-on-the-new-apple-streaming-service/</link><atom:link href="https://willfaught.com/2015/05/31/cbs-spills-the-beans-on-the-new-apple-streaming-service/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 31 May 2015 16:49:41 -0700</pubDate><title>CBS Spills The Beans On The New Apple Streaming Service</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>For filibustering—for 13 hours!—the renewal of the NSA&rsquo;s &ldquo;authority&rdquo; to spy on Americans.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-31:/2015/05/31/kudos-to-rand-paul/</guid><link>https://willfaught.com/2015/05/31/kudos-to-rand-paul/</link><atom:link href="https://willfaught.com/2015/05/31/kudos-to-rand-paul/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 31 May 2015 15:41:47 -0700</pubDate><title>Kudos To Rand Paul</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A critique of the Golang language, tools, creators, and community by Tyler Treat:</p><blockquote><p>I&rsquo;m cautiously optimistic about Go&rsquo;s future. I don&rsquo;t consider myself a hater, I consider myself a hopeful. As it continues to gain a critical mass, I&rsquo;m hopeful that the language will continue to improve but fearful of its relentless dogma. Go needs to let go of this attitude of &ldquo;you don&rsquo;t need that&rdquo; or &ldquo;it&rsquo;s too complicated&rdquo; or &ldquo;programmers won&rsquo;t know how to use it.&rdquo; It&rsquo;s toxic. It&rsquo;s not all that different from your users requesting features after you release a product and telling those users they aren&rsquo;t smart enough to use them. It&rsquo;s not on your users, it&rsquo;s on you to make the UX good.</p><p>A language can have considerable depth while still retaining its simplicity. I wish this were the ideal Go embraced, not one of negativity, of pessimism, of &ldquo;no.&rdquo; The question is not how can we protect developers from themselves, it&rsquo;s how can we make them more productive? How can we enable them to solve problems? But just because people are solving problems with Go today does not mean we can&rsquo;t do better. There is always room for improvement. There is never room for complacency.</p></blockquote><p>So many great points and examples. This struck a chord.</p><p><a href=https://willfaught.com/2015/05/26/go-is-unapologetically-flawed-heres-why-we-use-it/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-26:/2015/05/26/go-is-unapologetically-flawed-heres-why-we-use-it/</guid><link>https://bravenewgeek.com/go-is-unapologetically-flawed-heres-why-we-use-it/?utm_source=golangweekly&amp;utm_medium=email</link><atom:link href="https://bravenewgeek.com/go-is-unapologetically-flawed-heres-why-we-use-it/?utm_source=golangweekly&amp;utm_medium=email" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 May 2015 20:43:34 -0700</pubDate><title>Go Is Unapologetically Flawed, Here’s Why We Use It</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Stack Exchange user cpast explains the security flaw in doing simple string comparisons for passwords and other sensitive information that enables timing attacks:</p><blockquote><p>The problem here is that generic string comparison functions return as soon as they find a difference between the strings. If the first byte is different, they return after just looking at one byte of the two strings. If the only difference is in the last byte, they process both entire strings before returning. This speeds things up in general, which is normally good. But it also means someone who can tell how long it takes to compare the strings can make a good guess where the first difference is.</p></blockquote><p>Use a constant-time comparison instead where all characters are always compared.</p><p><a href=https://willfaught.com/2015/05/26/simple-string-comparisons-not-secure-against-timing-attacks/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-26:/2015/05/26/simple-string-comparisons-not-secure-against-timing-attacks/</guid><link>https://security.stackexchange.com/questions/83660/simple-string-comparisons-not-secure-against-timing-attacks</link><atom:link href="https://security.stackexchange.com/questions/83660/simple-string-comparisons-not-secure-against-timing-attacks" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 May 2015 19:40:56 -0700</pubDate><title>Simple String Comparisons Not Secure Against Timing Attacks</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Kyle Quest has a lot of good tips for Golang newcomers, and arguably even intermediate ones:</p><blockquote><p>A lot of these gotchas may seem obvious if you took the time to learn the language reading the official spec, wiki, mailing list discussions, many great posts and presentations by Rob Pike, and the source code. Not everybody starts the same way though and that&rsquo;s OK. If you are new to Go the information here will save you hours debugging your code.</p></blockquote><p><a href=https://willfaught.com/2015/05/26/50-shades-of-go-traps-gotchas-and-common-mistakes-for-new-golang-devs/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-26:/2015/05/26/50-shades-of-go-traps-gotchas-and-common-mistakes-for-new-golang-devs/</guid><link>https://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html#close_http_conn</link><atom:link href="https://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html#close_http_conn" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 May 2015 19:33:05 -0700</pubDate><title>50 Shades Of Go: Traps, Gotchas, And Common Mistakes For New Golang Devs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An interesting overview by Robert Griesemer of the motivation for gofmt, how it has influenced code formatting in other languages, the things that went well, and the lessons learned.</p><p>I found this point amusing:</p><blockquote><p>gofmt&rsquo;s style is nobody&rsquo;s favorite, yet gofmt is everybody&rsquo;s favorite.</p></blockquote><p><a href=https://willfaught.com/2015/05/26/the-cultural-evolution-of-gofmt/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-26:/2015/05/26/the-cultural-evolution-of-gofmt/</guid><link>https://talks.go-zh.org/2015/gofmt-en.slide</link><atom:link href="https://talks.go-zh.org/2015/gofmt-en.slide" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 May 2015 19:26:24 -0700</pubDate><title>The Cultural Evolution Of Gofmt</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Dave Cheney on bridging from one Golang interface to another:</p><blockquote><p>The value returned by io.MultiWriter is an implementation of io.Writer, it doesn&rsquo;t have the rest of the methods necessary to fulfil the net.Conn interface; what I really need is the ability to replace the Write method of an existing net.Conn value. We can do this with embedding by creating a structure that embeds both a net.Conn and an independant io.Writer as anonymous fields.</p></blockquote><p><a href=https://willfaught.com/2015/05/26/struct-composition-with-go/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-26:/2015/05/26/struct-composition-with-go/</guid><link>https://dave.cheney.net/2015/05/22/struct-composition-with-go?utm_source=golangweekly&amp;utm_medium=email</link><atom:link href="https://dave.cheney.net/2015/05/22/struct-composition-with-go?utm_source=golangweekly&amp;utm_medium=email" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 May 2015 19:21:14 -0700</pubDate><title>Struct Composition With Go</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Biggest dumbass in the world:</p><blockquote><p>I thought that my entrance [into North Korea]… illegally, I acknowledge… [could lead to] some great event happening… Hopefully that event could have a good effect in the relations between the North and South [Koreas].</p></blockquote><p><a href=https://willfaught.com/2015/05/05/jackass-further-destabilizes-the-korean-region/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-05:/2015/05/05/jackass-further-destabilizes-the-korean-region/</guid><link>https://cir.ca/s/CMLB</link><atom:link href="https://cir.ca/s/CMLB" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 05 May 2015 00:51:35 -0700</pubDate><title>Jackass Further Destabilizes The Korean Region</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A great resource for resizing sparse bundles in OS X.</p><p><a href=https://willfaught.com/2015/05/02/changing-the-size-or-case-sensitivity-of-a-sparse-bundle/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-05-02:/2015/05/02/changing-the-size-or-case-sensitivity-of-a-sparse-bundle/</guid><link>https://web.archive.org/web/20150510160216/http://pondini.org/TM/A8.html</link><atom:link href="https://web.archive.org/web/20150510160216/http://pondini.org/TM/A8.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 02 May 2015 19:29:51 -0700</pubDate><title>Changing The Size Or Case-Sensitivity Of A Sparse Bundle</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Casey Liss on the Apple Watch:</p><blockquote><p>The Apple Watch strikes me as the next great frontier. In much the same way putting a computer with a built-in GPS in our pocket opened whole new doors, I suspect the Apple Watch will eventually do the same. I see that this is the future. I don&rsquo;t doubt it.</p><p>But is it worth spending, at a minimum, $400 today?</p><p>I&rsquo;m unconvinced.</p></blockquote><p>After trying a few on and using one a couple times, I find myself thinking the same thing. I can see the potential, but it&rsquo;s just not quite there yet. For a company that is known for successfully swooping into a new market at exactly the right time, this is an unexpected blunder. I think we all expected to be more blown away by the Watch, but everyone seems to be struggling to justify the price.</p><p>I&rsquo;ll probably wait for a later model. Most assuredly the second version will be much improved, as it goes with most new Apple products. What would get me to take a second look is severing the iPhone tether, LTE, GPS, native apps, more watch faces that are all equally customizable, improved wrist raising and lowering interactions, more responsive touch controls, a less confusing UI, a slimmer shape, more wrist band colors, and better battery life.</p><p><a href=https://willfaught.com/2015/04/29/random-apple-watch-thoughts/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-29:/2015/04/29/random-apple-watch-thoughts/</guid><link>https://www.caseyliss.com/2015/4/12/random-apple-watch-thoughts</link><atom:link href="https://www.caseyliss.com/2015/4/12/random-apple-watch-thoughts" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 29 Apr 2015 10:09:29 -0700</pubDate><title>Random Apple Watch Thoughts</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A funny and perceptive take on the Go programming language and the Go team.</p><blockquote><p>In other words, Go represents a kind of Machiavellian power play, orchestrated by slow-and-careful programmers who are tired of suffering for the sins of fast-and-loose programmers. The Go documentation refers quite often to intolerable 45-minute build times suffered by the original designers, and I can&rsquo;t help but imagine them sitting around and seething about all those unused imports from those &ldquo;other&rdquo; programmers, that is, the &ldquo;bad&rdquo; programmers. Their solution was not to engage and educate those programmers to change their habits, but rather design a new language that the bad programmers would be compelled to use — and tie down the language sufficiently so that &ldquo;bad&rdquo; practices, such as a program containing unused variables, were impossible.</p><p>Reading Go&rsquo;s mailing list and documentation, I get a similar sense of refusal-to-engage — the authors are communicative, to be sure, but in a didactic way. They seem tired of hearing people&rsquo;s ideas, as if they&rsquo;ve already thought of everything, and the relative success of Go at Google and elsewhere has only led them to turn the volume knob down. Which is a shame, because they&rsquo;ll probably miss out on some good ideas (including my highly compelling, backwards-incompatible, double-triple-colon-assignment proposal mentioned above).</p></blockquote><p>I get the same feeling when reading the mailing list.</p><p><a href=https://willfaught.com/2015/04/23/four-days-of-go/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-23:/2015/04/23/four-days-of-go/</guid><link>https://www.evanmiller.org/four-days-of-go.html</link><atom:link href="https://www.evanmiller.org/four-days-of-go.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 23 Apr 2015 12:06:31 -0700</pubDate><title>Four Days Of Go</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Electronic Frontier Foundation:</p><blockquote><p>The Trans-Pacific Partnership (TPP) is a secretive, multinational trade agreement that threatens to extend restrictive intellectual property (IP) laws across the globe and rewrite international rules on its enforcement. The main problems are two-fold:</p><p>(1) Intellectual Property Chapter: Leaked draft texts of the agreement show that the IP chapter would have extensive negative ramifications for users&rsquo; freedom of speech, right to privacy and due process, and hinder peoples&rsquo; abilities to innovate.</p><p>(2) Lack of Transparency: The entire process has shut out multi-stakeholder participation and is shrouded in secrecy.</p></blockquote><p>One can only imagine the awful things that haven&rsquo;t been revealed yet.</p><p>If you want to contact your representatives about TPP, EFF has <a href=https://act.eff.org/action/don-t-let-congress-fast-track-tpp rel=external>a handy form for contacting them all at once for you</a>
.</p><p><a href=https://willfaught.com/2015/04/21/trans-pacific-partnership-agreement/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-21:/2015/04/21/trans-pacific-partnership-agreement/</guid><link>https://www.eff.org/issues/tpp</link><atom:link href="https://www.eff.org/issues/tpp" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 21 Apr 2015 21:39:55 -0700</pubDate><title>Trans-Pacific Partnership Agreement</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>In iOS Safari, open tabs often must be reloaded when you switch back to them, either because you were looking at another tab, or because you had switched to another app. This is mainly due to the rising memory requirements of iOS and apps, and iOS devices having only one gigabyte of memory for a long time. iOS will delete tab data to reclaim the memory for another purpose, and will simply reload the tabs later if you ever switch back to them; but if you don&rsquo;t have a network connection when that happens, then the tabs can&rsquo;t be reloaded. Except if you save the page to Reading List. If you do that, then the sky&rsquo;s the limit! Put as many pages as you want in there, no problem! It&rsquo;ll recall as many pages as you want, on as many tabs as you want, for as many times as you want. I can&rsquo;t for the life of me think of why the Apple engineers didn&rsquo;t automatically put tab pages into Reading List, or even better do something equivalent under the hood, to be able to reload tabs without a connection. What&rsquo;s really galling is that for iPhone (and sometimes iPad), reloading tab pages uses data from the cellular data connection, which for most of us is limited and expensive. Apple has consistently chosen to trade good battery life for slim hardware, and it&rsquo;s limited battery life that prevents them from putting more than one gigabyte of memory into iOS devices. Basically, Apple is choosing to make us pay more in our data use rather than make hardware with sensible battery capacity.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-20:/2015/04/20/lost-ios-safari-tabs/</guid><link>https://willfaught.com/2015/04/20/lost-ios-safari-tabs/</link><atom:link href="https://willfaught.com/2015/04/20/lost-ios-safari-tabs/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 20 Apr 2015 22:57:42 -0700</pubDate><title>Lost IOS Safari Tabs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Engineer shit talking.</p><p><a href=https://willfaught.com/2015/04/20/code-quality/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-20:/2015/04/20/code-quality/</guid><link>https://xkcd.com/1513/</link><atom:link href="https://xkcd.com/1513/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 20 Apr 2015 13:14:36 -0700</pubDate><title>Code Quality</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Cyrus Vance:</p><blockquote><p>[Encrypted smartphones] cannot be accessed by law enforcement, even when a court has authorized us to look at its contents. The implication of this is that it&rsquo;s going to affect our ability to protect New Yorkers.</p></blockquote><p>Replace &ldquo;encrypted smartphones&rdquo; with &ldquo;private thoughts&rdquo; and it makes just as much sense.</p><p><a href=https://willfaught.com/2015/04/20/manhattan-da-smartphone-encryption-will-endanger-new-yorkers/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-20:/2015/04/20/manhattan-da-smartphone-encryption-will-endanger-new-yorkers/</guid><link>https://cir.ca/s/v3EB</link><atom:link href="https://cir.ca/s/v3EB" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 20 Apr 2015 11:54:12 -0700</pubDate><title>Manhattan DA: Smartphone Encryption Will Endanger New Yorkers</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Damning of whole life insurance:</p><blockquote><p>For example, a nonsmoking 30-year-old woman in excellent health might be able to get a 20-year term policy with a death benefit of $1 million for $480 per year. If this woman dies at age 49 after paying premiums for 19 years, her beneficiaries will receive $1 million tax-free when she paid in just $9,120. …</p><p>Do you really hate the idea of potentially &ldquo;throwing away&rdquo; almost $10,000 over the next 20 years? What would happen if you invested $480 per year in the stock market instead? If you earned an average annual return of 8%, you&rsquo;d have $25,960 after 20 years, before taxes and inflation. Considering the opportunity cost of putting that $480 per year into term life insurance premiums instead of investing it, you&rsquo;re really &ldquo;throwing away&rdquo; $25,960. But if you die without life insurance during those 20 years, you&rsquo;ll leave your heirs with almost nothing instead of leaving them with $1 million.</p><p>What if you bought permanent life insurance instead? The same woman described above who purchased a whole life insurance policy from the same insurance company could expect to pay $9,370 annually. The whole life policy&rsquo;s cost for a single year is just slightly less than the term life policy&rsquo;s cost for 20 years. So how much cash value are you building up for that extra cost?</p><p>… After 20 years, the policy&rsquo;s guaranteed cash value is $181,630, and you will have paid $187,400 in premiums.</p><p>But after 20 years, if you had bought term for $480 a year and invested the $8,890 difference, you&rsquo;d have $480,806 before taxes and inflation at an average annual return of 8%.</p><p>Sure, you say, but the permanent life insurance policy guarantees that return. I&rsquo;m not guaranteed an 8% return in the market. That&rsquo;s true. If you have no tolerance for risk, you can put the extra $8,890 a year in a savings account. You&rsquo;ll earn 1% annually, assuming interest rates never go up from today&rsquo;s historic lows. After 20 years, you&rsquo;ll have $208,671. That&rsquo;s still more than the permanent policy&rsquo;s guaranteed cash value of $181,630.</p></blockquote><p>Great article.</p><p><a href=https://willfaught.com/2015/04/16/is-life-insurance-a-smart-investment/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-16:/2015/04/16/is-life-insurance-a-smart-investment/</guid><link>https://www.investopedia.com/articles/active-trading/120814/life-insurance-smart-investment.asp</link><atom:link href="https://www.investopedia.com/articles/active-trading/120814/life-insurance-smart-investment.asp" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 16 Apr 2015 09:47:19 -0700</pubDate><title>Is Life Insurance A Smart Investment?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Sounds like whole life insurance isn&rsquo;t such a great deal compared to term life insurance and investing the price difference yourself.</p><p><a href=https://willfaught.com/2015/04/16/10-things-life-insurance-agents-wont-say/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-16:/2015/04/16/10-things-life-insurance-agents-wont-say/</guid><link>https://www.marketwatch.com/story/10-things-your-life-insurance-agent-wont-say-2014-07-11</link><atom:link href="https://www.marketwatch.com/story/10-things-your-life-insurance-agent-wont-say-2014-07-11" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 16 Apr 2015 09:26:34 -0700</pubDate><title>10 Things Life Insurance Agents Won’t Say</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ever wonder what the camera grid in your smartphone&rsquo;s camera app is for?</p><p><a href=https://willfaught.com/2015/04/11/rule-of-thirds/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-11:/2015/04/11/rule-of-thirds/</guid><link>https://en.wikipedia.org/wiki/Rule_of_thirds</link><atom:link href="https://en.wikipedia.org/wiki/Rule_of_thirds" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Apr 2015 01:53:38 -0700</pubDate><title>Rule Of Thirds</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>George Lucas speaking about the importance of cinematic preservation to Congress in 1988:</p><blockquote><p>People who alter or destroy works of art and our cultural heritage for profit or as an exercise of power are barbarians, and if the laws of the United States continue to condone this behavior, history will surely classify us as a barbaric society.</p><p>Today, engineers with their computers can add color to black-and-white movies, change the soundtrack, speed up the pace, and add or subtract material to the philosophical tastes of the copyright holder. Tomorrow, more advanced technology will be able to replace actors with &ldquo;fresher faces,&rdquo; or alter dialogue and change the movement of the actor&rsquo;s lips to match. It will soon be possible to create a new &ldquo;original&rdquo; negative with whatever changes or alterations the copyright holder of the moment desires. The copyright holders, so far, have not been completely diligent in preserving the original negatives of films they control. In order to reconstruct old negatives, many archivists have had to go to Eastern bloc countries where American films have been better preserved.</p></blockquote><p>Well said, George.</p><p><a href=https://willfaught.com/2015/04/04/the-star-wars-george-lucas-doesnt-want-you-to-see/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-04-04:/2015/04/04/the-star-wars-george-lucas-doesnt-want-you-to-see/</guid><link>https://www.theatlantic.com/technology/archive/2014/08/the-star-wars-george-lucas-doesnt-want-you-to-see/379184/</link><atom:link href="https://www.theatlantic.com/technology/archive/2014/08/the-star-wars-george-lucas-doesnt-want-you-to-see/379184/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 Apr 2015 12:39:36 -0700</pubDate><title>The Star Wars George Lucas Doesn’t Want You To See</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Robin Milner:</p><blockquote><p>Well-typed programs cannot &lsquo;go wrong&rsquo;.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-03-30:/2015/03/30/going-wrong/</guid><link>https://willfaught.com/2015/03/30/going-wrong/</link><atom:link href="https://willfaught.com/2015/03/30/going-wrong/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 30 Mar 2015 21:50:22 -0700</pubDate><title>Going Wrong</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Why can&rsquo;t they just poison them with carbon monoxide? You know, where you leave the car running in the garage and you pass out and eventually die. That seems like one of the best ways to go. Just knock me out and get it over with.</p><p><a href=https://willfaught.com/2015/03/29/texas-finds-more-lethal-injection-drugs-after-almost-running-out/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-03-29:/2015/03/29/texas-finds-more-lethal-injection-drugs-after-almost-running-out/</guid><link>https://cir.ca/s/F7z</link><atom:link href="https://cir.ca/s/F7z" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 29 Mar 2015 11:34:27 -0700</pubDate><title>Texas Finds More Lethal Injection Drugs After Almost Running Out</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I love old ruinous monoliths like these.</p><p><a href=https://willfaught.com/2015/03/28/tiwanaku/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-03-28:/2015/03/28/tiwanaku/</guid><link>https://en.wikipedia.org/wiki/Tiwanaku</link><atom:link href="https://en.wikipedia.org/wiki/Tiwanaku" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 28 Mar 2015 21:14:23 -0700</pubDate><title>Tiwanaku</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;blockquote>&lt;p>Much of the readily accessible masonry at the ruin was used to construct the Catholic church in the village. This seems to have happened a lot across the world. So many treasures and artifacts ruined by building churches. Pity.&lt;/p>&lt;/blockquote></description><guid isPermaLink="false">tag:willfaught.com,2015-03-28:/2015/03/28/churches-built-with-ruins/</guid><link>https://willfaught.com/2015/03/28/churches-built-with-ruins/</link><atom:link href="https://willfaught.com/2015/03/28/churches-built-with-ruins/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 28 Mar 2015 18:49:13 -0700</pubDate><title>Churches Built With Ruins</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I just rewatched Evolver. I saw it once long ago, in high school. Somehow, I remember a dumb quotation from it, where a scientist tried to give a voice command to a killer robot to shut it down: &ldquo;Alpha command sequence! Shutdown! Phoenix eight! Delete! Delete!&rdquo; I was curious whether I actually remembered it correctly. Turns out I did. Of all things, what a dorky thing to remember!</p><p><a href=https://willfaught.com/2015/03/28/evolver/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-03-28:/2015/03/28/evolver/</guid><link>https://m.imdb.com/title/tt0112993/</link><atom:link href="https://m.imdb.com/title/tt0112993/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 28 Mar 2015 14:20:51 -0700</pubDate><title>Evolver</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Drew Crawford on Google&rsquo;s application for the <code>.dev</code> domain:</p><blockquote><p>Let&rsquo;s talk about a domain that&rsquo;s near and dear to my heart, .dev. Wouldn&rsquo;t it be great to have a domain for content targeted at software developers? So that you could actually get a domain name for www.[your-side-project].dev? Instead abusing the .io domain which is officially for the British Indian Ocean Territory.</p><p>Alas, Google does not think much of that plan. Under their shell company &ldquo;Charleston Road Registry Inc.&rdquo; (whose &ldquo;CEO&rdquo; is merely Google&rsquo;s in-house counsel), they have applied for control of the .dev domain, which they intend to be:</p><blockquote><p>completely closed for the sole use of Google.</p></blockquote><p>In case you thought that was a typo, they elaborate:</p><blockquote><p>Second-level domain names within the proposed gTLD are intended for registration and use by Google only, and domain names under the new gTLD will not be available to the general public for purchase, sale, or registration. As such, Charleston Road Registry intends to apply for an exemption to the ICANN Registry Operator Code of Conduct as Google is intended to be the sole registrar and registrant.</p></blockquote></blockquote><p>Unbelieveably brazen, but apparently ICANN has designed a system where this was possible, and thus inevitable. Google just got there first. I fault ICANN for being such idiots for allowing private control of domains.</p><p><a href=https://willfaught.com/2015/03/09/google-our-patron-saint-of-the-closed-web-sealed-abstract/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-03-09:/2015/03/09/google-our-patron-saint-of-the-closed-web-sealed-abstract/</guid><link>https://sealedabstract.com/rants/google-our-patron-saint-of-the-closed-web/</link><atom:link href="https://sealedabstract.com/rants/google-our-patron-saint-of-the-closed-web/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 09 Mar 2015 15:24:40 -0700</pubDate><title>Google, Our Patron Saint Of The Closed Web | Sealed Abstract</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Backblaze on how OS X displays file sizes:</p><blockquote><p>Starting with Mac OS X 10.6, Apple calculates disk storage using decimal (base 10) math:</p><ul><li>1 KB is 1,000 bytes</li><li>1 MB is 1,000,000 bytes or 1,000 KB</li><li>1 GB is 1,000,000,000 bytes or 1,000 MB</li></ul><p>Backblaze&rsquo;s restore browser, Windows, and Mac OS X 10.5 and earlier all use binary (base 2) math:</p><ul><li>1 KB is 1,024 bytes</li><li>1 MB is 1,048,576 bytes or 1,024 KB</li><li>1 GB is 1,073,741,824 bytes or 1,024 MB</li></ul></blockquote><p>Why on Earth would they use base 10?</p><p><a href=https://willfaught.com/2015/02/25/why-do-my-backed-up-files-appear-smaller-on-backblaze-than-on-my-mac/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-25:/2015/02/25/why-do-my-backed-up-files-appear-smaller-on-backblaze-than-on-my-mac/</guid><link>https://help.backblaze.com/entries/23311183-Why-do-my-backed-up-files-appear-smaller-on-Backblaze-than-on-my-Mac-</link><atom:link href="https://help.backblaze.com/entries/23311183-Why-do-my-backed-up-files-appear-smaller-on-Backblaze-than-on-my-Mac-" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Feb 2015 22:28:37 -0800</pubDate><title>Why Do My Backed Up Files Appear Smaller On Backblaze Than On My Mac?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you want to encourage as many people as possible to participate in sending their personal information over the Internet, at least provide SSL security. Terrible.</p><p><a href=https://willfaught.com/2015/02/22/tell-congress-to-put-an-expiration-date-on-unconstitutional-bulk-surveillance/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-22:/2015/02/22/tell-congress-to-put-an-expiration-date-on-unconstitutional-bulk-surveillance/</guid><link>https://web.archive.org/web/20150222193926/http://www.demandanexpirationdate.com/</link><atom:link href="https://web.archive.org/web/20150222193926/http://www.demandanexpirationdate.com/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 22 Feb 2015 21:13:37 -0800</pubDate><title>Tell Congress To Put An Expiration Date On Unconstitutional Bulk Surveillance</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The Electronic Frontier Foundation:</p><blockquote><p>News broke last night that Lenovo has been shipping laptops with a horrifically dangerous piece of software called Superfish, which tampers with Windows&rsquo; cryptographic security to perform man-in-the-middle attacks against the user&rsquo;s browsing. This is done in order to inject advertising into secure HTTPS pages, a feature most users don&rsquo;t want implemented in the most insecure possible way.</p></blockquote><p>Inexcusable and egregious.</p><p><a href=https://willfaught.com/2015/02/22/lenovo-breaks-web-security-on-its-recent-laptops-to-inject-ads/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-22:/2015/02/22/lenovo-breaks-web-security-on-its-recent-laptops-to-inject-ads/</guid><link>https://www.eff.org/deeplinks/2015/02/further-evidence-lenovo-breaking-https-security-its-laptops</link><atom:link href="https://www.eff.org/deeplinks/2015/02/further-evidence-lenovo-breaking-https-security-its-laptops" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 22 Feb 2015 13:33:16 -0800</pubDate><title>Lenovo Breaks Web Security On Its Recent Laptops To Inject Ads</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Moving piece.</p><p><a href=https://willfaught.com/2015/02/22/nixons-undelivered-moon-landing-failure-speech/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-22:/2015/02/22/nixons-undelivered-moon-landing-failure-speech/</guid><link>https://watergate.info/1969/07/20/an-undelivered-nixon-speech.html</link><atom:link href="https://watergate.info/1969/07/20/an-undelivered-nixon-speech.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 22 Feb 2015 12:58:53 -0800</pubDate><title>Nixon’s Undelivered Moon Landing Failure Speech</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>So clever.</p><p><a href=https://willfaught.com/2015/02/22/more-to-the-nintendo-64-logo-than-meets-the-eye/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-22:/2015/02/22/more-to-the-nintendo-64-logo-than-meets-the-eye/</guid><link>https://www.funnyjunk.com/funny_pictures/2079852/Nintendo</link><atom:link href="https://www.funnyjunk.com/funny_pictures/2079852/Nintendo" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 22 Feb 2015 10:27:46 -0800</pubDate><title>More To The Nintendo 64 Logo Than Meets The Eye</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Betable — where I work — is looking to hire a senior software engineer in San Francisco:</p><blockquote><p>Rubicon Media (Betable) has an opening for Senior Software Engineer in San Francisco, CA to Research, design, develop, and test operating systems-level software for business and general computing applications. Master&rsquo;s in Computer Science, Engineering or related technical field followed by 7 years progressive post-baccalaureate experience in job offered or software engineering-related occupation.</p><p>Experience must include:</p><ol><li>Advanced understanding of Linux, shell scripting and at least two (2) years of experience working directly with configuration management systems;</li><li>Understand, troubleshoot, trace and develop fixes for root causes in distributed systems;</li><li>Advanced technical proficiency with Amazon Web Services, Rackspace or other cloud services;</li><li>Design and develop RESTful web services;</li><li>Experience implementing integrations with at least two (2) different third-party payment gateways and developing and integrating anti-fraud tools;</li><li>At least five (5) years building backend web services, including a low-level understanding and proficiency in programming languages like Java, Go or Node.js;</li><li>At least five (5) years of experience developing game-related APIs, including game wallets, and accounting;</li><li>Background writing unit and integration tests for web services; and</li><li>Experience developing accounting and reporting systems.</li></ol></blockquote><p>Contact me if you&rsquo;re interested.</p><p>(We&rsquo;re also hiring non-senior engineers too.)</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-16:/2015/02/16/betable-is-hiring/</guid><link>https://willfaught.com/2015/02/16/betable-is-hiring/</link><atom:link href="https://willfaught.com/2015/02/16/betable-is-hiring/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 16 Feb 2015 13:49:18 -0800</pubDate><title>Betable Is Hiring</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Paul Graham on knowing what you want to do:</p><blockquote><p>Few people know so early or so certainly what they want to work on. [&mldr;] If something that seems like work to other people doesn&rsquo;t seem like work to you, that&rsquo;s something you&rsquo;re well suited for.</p></blockquote><p>And:</p><blockquote><p>The stranger your tastes seem to other people, the stronger evidence they probably are of what you should do.</p></blockquote><p><a href=https://willfaught.com/2015/02/15/what-doesnt-seem-like-work/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-15:/2015/02/15/what-doesnt-seem-like-work/</guid><link>http://www.paulgraham.com/work.html</link><atom:link href="http://www.paulgraham.com/work.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 15 Feb 2015 13:02:34 -0800</pubDate><title>What Doesn’t Seem Like Work?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A real HTTP 2.0 effort:</p><blockquote><p>HTTP/2 is a replacement for how HTTP is expressed &ldquo;on the wire.&rdquo; It is not a ground-up rewrite of the protocol; HTTP methods, status codes and semantics will be the same, and it should be possible to use the same APIs as HTTP/1.x (possibly with some small additions) to represent the protocol.</p><p>The focus of the protocol is on performance; specifically, end-user perceived latency, network and server resource usage. One major goal is to allow the use of a single connection from browsers to a Web site.</p><p>The basis of the work was SPDY, but HTTP/2 has evolved to take the community&rsquo;s input into account, incorporating several improvements in the process.</p></blockquote><p>Godspeed.</p><p><a href=https://willfaught.com/2015/02/14/http/2/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-14:/2015/02/14/http/2/</guid><link>https://http2.github.io</link><atom:link href="https://http2.github.io" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 14 Feb 2015 16:32:00 -0800</pubDate><title>HTTP/2</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.</p><p>Mesos is built using the same principles as the Linux kernel, only at a different level of abstraction. The Mesos kernel runs on every machine and provides applications (e.g., Hadoop, Spark, Kafka, Elastic Search) with API&rsquo;s for resource management and scheduling across entire datacenter and cloud environments.</p></blockquote><p>Another cool cluster management idea. It even integrates Kubernetes.</p><p>There&rsquo;s an <a href=https://mesosphere.com rel=external>enterprise version</a>
as well.</p><p><a href=https://willfaught.com/2015/02/14/apache-mesos/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-14:/2015/02/14/apache-mesos/</guid><link>https://mesos.apache.org</link><atom:link href="https://mesos.apache.org" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 14 Feb 2015 15:28:37 -0800</pubDate><title>Apache Mesos</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions. Using the concepts of &ldquo;labels&rdquo; and &ldquo;pods&rdquo;, it groups the containers which make up an application into logical units for easy management and discovery. Cool idea. I wonder how long Google uses stuff like this before it sees the light of day?</p></blockquote><p><a href=https://willfaught.com/2015/02/14/kubernetes-by-google/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-14:/2015/02/14/kubernetes-by-google/</guid><link>https://kubernetes.io</link><atom:link href="https://kubernetes.io" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 14 Feb 2015 15:20:34 -0800</pubDate><title>Kubernetes By Google</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>While looking into Docker I discovered CoreOS. This also looks very interesting:</p><blockquote><ul><li>CoreOS is designed to be a modern, minimal base to build your platform. Allows for very quick PXE/iPXE booting.</li><li>Utilizes an active/passive dual-partition scheme to update the OS as a single unit instead of package by package. This makes each update quick, reliable and able to be easily rolled back.</li><li>Applications on CoreOS run as Docker containers. Containers provide maximum flexibility in packaging and can start in milliseconds.</li><li>CoreOS works well on a single machine, but it&rsquo;s designed to be clustered. Easily run application containers across multiple machines with fleet and connect them together with service discovery.</li><li>Built-in primitives such as distributed locking and master election are the building blocks for large scale distributed systems.</li><li>Easily locate where services are being run within the cluster and be notified when something changes. Essential for a complex, highly dynamic cluster. Built into CoreOS with high availability and automatic fail-over.</li></ul></blockquote><p><a href=https://willfaught.com/2015/02/09/coreos/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-09:/2015/02/09/coreos/</guid><link>https://coreos.com</link><atom:link href="https://coreos.com" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 09 Feb 2015 23:48:10 -0800</pubDate><title>CoreOS</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Containers unsurprisingly perform better than virtual machines:</p><blockquote><p>The results show that Docker equals or exceeds KVM performance in every case tested. For CPU and memory performance KVM and Docker introduce a measurable but negligible overhead, although for I/O intensive applications both require tuning.</p></blockquote><p>Containerization can be IaaS as well as PaaS:</p><blockquote><p>Conventional wisdom (to the extent such a thing exists in the young cloud ecosystem) says that IaaS is implemented using VMs and PaaS is implemented using containers. We see no technical reason why this must be the case, especially in cases where container based IaaS can offer better performance or easier deployment. Containers can also eliminate the distinction between IaaS and &ldquo;bare metal&rdquo; non-virtualized servers since they offer the control and isolation of VMs with the performance of bare metal.</p></blockquote><p><a href=https://willfaught.com/2015/02/09/comparing-virtual-machines-and-linux-containers-performance/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-09:/2015/02/09/comparing-virtual-machines-and-linux-containers-performance/</guid><link>https://www.infoq.com/news/2014/08/vm-containers-performance</link><atom:link href="https://www.infoq.com/news/2014/08/vm-containers-performance" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 09 Feb 2015 23:15:13 -0800</pubDate><title>Comparing Virtual Machines And Linux Containers Performance</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Sens. Lamar Alexander (R-TN) and Mike Lee (R-UT) proposed a rule change Feb. 4 to abolish the filibuster for Supreme Court nominees. The proposal would allow approval of Supreme Court nominees with a simple majority. This would be so&mldr;sensible! I wonder what the motivation or context for this is?</p></blockquote><p><a href=https://willfaught.com/2015/02/09/senate-republicans-propose-nixing-filibuster-for-supreme-court-nominees/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-09:/2015/02/09/senate-republicans-propose-nixing-filibuster-for-supreme-court-nominees/</guid><link>https://cir.ca/s/ZjJ</link><atom:link href="https://cir.ca/s/ZjJ" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 09 Feb 2015 18:32:00 -0800</pubDate><title>Senate Republicans Propose Nixing Filibuster For Supreme Court Nominees</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Swatch Group CEO Nick Hayek has in the past expressed skepticism toward smartwatches, and once said the company&rsquo;s high-end watches were effectively smartwatches because they &ldquo;make you look smart.&rdquo; This guy gets it.</p></blockquote><p><a href=https://willfaught.com/2015/02/09/swatch-to-release-smartwatch-within-three-months/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-09:/2015/02/09/swatch-to-release-smartwatch-within-three-months/</guid><link>https://cir.ca/s/5WR</link><atom:link href="https://cir.ca/s/5WR" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 09 Feb 2015 18:21:05 -0800</pubDate><title>Swatch To Release Smartwatch Within Three Months</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://www.docker.com rel=external>Docker</a>
seems like a really cool idea. I&rsquo;d never heard of Linux control groups before learning about Docker. I&rsquo;m interested to know how it works exactly, and why a Docker &ldquo;runtime&rdquo; is needed. The last company I worked for built VM images with Vagrant, and while this was pretty cool, they were huge and onerous and the tools for creating and deploying them were clunky and difficult to automate. These lightweight containers seem like a much better solution. It seems like there&rsquo;s quite a bit of buzz and perhaps momentum behind it. Docker Machine, Swarm, and Compose are great additions to the mix. It&rsquo;s interesting that Docker is written in Golang. I&rsquo;ve been using Golang a lot at work, and like it a lot. I&rsquo;m always curious to see how others are using it.</p><p><a href=https://willfaught.com/2015/02/08/announcing-docker-machine-swarm-and-compose-for-orchestrating-distributed-apps/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-08:/2015/02/08/announcing-docker-machine-swarm-and-compose-for-orchestrating-distributed-apps/</guid><link>https://blog.docker.com/2014/12/announcing-docker-machine-swarm-and-compose-for-orchestrating-distributed-apps/</link><atom:link href="https://blog.docker.com/2014/12/announcing-docker-machine-swarm-and-compose-for-orchestrating-distributed-apps/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 08 Feb 2015 22:01:26 -0800</pubDate><title>Announcing Docker Machine, Swarm, And Compose For Orchestrating Distributed Apps</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Great ending.</p><p><a href=https://willfaught.com/2015/02/07/what-causes-a-video-to-go-viral/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-07:/2015/02/07/what-causes-a-video-to-go-viral/</guid><link>https://fstoppers.com/originals/one-most-insane-gopro-videos-youve-probably-ever-seen-and-why-its-gone-viral-55337</link><atom:link href="https://fstoppers.com/originals/one-most-insane-gopro-videos-youve-probably-ever-seen-and-why-its-gone-viral-55337" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 07 Feb 2015 10:49:22 -0800</pubDate><title>What Causes A Video To Go Viral?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>According to the Geneva Convention, knowingly firing at a medic wearing clear insignia is a war crime.</p></blockquote><p><a href=https://willfaught.com/2015/02/03/the-geneva-convention-and-medics/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-02-03:/2015/02/03/the-geneva-convention-and-medics/</guid><link>https://en.m.wikipedia.org/wiki/Combat_medic#Geneva_convention_protection</link><atom:link href="https://en.m.wikipedia.org/wiki/Combat_medic#Geneva_convention_protection" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 03 Feb 2015 19:35:36 -0800</pubDate><title>The Geneva Convention And Medics</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>One person successfully described SOA completely, and immediately died.</p></blockquote><p><a href=https://willfaught.com/2015/01/27/soa-facts/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-01-27:/2015/01/27/soa-facts/</guid><link>https://web.archive.org/web/20150213232728/http://www.soafacts.com/</link><atom:link href="https://web.archive.org/web/20150213232728/http://www.soafacts.com/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 27 Jan 2015 02:48:54 -0800</pubDate><title>SOA Facts</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Zoe Keating:</p><blockquote><p>My Google Youtube rep contacted me the other day. They were nice and took time to explain everything clearly to me, but the message was firm: I have to decide. I need to sign on to the new Youtube music services agreement or I will have my Youtube channel blocked.</p></blockquote><p>But:</p><blockquote><p>Is such control too much for an artist to ask for in 2015? It&rsquo;s one thing for individuals to upload all my music for free listening (it doesn&rsquo;t bother me). It&rsquo;s another thing entirely for a major corporation to force me to. I was encouraged to participate and now, after I&rsquo;m invested, I&rsquo;m being pressured into something I don&rsquo;t want to do.</p></blockquote><p>She doesn&rsquo;t explain why she <em>actually</em> doesn&rsquo;t want to do it. She&rsquo;s already chosen to put all her music out there for free, so why not put it all on YouTube too? Other musicians will be in the same boat, so her fans won&rsquo;t single her out for appearing to cash in. Without any further explanation, her motive seems juvenile.</p><p><a href=https://willfaught.com/2015/01/24/youtubes-onerous-new-terms-for-musicians/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-01-24:/2015/01/24/youtubes-onerous-new-terms-for-musicians/</guid><link>https://zoekeating.tumblr.com/post/108898194009/what-should-i-do-about-youtube</link><atom:link href="https://zoekeating.tumblr.com/post/108898194009/what-should-i-do-about-youtube" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 24 Jan 2015 11:14:20 -0800</pubDate><title>YouTube’s Onerous New Terms For Musicians</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Mark Manson on not giving a fuck:</p><blockquote><p>The point is, most of us struggle throughout our lives by giving too many fucks in situations where fucks do not deserve to be given. We give a fuck about the rude gas station attendant who gave us too many nickels. We give a fuck when a show we liked was canceled on TV. We give a fuck when our coworkers don&rsquo;t bother asking us about our awesome weekend. We give a fuck when it&rsquo;s raining and we were supposed to go jogging in the morning.</p><p>Fucks given everywhere. Strewn about like seeds in mother-fucking spring time. And for what purpose? For what reason? Convenience? Easy comforts? A pat on the fucking back maybe?</p><p>This is the problem, my friend.</p><p>Because when we give too many fucks, when we choose to give a fuck about everything, then we feel as though we are perpetually entitled to feel comfortable and happy at all times, that&rsquo;s when life fucks us.</p><p>Indeed, the ability to reserve our fucks for only the most fuckworthy of situations would surely make life a hell of a lot easier. Failure would be less terrifying. Rejection less painful. Unpleasant necessities more pleasant and the unsavory shit sandwiches a little bit more savory. I mean, if we could only give a few less fucks, or a few more consciously-directed fucks, then life would feel pretty fucking easy.</p></blockquote><p>Great piece. Quite funny.</p><p><a href=https://willfaught.com/2015/01/21/the-subtle-art-of-not-giving-a-fuck/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-01-21:/2015/01/21/the-subtle-art-of-not-giving-a-fuck/</guid><link>https://markmanson.net/not-giving-a-fuck</link><atom:link href="https://markmanson.net/not-giving-a-fuck" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 21 Jan 2015 11:43:19 -0800</pubDate><title>The Subtle Art Of Not Giving A Fuck</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>English TV reporters fumbling the pronunciation of the name of the Icelandic volcano Eyjafjallajokull. So funny!</p><p><a href=https://willfaught.com/2015/01/20/reporters-fumbling-the-name-eyjafjallajokull/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-01-20:/2015/01/20/reporters-fumbling-the-name-eyjafjallajokull/</guid><link>https://m.youtube.com/watch?v=2Q3YVkm8YJM</link><atom:link href="https://m.youtube.com/watch?v=2Q3YVkm8YJM" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 20 Jan 2015 01:16:39 -0800</pubDate><title>Reporters Fumbling The Name Eyjafjallajokull</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>The Founding Fathers of the United States also favoured a bicameral legislature. The idea was to have the Senate be wealthier and wiser. The Senate was created to be a stabilising force, elected not by mass electors, but selected by the State legislators. Senators would be more knowledgeable and more deliberate—a sort of republican nobility—and a counter to what Madison saw as the &ldquo;fickleness and passion&rdquo; that could absorb the House.</p></blockquote><blockquote><p>He noted further that the &ldquo;use of the Senate is to consist in its proceeding with more coolness, with more system and with more wisdom, than the popular branch&rdquo;. Madison&rsquo;s argument led the Framers to grant the Senate prerogatives in foreign policy, an area where steadiness, discretion, and caution were deemed especially important". The Senate was chosen by state legislators, and senators had to possess a significant amount of property in order to be deemed worthy and sensible enough for the position. In fact, it was not until the year 1913 that the 17th Amendment was passed, which &ldquo;mandated that Senators would be elected by popular vote rather than chosen by the State legislatures&rdquo;.</p></blockquote><p>I never knew this, or at least I&rsquo;d forgotten it. Fascinating.</p><p><a href=https://willfaught.com/2015/01/13/bicameralism/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-01-13:/2015/01/13/bicameralism/</guid><link>https://en.m.wikipedia.org/wiki/Bicameralism</link><atom:link href="https://en.m.wikipedia.org/wiki/Bicameralism" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 13 Jan 2015 08:05:45 -0800</pubDate><title>Bicameralism</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An interesting take on Golang from someone looking for a better server language. It starts about five minutes in and ends at the first ad.</p><p><a href=https://willfaught.com/2015/01/12/accidental-tech-podcast-on-golang/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-01-12:/2015/01/12/accidental-tech-podcast-on-golang/</guid><link>https://atp.fm/99</link><atom:link href="https://atp.fm/99" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 12 Jan 2015 09:59:00 -0800</pubDate><title>Accidental Tech Podcast On Golang</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Cliff Kuang:</p><blockquote><p>Steve Jobs&rsquo;s talent lay in taking what he learned and absorbing it with a manic intensity, so that his principles didn&rsquo;t just inform him; they consumed him. Jobs was both lucky and smart in that all of the lessons he got were additive&ndash;that is, you could fit them all together in a single, coherent design philosophy. Compare that to what happens when you engage with someone who has definite opinions about design, but no real philosophy behind it: It&rsquo;s a maddening experience because the definition of what works and what doesn&rsquo;t, what&rsquo;s good and what&rsquo;s not, can change so often in different circumstances. I&rsquo;d argue that this has been the chief failing of most consumer electronics makers: There&rsquo;s no deep-seated ideology behind their designs, so the products themselves never feel linked by what Jobs liked to call &ldquo;soul.&rdquo;</p></blockquote><p><a href=https://willfaught.com/2015/01/05/the-6-pillars-of-steve-jobss-design-philosophy/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2015-01-05:/2015/01/05/the-6-pillars-of-steve-jobss-design-philosophy/</guid><link>https://web.archive.org/web/20180813132640/https://www.fastcompany.com/1665375/the-6-pillars-of-steve-jobss-design-philosophy</link><atom:link href="https://web.archive.org/web/20180813132640/https://www.fastcompany.com/1665375/the-6-pillars-of-steve-jobss-design-philosophy" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 05 Jan 2015 09:01:44 -0800</pubDate><title>The 6 Pillars Of Steve Jobs’s Design Philosophy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Garbage collection pauses can ruin the feel of your application by introducing jank. Never seen &ldquo;jank&rdquo; used as a noun before. Good article.</p></blockquote><p><a href=https://willfaught.com/2014/12/30/effectively-managing-memory-at-gmail-scale/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-12-30:/2014/12/30/effectively-managing-memory-at-gmail-scale/</guid><link>https://www.html5rocks.com/en/tutorials/memory/effectivemanagement/</link><atom:link href="https://www.html5rocks.com/en/tutorials/memory/effectivemanagement/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 30 Dec 2014 10:57:27 -0800</pubDate><title>Effectively Managing Memory At Gmail Scale</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>The hack could cost Sony as much as $100 million, which would go toward the investigation</p></blockquote><p>OK&mldr;</p><blockquote><p>&mldr;repairing or replacing computers,</p></blockquote><p>OK&mldr;</p><blockquote><p>and enhancing the company's cyber defenses</p></blockquote><p>Bullshit. Replacing inadequate security with security you should have had in the first place isn&rsquo;t a <em>cost</em> forced on them by the hackers; it&rsquo;s an additional investment they chose not to make before this, and now they are because it&rsquo;s obvious to everyone that their security is bad.</p><p><a href=https://willfaught.com/2014/12/22/north-korea-hit-with-internet-outage-days-after-being-linked-to-sony-hack/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-12-22:/2014/12/22/north-korea-hit-with-internet-outage-days-after-being-linked-to-sony-hack/</guid><link>https://cir.ca/s/1xGB</link><atom:link href="https://cir.ca/s/1xGB" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 22 Dec 2014 18:34:00 -0800</pubDate><title>North Korea Hit With Internet Outage Days After Being Linked To Sony Hack</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I really like the Bash prompt I use now. It&rsquo;s just a <code>$</code> followed by a space. The <code>$</code> is green if <code>$?</code> is zero and red otherwise. If the current working directory is in a Git repository, the name of the checked-out branch appears before the <code>$</code> in blue with a space in between. Red, green, blue. Simple and elegant. It&rsquo;s great. function customprompt { EXITSTATUS="$?" BOLD="\[\033[1m\]" RED="\[\033[1;31m\]" GREEN="\[\033[1;32m\]" BLUE="\[\033[1;34m\]" OFF="\[\033[m\]" BRANCH=$(__git_ps1 | tr -d &lsquo;( )&rsquo;) if [ ! -z $BRANCH ] then BRANCH="$BRANCH " fi if [ &ldquo;${EXITSTATUS}&rdquo; -eq 0 ] then PS1="$BOLD$BLUE$BRANCH$GREEN$$OFF " else PS1="$BOLD$BLUE$BRANCH$RED$$OFF " fi PS2="${BOLD}>${OFF} " } export GIT_PS1_SHOWDIRTYSTATE=1 export PROMPT_COMMAND=customprompt</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-11-29:/2014/11/29/bash-prompt/</guid><link>https://willfaught.com/2014/11/29/bash-prompt/</link><atom:link href="https://willfaught.com/2014/11/29/bash-prompt/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 29 Nov 2014 12:22:00 -0800</pubDate><title>Bash Prompt</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I hope Apple adds Apple Pay support to Mobile Safari so I can pay for stuff on the web easily and securely. It would be great if they could figure out how to get the trackpad to double as Touch ID too.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2014-11-29:/2014/11/29/apple-pay-in-safari/</guid><link>https://willfaught.com/2014/11/29/apple-pay-in-safari/</link><atom:link href="https://willfaught.com/2014/11/29/apple-pay-in-safari/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 29 Nov 2014 12:13:13 -0800</pubDate><title>Apple Pay In Safari</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Damn you, Steam, for making me give you money! Today I bought:</p><ul><li>VVVVVV, $1.24</li><li>To The Moon, $3.49</li><li>Don&rsquo;t Starve, $3.74</li><li>La-Mulana, $2.99</li><li>Dust: An Elysian Tail, $2.99</li><li>Kairo, $0.99</li><li>Company of Heroes 2, $9.99</li><li>Counter-Strike: Global Offensive, $7.49</li><li>Dead Island Collection, $7.49</li><li>The Vanishing of Ethan Carter, $11.99</li><li>A Story About My Uncle, $3.24</li></ul><p>So many indie, downloadable, and new games I hadn&rsquo;t heard of before. When will I ever have time to play all of these?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-11-27:/2014/11/27/steam-fall-sale/</guid><link>https://willfaught.com/2014/11/27/steam-fall-sale/</link><atom:link href="https://willfaught.com/2014/11/27/steam-fall-sale/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 27 Nov 2014 10:07:00 -0800</pubDate><title>Steam Fall Sale</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>You make <em>a lot</em> more money selling your old iPhone to people than to businesses like <a href=https://gazelle.com rel=external>Gazelle</a>
<em>if</em> the phone is in good condition. I just sold my iPhone 5 for $320 to someone I met through Craigslist at a Starbucks near my home. Gazelle would have given me $170. That&rsquo;s almost double!</p><p>This was my process: I searched Craigslist for similar phones to learn roughly what the price should be ($300), then added $100 in case that was too low. I listed it on Craigslist, and then every time I had to renew the ad (every few days), I subtracted $20 (I only accept cash, and most people either have twenties or hundreds on hand). I was down to $340 when the buyer contacted me. He asked how flexible I was on the price, then asked if I would accept $300. I countered with $320 and he accepted. Easy.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-11-15:/2014/11/15/sell-your-iphone-to-people/</guid><link>https://willfaught.com/2014/11/15/sell-your-iphone-to-people/</link><atom:link href="https://willfaught.com/2014/11/15/sell-your-iphone-to-people/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 15 Nov 2014 22:04:04 -0800</pubDate><title>Sell Your IPhone To People</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>ERROR: Could not find a valid gem &lsquo;wkpdf&rsquo; (>= 0) in any repository</p><p>ERROR: Possible alternatives: wkpdf</p></blockquote><p>Lovely.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-11-11:/2014/11/11/helpful-error/</guid><link>https://willfaught.com/2014/11/11/helpful-error/</link><atom:link href="https://willfaught.com/2014/11/11/helpful-error/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 11 Nov 2014 22:08:32 -0800</pubDate><title>Helpful Error</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A useful data storage data structure for fast writes and free read locks. Cassandra uses something like it.</p><p><a href=https://willfaught.com/2014/07/10/log-structured-storage/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-07-10:/2014/07/10/log-structured-storage/</guid><link>http://blog.notdot.net/2009/12/Damn-Cool-Algorithms-Log-structured-storage</link><atom:link href="http://blog.notdot.net/2009/12/Damn-Cool-Algorithms-Log-structured-storage" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 10 Jul 2014 09:24:59 -0700</pubDate><title>Log Structured Storage</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>The term ZIP, an acronym for Zone Improvement Plan, is properly written in capital letters and was chosen to suggest that the mail travels more efficiently, and therefore more quickly (zipping along), when senders use the code in the postal address.</p></blockquote><p>I don&rsquo;t think I ever knew it was an acronym.</p><p><a href=https://willfaught.com/2014/07/06/zone-improvement-plan/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-07-06:/2014/07/06/zone-improvement-plan/</guid><link>https://en.wikipedia.org/wiki/ZIP_code</link><atom:link href="https://en.wikipedia.org/wiki/ZIP_code" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Jul 2014 00:35:14 -0700</pubDate><title>Zone Improvement Plan</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>John Gruber:</p><blockquote><p>Apple, Google, and Microsoft each offer all three things: devices, services, and platforms. But each has a different starting point. With Apple it&rsquo;s the device. With Microsoft it&rsquo;s the platform. With Google it&rsquo;s the services.</p><p>And thus all three companies can brag about things that only they can achieve. What Cook is arguing, and which I would say last week&rsquo;s WWDC exemplified more so than at any point since the original iPhone in 2007, is that there are more advantages to Apple&rsquo;s approach.</p><p>Or, better put, there are potentially more advantages to Apple&rsquo;s approach, and Tim Cook seems maniacally focused on tapping into that potential.</p></blockquote><p><a href=https://willfaught.com/2014/06/18/only-apple/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-06-18:/2014/06/18/only-apple/</guid><link>https://daringfireball.net/2014/06/only_apple</link><atom:link href="https://daringfireball.net/2014/06/only_apple" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 18 Jun 2014 11:15:58 -0700</pubDate><title>“Only Apple”</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An interesting overview of the Glasgow Haskell Compiler. I had no idea about some of this stuff.</p><p>On optimizing the performance of trivial functions:</p><blockquote><p>If every use of such a function really required a function call, efficiency would be terrible. One solution is to make the compiler treat certain functions specially; another is to use a pre-processor to replace a &ldquo;call&rdquo; with the desired inline code. All of these solutions are unsatisfactory in one way or another, especially as another solution is so obvious: simply inline the function. To &ldquo;inline a function&rdquo; means to replace the call by a copy of the function body, suitably instantiating its parameters.</p></blockquote><blockquote><p>In GHC we have systematically adopted this approach. Virtually nothing is built into the compiler. Instead, we define as much as possible in libraries, and use aggressive inlining to eliminate the overheads. This means that programmers can define their own libraries that will be inlined and optimised as well as the ones that come with GHC.</p></blockquote><p>On rewrite rules (basically, macros):</p><blockquote><p>The entire rule is a pragma, introduced by {-# RULES. The rule says that whenever GHC sees the expression (foldr k z (build g)) it should rewrite it to (g k z). This transformation is semantics-preserving, but it takes a research paper to argue that it is, so there is no chance of GHC performing it automatically. Together with a handful of other rules, and some INLINE pragmas, GHC is able to fuse together list-transforming functions. For example, the two loops in (map f (map g xs)) are fused into one.</p></blockquote><p>On lightweight threads:</p><blockquote><p>Green threads, otherwise known as lightweight threads or user-space threads, are a well-known technique for avoiding the overhead of operating system threads. The idea is that threads are managed by the program itself, or a library (in our case, the RTS), rather than by the operating system. Managing threads in user space should be cheaper, because fewer traps into the operating system are required.</p></blockquote><blockquote><p>In the GHC RTS we take full advantage of this idea. A context switch only occurs when the thread is at a safe point, where very little additional state needs to be saved. Because we use accurate GC, the stack of the thread can be moved and expanded or shrunk on demand. Contrast these with OS threads, where every context switch must save the entire processor state, and where stacks are immovable so a large chunk of address space has to be reserved up front for each thread.</p></blockquote><p>It&rsquo;s a great read if you know Haskell. It tries to be understandable by the layperson too and does a pretty good job.</p><p><a href=https://willfaught.com/2014/06/08/the-glasgow-haskell-compiler/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-06-08:/2014/06/08/the-glasgow-haskell-compiler/</guid><link>https://www.aosabook.org/en/ghc.html</link><atom:link href="https://www.aosabook.org/en/ghc.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 08 Jun 2014 17:02:40 -0700</pubDate><title>The Glasgow Haskell Compiler</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://golang.org/doc/faq rel=external>Go FAQ</a>
:</p><blockquote><p>The case-for-visibility rule is unlikely to change however; it&rsquo;s one of our favorite features of Go.</p></blockquote><p>This is one of my least favorite features. Variables are so ugly: <code>strconv.Itoa</code>. Yuck.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-06-06:/2014/06/06/go-export-syntax/</guid><link>https://willfaught.com/2014/06/06/go-export-syntax/</link><atom:link href="https://willfaught.com/2014/06/06/go-export-syntax/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 06 Jun 2014 23:31:09 -0700</pubDate><title>Go Export Syntax</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://golang.org/doc/effective_go.html rel=external>Effective Go</a>
:</p><blockquote><p>The current implementation of the Go runtime will not parallelize this code by default. It dedicates only a single core to user-level processing. An arbitrary number of goroutines can be blocked in system calls, but by default only one can be executing user-level code at any time. It should be smarter and one day it will be smarter […]</p></blockquote><p>So, at best, the default Go runtime can be called non-blocking, but not parallel. I wonder how fair time sharing among goroutines is, if it is at all? Can an infinite loop in a goroutine hog the runtime?</p><blockquote><p>Either run your job with environment variable GOMAXPROCS set to the number of cores to use or import the runtime package and call runtime.GOMAXPROCS(NCPU). A helpful value might be runtime.NumCPU(), which reports the number of logical CPUs on the local machine.</p></blockquote><p>Why doesn&rsquo;t that happen by default?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-06-06:/2014/06/06/go-isnt-so-parallel-after-all/</guid><link>https://willfaught.com/2014/06/06/go-isnt-so-parallel-after-all/</link><atom:link href="https://willfaught.com/2014/06/06/go-isnt-so-parallel-after-all/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 06 Jun 2014 11:20:04 -0700</pubDate><title>Go Isn’t So Parallel After All</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A fascinating explanation of the origin of the modern units of time.</p><p>Also:</p><blockquote><p>Seconds were once derived by dividing astronomical events into smaller parts, with the International System of Units (SI) at one time defining the second as a fraction of the mean solar day and later relating it to the tropical year. This changed in 1967, when the second was redefined as the duration of 9,192,631,770 energy transitions of the cesium atom.</p></blockquote><p>And:</p><blockquote><p>Interestingly, in order to keep atomic time in agreement with astronomical time, leap seconds occasionally must be added to UTC. Thus, not all minutes contain 60 seconds. A few rare minutes, occurring at a rate of about eight per decade, actually contain 61.</p></blockquote><p><a href=https://willfaught.com/2014/06/01/why-is-a-minute-divided-into-60-seconds-an-hour-into-60-minutes-yet-there-are-only-24-hours-in-a-day/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-06-01:/2014/06/01/why-is-a-minute-divided-into-60-seconds-an-hour-into-60-minutes-yet-there-are-only-24-hours-in-a-day/</guid><link>https://www.scientificamerican.com/article/experts-time-division-days-hours-minutes/</link><atom:link href="https://www.scientificamerican.com/article/experts-time-division-days-hours-minutes/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 01 Jun 2014 11:04:18 -0700</pubDate><title>Why Is A Minute Divided Into 60 Seconds, An Hour Into 60 Minutes, Yet There Are Only 24 Hours In A Day?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you&rsquo;re going to advertise an apartment for rent, be sure to:</p><ul><li>Provide an email address. I don&rsquo;t want to wait until you&rsquo;re awake or not eating dinner to contact you.</li><li>Show large pictures of the interior, including the bedrooms and bathrooms.</li><li>Mention if there are fewer dedicated parking spaces than there are bedrooms.</li><li>Mention if there is no microwave.</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-05-26:/2014/05/26/apartment-ad-annoyances/</guid><link>https://willfaught.com/2014/05/26/apartment-ad-annoyances/</link><atom:link href="https://willfaught.com/2014/05/26/apartment-ad-annoyances/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 26 May 2014 19:53:02 -0700</pubDate><title>Apartment Ad Annoyances</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Tim Berners-Lee:</p><blockquote><p>There is a crazy notion that pages produced by scripts have to be located in a &ldquo;cgibin&rdquo; or &ldquo;cgi&rdquo; area. This is exposing the mechanism of how you run your server. You change the mechanism (even keeping the content the same ) and whoops - all your URIs change.</p></blockquote><blockquote><p>[&mldr;]</p></blockquote><blockquote><p>[&mldr;] &ldquo;cgi-bin&rdquo; and &ldquo;oldbrowse&rdquo; and &ldquo;.pl&rdquo; all point to bits of how-we-do-it-now.</p></blockquote><p>Says the page ending in <code>.html</code>.</p><p><a href=https://willfaught.com/2014/05/03/cool-uris-dont-change/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-05-03:/2014/05/03/cool-uris-dont-change/</guid><link>https://www.w3.org/Provider/Style/URI.html</link><atom:link href="https://www.w3.org/Provider/Style/URI.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 03 May 2014 12:13:50 -0700</pubDate><title>Cool URIs Don’t Change</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Produce the binary representation of a float <em>f</em> where 0 &lt; <em>f</em> &lt; 1. Examples:</p><ul><li><code>binary(.5)</code> produces <code>1</code></li><li><code>binary(.25)</code> produces <code>01</code></li><li><code>binary(.75)</code> produces <code>11</code></li><li><code>binary(.875)</code> produces <code>111</code></li></ul><p>Python 2.7:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-python data-lang=python><span style=display:flex><span><span style=color:#cf222e>def</span> <span style=color:#6639ba>binary</span><span style=color:#1f2328>(</span>f<span style=color:#1f2328>):</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>if</span> <span style=color:#0550ae>not</span> <span style=color:#1f2328>(</span><span style=color:#0550ae>0</span> <span style=color:#0550ae>&lt;</span> f <span style=color:#0550ae>&lt;</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>):</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>raise</span> ValueError<span style=color:#1f2328>(</span><span style=color:#0a3069>&#39;Must be greater than 0 and less than 1&#39;</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>    symbols <span style=color:#0550ae>=</span> <span style=color:#1f2328>[]</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>while</span> f <span style=color:#0550ae>&gt;</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>        f2 <span style=color:#0550ae>=</span> f <span style=color:#0550ae>-</span> <span style=color:#0550ae>2</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>if</span> f2 <span style=color:#0550ae>&gt;=</span> <span style=color:#0550ae>1</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>            symbols<span style=color:#0550ae>.</span>append<span style=color:#1f2328>(</span><span style=color:#0550ae>1</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>            f <span style=color:#0550ae>=</span> f2 <span style=color:#0550ae>-</span> <span style=color:#0550ae>1</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>else</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>            symbols<span style=color:#0550ae>.</span>append<span style=color:#1f2328>(</span><span style=color:#0550ae>0</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>            f <span style=color:#0550ae>=</span> f2
</span></span><span style=display:flex><span>    <span style=color:#cf222e>return</span> <span style=color:#0a3069>&#39;&#39;</span><span style=color:#0550ae>.</span>join<span style=color:#1f2328>(</span><span style=color:#6639ba>str</span><span style=color:#1f2328>(</span>x<span style=color:#1f2328>)</span> <span style=color:#cf222e>for</span> x <span style=color:#0550ae>in</span> symbols<span style=color:#1f2328>)</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-04-01:/2014/04/01/float-binary-representation/</guid><link>https://willfaught.com/2014/04/01/float-binary-representation/</link><atom:link href="https://willfaught.com/2014/04/01/float-binary-representation/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 01 Apr 2014 21:37:34 -0700</pubDate><title>Float Binary Representation</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Examples:</p><pre tabindex=0><code>X

 X
X X
 X

  X
 X X
X   X
 X X
  X

   X
  X X
 X   X
X     X
 X   X
  X X
   X</code></pre><p>Python:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-python data-lang=python><span style=display:flex><span><span style=color:#cf222e>def</span> <span style=color:#6639ba>diamond</span><span style=color:#1f2328>(</span>height<span style=color:#1f2328>):</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>if</span> height <span style=color:#0550ae>%</span> <span style=color:#0550ae>2</span> <span style=color:#0550ae>==</span> <span style=color:#0550ae>0</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>raise</span> ValueError<span style=color:#1f2328>(</span><span style=color:#0a3069>&#39;height must be odd&#39;</span><span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>    half_height <span style=color:#0550ae>=</span> height <span style=color:#0550ae>/</span> <span style=color:#0550ae>2</span>
</span></span><span style=display:flex><span>    <span style=color:#cf222e>for</span> row <span style=color:#0550ae>in</span> xrange<span style=color:#1f2328>(</span>height<span style=color:#1f2328>):</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>if</span> row <span style=color:#0550ae>&lt;=</span> half_height<span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>            indent <span style=color:#0550ae>=</span> half_height <span style=color:#0550ae>-</span> row
</span></span><span style=display:flex><span>        <span style=color:#cf222e>else</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>            indent <span style=color:#0550ae>=</span> row <span style=color:#0550ae>-</span> half_height
</span></span><span style=display:flex><span>        <span style=color:#cf222e>if</span> row <span style=color:#0550ae>&lt;=</span> half_height<span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>            fill <span style=color:#0550ae>=</span> <span style=color:#0550ae>0</span> <span style=color:#cf222e>if</span> row <span style=color:#0550ae>==</span> <span style=color:#0550ae>0</span> <span style=color:#cf222e>else</span> row <span style=color:#0550ae>-</span> <span style=color:#0550ae>2</span> <span style=color:#0550ae>-</span> <span style=color:#0550ae>1</span>
</span></span><span style=display:flex><span>        <span style=color:#cf222e>else</span><span style=color:#1f2328>:</span>
</span></span><span style=display:flex><span>            fill <span style=color:#0550ae>=</span> <span style=color:#0550ae>0</span> <span style=color:#cf222e>if</span> row <span style=color:#0550ae>==</span> height <span style=color:#0550ae>-</span> <span style=color:#0550ae>1</span> <span style=color:#cf222e>else</span> <span style=color:#1f2328>(</span>height <span style=color:#0550ae>-</span> <span style=color:#0550ae>1</span> <span style=color:#0550ae>-</span> row<span style=color:#1f2328>)</span> <span style=color:#0550ae>-</span> <span style=color:#0550ae>2</span> <span style=color:#0550ae>-</span> <span style=color:#0550ae>1</span>
</span></span><span style=display:flex><span>        left <span style=color:#0550ae>=</span> <span style=color:#0a3069>&#39;</span><span style=color:#0a3069>%s</span><span style=color:#0a3069>X&#39;</span> <span style=color:#0550ae>%</span> <span style=color:#1f2328>(</span><span style=color:#0a3069>&#39; &#39;</span> <span style=color:#0550ae>-</span> indent<span style=color:#1f2328>)</span>
</span></span><span style=display:flex><span>        right <span style=color:#0550ae>=</span> <span style=color:#0a3069>&#39;</span><span style=color:#0a3069>%s</span><span style=color:#0a3069>X&#39;</span> <span style=color:#0550ae>%</span> <span style=color:#1f2328>(</span><span style=color:#0a3069>&#39; &#39;</span> <span style=color:#0550ae>-</span> fill<span style=color:#1f2328>)</span> <span style=color:#cf222e>if</span> fill <span style=color:#cf222e>else</span> <span style=color:#0a3069>&#39;&#39;</span>
</span></span><span style=display:flex><span>        <span style=color:#6639ba>print</span> left <span style=color:#0550ae>+</span> right</span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2014-04-01:/2014/04/01/print-equilateral-diamonds/</guid><link>https://willfaught.com/2014/04/01/print-equilateral-diamonds/</link><atom:link href="https://willfaught.com/2014/04/01/print-equilateral-diamonds/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 01 Apr 2014 14:25:52 -0700</pubDate><title>Print Equilateral Diamonds</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/pS5peqApgUA?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>From <a href=https://en.wikipedia.org/wiki/Daigo_Umehara rel=external>Wikipedia</a>
:</p><blockquote><p>Umehara started becoming famous internationally from the YouTube video clips of his match in the Losers bracket final in Evolution Championship Series 2004&rsquo;s Street Fighter III: 3rd Strike competition where he made a dramatic comeback against Justin Wong&rsquo;s Chun-Li. In the final round of match 1, Umehara&rsquo;s Ken was down to his last pixel of vitality. At this point, any special attack would knock Umehara&rsquo;s character out if connected, since special attacks deal chip damage even when blocked. In an attempt to win the round, Wong attempted to hit Umehara&rsquo;s Ken with Chun-Li&rsquo;s multihit Super Art move Houyoku-sen. However, instead of avoiding it, Umehara chose to &ldquo;Parry,&rdquo; a technique whereby an incoming attack is blocked without the player losing any health, but by doing so requires moving toward opponent&rsquo;s direction in the same time a hit lands, within four of thirty frames of the impact animation. After the move was launched, not only were all 15 hits parried, but Umehara also managed to get into a good position to make a powerful attacking combo that knocked Chun-Li out instead. This moment, and the ecstatic cheering of the spectators that followed, was recorded and later spread on the Internet, gaining immense popularity. In 2011, Kotaku ranked it first place in its list of &ldquo;The 10 Best Moments in Pro-Gaming History&rdquo;. The excitement of the cheering audience is palpable. Quite thrilling!</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-11-25:/2013/11/25/epic-comeback/</guid><link>https://willfaught.com/2013/11/25/epic-comeback/</link><atom:link href="https://willfaught.com/2013/11/25/epic-comeback/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 25 Nov 2013 00:30:00 -0800</pubDate><title>Epic Comeback</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I first heard this story from Dr. Vakalis during a computer science lecture at Cal Poly in San Luis Obispo. He&rsquo;s an excellent and funny story teller, and I really enjoyed this one, so I was disappointed to find out that it&rsquo;s probably not true. Too bad!</p><p><a href=https://willfaught.com/2013/11/07/no-nobel-prize-for-math/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-11-07:/2013/11/07/no-nobel-prize-for-math/</guid><link>https://www.snopes.com/science/nobel.asp</link><atom:link href="https://www.snopes.com/science/nobel.asp" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 07 Nov 2013 23:28:00 -0800</pubDate><title>No Nobel Prize For Math</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Jessica at Today Was Meaningful:</p><blockquote><p>don&rsquo;t change your journey so that it matches someone elses. we need to walk different paths so the whole world can be explored. revel in the differences. and enjoy where you are.</p><p>here. right here.</p></blockquote><p>Great advice.</p><p><a href=https://willfaught.com/2013/10/18/because-im-a-twentysomething/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-10-18:/2013/10/18/because-im-a-twentysomething/</guid><link>https://todaywasmeaningful.wordpress.com/2013/08/06/because-im-a-twentysomething/</link><atom:link href="https://todaywasmeaningful.wordpress.com/2013/08/06/because-im-a-twentysomething/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 18 Oct 2013 18:11:00 -0700</pubDate><title>Because I’m A Twentysomething</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ben Thompson:</p><blockquote><p>With the loss of friction, there is necessarily the loss of everything built on friction, including value, privacy, and livelihoods. And that&rsquo;s only three examples! The Internet is pulling out the foundations of nearly every institution and social more that our society is built upon.</p></blockquote><p>His blog is <em>really</em> good.</p><p><a href=https://willfaught.com/2013/09/08/friction/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-09-08:/2013/09/08/friction/</guid><link>https://stratechery.com/2013/friction/</link><atom:link href="https://stratechery.com/2013/friction/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 08 Sep 2013 20:11:49 -0700</pubDate><title>Friction</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m glad to see a viable open source virtual machine.</p><p><a href=https://willfaught.com/2013/09/03/virtualbox/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-09-03:/2013/09/03/virtualbox/</guid><link>https://www.virtualbox.org</link><atom:link href="https://www.virtualbox.org" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 03 Sep 2013 23:18:07 -0700</pubDate><title>VirtualBox</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I never knew this is how it&rsquo;s done.</p><p><a href=https://willfaught.com/2013/08/30/use-mprotect-to-change-memory-page-permissions/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-08-30:/2013/08/30/use-mprotect-to-change-memory-page-permissions/</guid><link>https://linux.die.net/man/2/mprotect</link><atom:link href="https://linux.die.net/man/2/mprotect" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 30 Aug 2013 00:07:02 -0700</pubDate><title>Use Mprotect To Change Memory Page Permissions</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I also bought these games from the <a href=https://steampowered.com rel=external>Steam Summer Sale</a>
:</p><ul><li>Terraria</li><li>Garry&rsquo;s Mod</li><li>FarCry 2</li><li>Supreme Commander 2</li><li>Alan Wake I was tempted to buy StarForge too, which looks really cool, but I&rsquo;m going to wait until it comes together more.</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-07-22:/2013/07/22/i-couldnt-help-myself/</guid><link>https://willfaught.com/2013/07/22/i-couldnt-help-myself/</link><atom:link href="https://willfaught.com/2013/07/22/i-couldnt-help-myself/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 22 Jul 2013 00:15:00 -0700</pubDate><title>I Couldn’t Help Myself</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Linux distributions should stop separating things into the three directory hierarchies at <code>/</code>, <code>/usr</code>, and <code>/usr/local</code>. Just put all the binaries in <code>/bin</code>, all the libraries in <code>/lib</code>, etc. Why can&rsquo;t that work? There&rsquo;s no need to have files on separate partitions nowadays; it&rsquo;s not like it&rsquo;s running on a toaster. Probably.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-07-16:/2013/07/16/primary-secondary-and-tertiary-directories/</guid><link>https://willfaught.com/2013/07/16/primary-secondary-and-tertiary-directories/</link><atom:link href="https://willfaught.com/2013/07/16/primary-secondary-and-tertiary-directories/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 16 Jul 2013 22:21:39 -0700</pubDate><title>Primary, Secondary, And Tertiary Directories</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you want to run scripts on OpenSUSE when booting or shutting down, use <code>/etc/init.d/boot.local</code> and <code>/etc/init.d/halt.local</code>.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-07-16:/2013/07/16/opensuse-boot-and-shutdown-scripts/</guid><link>https://willfaught.com/2013/07/16/opensuse-boot-and-shutdown-scripts/</link><atom:link href="https://willfaught.com/2013/07/16/opensuse-boot-and-shutdown-scripts/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 16 Jul 2013 22:15:10 -0700</pubDate><title>OpenSUSE Boot And Shutdown Scripts</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I just bought 17 games from the <a href=https://steampowered.com rel=external>Steam Summer Sale</a>
:</p><ul><li>Supreme Commander 2</li><li>Alan Wake</li><li>Empire: Total War</li><li>Star Wars: KOTOR</li><li>Arma II: Combined Operations</li><li>Total War: Shogun 2</li><li>Left 4 Dead 2</li><li>Sins Trinity</li><li>Castle Crashers</li><li>Fallout New Vegas Ultimate</li><li>Kerbal Space Program</li><li>FTL: Faster Than Light</li><li>The Walking Dead</li><li>Sins of a Solar Empire Rebellion</li><li>Hitman Absolution</li><li>FEZ</li><li>System Shock 2 The savings are addictive. I have enough games to last me a couple years!</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-07-16:/2013/07/16/steam-summer-sale/</guid><link>https://willfaught.com/2013/07/16/steam-summer-sale/</link><atom:link href="https://willfaught.com/2013/07/16/steam-summer-sale/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 16 Jul 2013 22:12:40 -0700</pubDate><title>Steam Summer Sale</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Turkey Prime Minister Recep Tayyip Erdogan:</p><blockquote><p>There is now a menace which is called Twitter. The best examples of lies can be found there. To me, social media is the worst menace to society.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-06-03:/2013/06/03/erdogan-on-twitter/</guid><link>https://willfaught.com/2013/06/03/erdogan-on-twitter/</link><atom:link href="https://willfaught.com/2013/06/03/erdogan-on-twitter/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 03 Jun 2013 16:37:02 -0700</pubDate><title>Erdogan On Twitter</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An excellent Xbox One hardware and software analysis by Anand Lal Shimpi:</p><blockquote><p>We&rsquo;re still talking about over 5x the peak theoretical shader performance of the Xbox 360, likely even more given increases in efficiency thanks to AMD&rsquo;s scalar GCN architecture (MS quotes up to 8x better GPU performance) - <em>but there&rsquo;s no escaping the fact that Microsoft has given the Xbox One less GPU hardware than Sony gave the PlayStation 4</em>. Note that unlike the Xbox 360 vs. PS3 era, Sony&rsquo;s hardware advantage here won&rsquo;t need any clever developer work to extract - <em>the architectures are near identical, Sony just has more resources available to use</em>.</p></blockquote><blockquote><p>[&mldr;]</p></blockquote><blockquote><p><em>Sony gave the PS4 50% more raw shader performance, plain and simple</em> (768 SPs @ 800MHz vs. 1152 SPs & 800MHz). Unlike last generation, you don&rsquo;t need to be some sort of Jedi to extract the PS4&rsquo;s potential here. <em>The Xbox One and PS4 architectures are quite similar, Sony just has more hardware under the hood.</em></p></blockquote><blockquote><p>[&mldr;]</p></blockquote><blockquote><p><em>Sony&rsquo;s approach (especially when combined with a beefier GPU) is exactly what you&rsquo;d build if you wanted to give game developers the fastest hardware.</em> Microsoft&rsquo;s approach on the other hand looks a little more broad. The Xbox One still gives game developers a significant performance boost over the previous generation, but also attempts to widen the audience for the console. It&rsquo;s a risky strategy for sure, especially given the similarities in the underlying architectures between the Xbox One and PS4. <em>If the market for high-end game consoles has already hit its peak, then Microsoft&rsquo;s approach is likely the right one from a business standpoint. If the market for dedicated high-end game consoles hasn&rsquo;t peaked however, Microsoft will have to rely even more on the Kinect experience, TV integration and its exclusive franchises to compete.</em></p></blockquote><p>The market for dedicated high-end game consoles hasn&rsquo;t peaked because people who bought a nice HDTV want a premium game experience to go along with it, and they can&rsquo;t get that from PC or mobile games, plain and simple.</p><p>It sounds like PS4 has Xbox One soundly beat on the graphical power front, but the PS3 also had greater graphical power than the Xbox 360, and yet most multi-platform games didn&rsquo;t look much better on PS3 than on Xbox 360. In that case, the PS3 had an architecture whose potential was difficult to maximize. Since the PS4 and Xbox One architectures are so similar, it might be a different story.</p><p><a href=https://willfaught.com/2013/05/27/the-xbox-one-hardware-analysis-comparison-to-playstation-4/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-05-27:/2013/05/27/the-xbox-one-hardware-analysis-comparison-to-playstation-4/</guid><link>https://www.anandtech.com/show/6972/xbox-one-hardware-compared-to-playstation-4</link><atom:link href="https://www.anandtech.com/show/6972/xbox-one-hardware-compared-to-playstation-4" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 May 2013 02:14:00 -0700</pubDate><title>The Xbox One: Hardware Analysis &amp; Comparison To PlayStation 4</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ian Kelly:</p><blockquote><p>Methods implemented in C don&rsquo;t really even
have established argument specs. They just take tuples and dicts and
use the PyArg_Parse* family of functions to unpack them. So
effectively, all built-in methods have the argspec (self, *args,
**keywords)</p></blockquote><p>The signature for <code>Exception.__init__</code> seems to be <code>(self, *args)</code>.</p><p><a href=https://willfaught.com/2013/05/16/signatures-for-built-in-python-methods/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-05-16:/2013/05/16/signatures-for-built-in-python-methods/</guid><link>https://mail.python.org/pipermail/python-list/2012-June/624923.html</link><atom:link href="https://mail.python.org/pipermail/python-list/2012-June/624923.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 16 May 2013 19:50:38 -0700</pubDate><title>Signatures For Built-In Python Methods</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you configure the OS X computer name in <em>System Preferences</em>, <em>Sharing</em>, <em>Computer Name</em>, but it&rsquo;s not reflected by <code>/bin/hostname</code>, then execute <code>sudo scutil --set HostName MYHOSTNAME</code> and restart.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-05-15:/2013/05/15/os-x-computer-name-is-not-the-host-name/</guid><link>https://willfaught.com/2013/05/15/os-x-computer-name-is-not-the-host-name/</link><atom:link href="https://willfaught.com/2013/05/15/os-x-computer-name-is-not-the-host-name/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 15 May 2013 21:54:17 -0700</pubDate><title>OS X Computer Name Is Not The Host Name</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My <code>PS1</code> and <code>PS2</code> Bash prompts: function colorprompt { status="$?" bold="\[\033[1m\]" cyan="\[\033[1;36m\]" red="\[\e[0;31m\]" off="\[\033[m\]" if [ &ldquo;$status&rdquo; -eq 0 ] then export PS1="$bold$cyan$$off " else export PS1="$bold$red$$off " fi export PS2="$bold>$off " } export PROMPT_COMMAND=colorprompt The color of the prompt is cyan if the last exit status was zero, otherwise it&rsquo;s red. I disliked having little space to type commands in deeply nested directories, and I&rsquo;m usually the same user on the same machine, so I only have the prompt <code>$</code> terminator.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-05-13:/2013/05/13/exit-status-colored-bash-prompt/</guid><link>https://willfaught.com/2013/05/13/exit-status-colored-bash-prompt/</link><atom:link href="https://willfaught.com/2013/05/13/exit-status-colored-bash-prompt/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 13 May 2013 23:35:37 -0700</pubDate><title>Exit Status-Colored Bash Prompt</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>&mldr;is one that you already have.</p><p><a href=https://willfaught.com/2013/05/08/the-best-os-x-vnc-client/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-05-08:/2013/05/08/the-best-os-x-vnc-client/</guid><link>http://www.davidtheexpert.com/post.php?id=5</link><atom:link href="http://www.davidtheexpert.com/post.php?id=5" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 08 May 2013 22:26:00 -0700</pubDate><title>The Best OS X VNC Client</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Here are all the pictures of my 2011–2012 Asia backpacking trip:</p><ul><li><a href="https://www.dropbox.com/gallery/18866064/1/South%20Korea%202011?h=9a5f74" rel=external>South Korea</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Japan%202011?h=6116ec" rel=external>Japan</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Hong%20Kong%202011?h=ed2cbc" rel=external>Hong Kong</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Singapore%202011?h=4eca07" rel=external>Singapore</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Vietnam%202011?h=739f41" rel=external>Vietnam</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Taiwan%202011?h=08fa88" rel=external>Taiwan</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Thailand%202012?h=47e9e9" rel=external>Thailand</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Laos%202012?h=133d12" rel=external>Laos</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Cambodia%202012?h=a248de" rel=external>Cambodia</a></li></ul><p><em>Caution: A few pictures are not safe for work.</em></p><p>Read <a href=https://willfaught.com/2011/10/09/adventures-in-asia/>the first post I made on the trip</a>
and browse from there.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-05-04:/2013/05/04/my-20112012-asia-backpacking-trip/</guid><link>https://willfaught.com/2013/05/04/my-20112012-asia-backpacking-trip/</link><atom:link href="https://willfaught.com/2013/05/04/my-20112012-asia-backpacking-trip/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 May 2013 21:47:00 -0700</pubDate><title>My 2011–2012 Asia Backpacking Trip</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>By default, there&rsquo;s no meta key configured for OS X Terminal. For example, you can&rsquo;t move backward one word in Bash. To configure the option key as the meta key, check &ldquo;Use option as meta key&rdquo; in <em>Preferences</em>, <em>Settings</em>, <em>Keyboard</em>.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-05-04:/2013/05/04/os-x-terminal-meta-key/</guid><link>https://willfaught.com/2013/05/04/os-x-terminal-meta-key/</link><atom:link href="https://willfaught.com/2013/05/04/os-x-terminal-meta-key/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 May 2013 19:06:58 -0700</pubDate><title>OS X Terminal Meta Key</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I recently installed Homebrew on OS X and observed that the Homebrew binary path was added to the end of <code>$PATH</code> instead of the beginning, so even though I installed Python with Homebrew, <code>python</code> still resolved to the OS X version. Instead of fixing this in my <code>~/.profile</code> with prepending the Homebrew path to <code>$PATH</code>, I edited <code>/etc/paths</code> and moved the Homebrew path to the first line. Now <code>$PATH</code> always has the Homebrew path first. This is convenient for working in Terminal, but I have to cross my fingers that nothing in OS X breaks.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-04-27:/2013/04/27/homebrew-and-the-os-x-path/</guid><link>https://willfaught.com/2013/04/27/homebrew-and-the-os-x-path/</link><atom:link href="https://willfaught.com/2013/04/27/homebrew-and-the-os-x-path/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 27 Apr 2013 14:54:53 -0700</pubDate><title>Homebrew And The OS X $PATH</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you use OS X, and you use an HTTP forward proxy, and you use command line programs like <code>curl</code> or <code>wget</code> that use the HTTP or HTTPS protocols, then you must set the shell environment variables <code>http_proxy</code> and <code>https_proxy</code> (and their all-caps equivalents). An example of doing this in <code>~/.profile</code>:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#6639ba>export</span> <span style=color:#953800>http_proxy</span><span style=color:#0550ae>=</span><span style=color:#0a3069>&#34;proxy.company.com:3128&#34;</span>
</span></span><span style=display:flex><span><span style=color:#6639ba>export</span> <span style=color:#953800>https_proxy</span><span style=color:#0550ae>=</span><span style=color:#0a3069>&#34;proxy.company.com:3128&#34;</span>
</span></span><span style=display:flex><span><span style=color:#6639ba>export</span> <span style=color:#953800>HTTP_PROXY</span><span style=color:#0550ae>=</span><span style=color:#953800>$http_proxy</span>
</span></span><span style=display:flex><span><span style=color:#6639ba>export</span> <span style=color:#953800>HTTPS_PROXY</span><span style=color:#0550ae>=</span><span style=color:#953800>$https_proxy</span></span></span></code></pre></div><p>If you don&rsquo;t do this, you&rsquo;ll see errors like this:</p><pre tabindex=0><code>$ curl http://www.google.com
curl: (7) couldn&#39;t connect to host</code></pre><p>I believe that these variables also work for other UNIX operating systems.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-04-27:/2013/04/27/os-x-proxy-configuration/</guid><link>https://willfaught.com/2013/04/27/os-x-proxy-configuration/</link><atom:link href="https://willfaught.com/2013/04/27/os-x-proxy-configuration/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 27 Apr 2013 14:47:00 -0700</pubDate><title>OS X Proxy Configuration</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Adam Orth resigned from Microsoft soon after <a href=https://arstechnica.com/gaming/2013/04/adam-always-online-orth-no-longer-employed-at-microsoft/ rel=external>the public relations shit storm he created</a>
. Here are some hilarious parodies that are part of a meme about him and his remarks.</p><p>My favorite:</p><blockquote><p>I&rsquo;m only an idiot when I&rsquo;m online.</p></blockquote><blockquote><p>And I&rsquo;m always online.</p></blockquote><p>I feel bad for the guy. His remarks were obviously taken out of context. He shouldn&rsquo;t have lost his job over this.</p><p><a href=https://willfaught.com/2013/04/11/always-online-adam-orth-meme/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-04-11:/2013/04/11/always-online-adam-orth-meme/</guid><link>http://www.quickmeme.com/Always-Online-Adam-Orth/</link><atom:link href="http://www.quickmeme.com/Always-Online-Adam-Orth/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 11 Apr 2013 23:50:00 -0700</pubDate><title>Always Online Adam Orth Meme</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was delighted to find a short story by Jorge Luis Borges that I hadn&rsquo;t read before. I love his writings, and if you&rsquo;re a software engineer, I bet you&rsquo;d like them too:</p><blockquote><p>He divided the universe into forty categories or genera, these being further subdivided into differences, which were subdivided into species. He assigned to each genus a monosyllable of two letters; to each difference, a consonant; to each species, a vowel. For example: de, which means an element; deb, the first of the elements, fire; deba, a part of the element fire, a flame. In a similar language invented by Letellier (1850) a means animal; ab, mammal; abo, carnivore; aboj, feline; aboje, cat; abi, herbivore; abiv, horse; etc. In the language of Bonifacio Sotos Ochando (1845) imaba means building; imaca, harem; imafe, hospital; imafo, pesthouse; imari, house; imaru, country house; imedo, post; imede, pillar; imego, floor; imela, ceiling; imogo, window; bire, bookbinder; birer, bookbinding.</p></blockquote><p>If you liked this, check out <a href=https://en.wikipedia.org/wiki/Tl%c3%b6n,_Uqbar,_Orbis_Tertius rel=external><em>Tlön, Uqbar, Orbis Tertius</em></a>
.</p><p><a href=https://willfaught.com/2013/04/08/the-analytical-language-of-john-wilkins/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-04-08:/2013/04/08/the-analytical-language-of-john-wilkins/</guid><link>https://www.crockford.com/wrrrld/wilkins.html</link><atom:link href="https://www.crockford.com/wrrrld/wilkins.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 08 Apr 2013 21:31:00 -0700</pubDate><title>The Analytical Language Of John Wilkins</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I decided to buy <em>C++ Primer</em> by Stanley Lippman et al.</p><p><a href=https://willfaught.com/2013/04/08/the-definitive-c-book-guide-and-list/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-04-08:/2013/04/08/the-definitive-c-book-guide-and-list/</guid><link>https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list</link><atom:link href="https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 08 Apr 2013 12:35:00 -0700</pubDate><title>The Definitive C++ Book Guide And List</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Tom Chick:</p><blockquote><p>And once again, the campaign is poorly written, poorly acted, erratically paced, full of pointless upgrades and meaningless choices, crammed full of overproduced cutscenes that fail to relate to the gameplay, and without a shred of creative insight into how to use a real time strategy game to tell a story, much less how to get me to click &ldquo;next mission&rdquo; without heaving a tired sigh. <em>For all their incomparable game design smarts, Blizzard remains one of the worst storytellers in the business, partly for how hard they try and mostly for how spectacularly they fail.</em></p></blockquote><p>Ouch. Doesn&rsquo;t sound worth it, especially if <em>Wings of Liberty</em> has the same multiplayer game.</p><p><a href=https://willfaught.com/2013/03/23/starcraft-ii-heart-of-the-swarm-review/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-23:/2013/03/23/starcraft-ii-heart-of-the-swarm-review/</guid><link>https://www.quartertothree.com/fp/2013/03/14/does-starcraft-ii-really-need-heart-of-the-swarm/</link><atom:link href="https://www.quartertothree.com/fp/2013/03/14/does-starcraft-ii-really-need-heart-of-the-swarm/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 23 Mar 2013 15:19:00 -0700</pubDate><title>StarCraft II: Heart Of The Swarm Review</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Some great software engineering job interview preparation materials.</p><p><a href=https://willfaught.com/2013/03/22/hacking-a-google-interview/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-22:/2013/03/22/hacking-a-google-interview/</guid><link>https://courses.csail.mit.edu/iap/interview/materials.php</link><atom:link href="https://courses.csail.mit.edu/iap/interview/materials.php" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 22 Mar 2013 17:13:46 -0700</pubDate><title>Hacking A Google Interview</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The beauty of XOR is that it&rsquo;s commutative and doing the same XOR twice cancels it out: <code>1 XOR 0 XOR 1 = 0</code>. <code>1 XOR 1 XOR 0 = 0</code>. The solution to this problem is to XOR all the integers together: Given an unsorted integer array, where every integer occurs twice except one, which occurs once, find the single integer.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-21:/2013/03/21/the-beauty-of-xor/</guid><link>https://willfaught.com/2013/03/21/the-beauty-of-xor/</link><atom:link href="https://willfaught.com/2013/03/21/the-beauty-of-xor/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 21 Mar 2013 18:35:47 -0700</pubDate><title>The Beauty Of XOR</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Given an unbiased coin toss function, implement an unbiased die roll function. You can&rsquo;t. Here&rsquo;s an incorrect solution: Toss the coin three times. There are eight possible outcomes. If you get one of the first six possible outcomes, then use that to represent the die roll. If you get the seventh or eighth possible outcome, then try again. This solution ignores the premise that the coin toss is unbiased, and thus it isn&rsquo;t guaranteed to halt in the case that you keep getting the seventh or eighth possible outcomes. It will probably halt eventually in practice, but you also wouldn&rsquo;t solve it this way in practice either.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-21:/2013/03/21/simulate-a-die-roll-with-coin-tosses/</guid><link>https://willfaught.com/2013/03/21/simulate-a-die-roll-with-coin-tosses/</link><atom:link href="https://willfaught.com/2013/03/21/simulate-a-die-roll-with-coin-tosses/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 21 Mar 2013 17:41:11 -0700</pubDate><title>Simulate A Die Roll With Coin Tosses</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I see what he did there.</p><p><a href=https://willfaught.com/2013/03/21/how-to-generate-a-random-number/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-21:/2013/03/21/how-to-generate-a-random-number/</guid><link>https://xkcd.com/221/</link><atom:link href="https://xkcd.com/221/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 21 Mar 2013 17:08:43 -0700</pubDate><title>How To Generate A Random Number</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>class</span> <span style=color:#1f2328>MinStack</span><span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>elements<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>mins<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>push</span><span style=color:#1f2328>(</span>E<span style=color:#fff> </span>element<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>elements<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>element<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>mins<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span>mins<span style=color:#1f2328>.</span><span style=color:#1f2328>peek</span><span style=color:#1f2328>().</span><span style=color:#1f2328>compareTo</span><span style=color:#1f2328>(</span>element<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span>mins<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>element<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>E<span style=color:#fff> </span><span style=color:#6639ba>pop</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>elements<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>EmptyStackException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>E<span style=color:#fff> </span>element<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>elements<span style=color:#1f2328>.</span><span style=color:#1f2328>pop</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>mins<span style=color:#1f2328>.</span><span style=color:#1f2328>peek</span><span style=color:#1f2328>().</span><span style=color:#1f2328>compareTo</span><span style=color:#1f2328>(</span>element<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span>mins<span style=color:#1f2328>.</span><span style=color:#1f2328>pop</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>element<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>E<span style=color:#fff> </span><span style=color:#6639ba>min</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>mins<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>EmptyStackException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>mins<span style=color:#1f2328>.</span><span style=color:#1f2328>peek</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-21:/2013/03/21/stack-that-tracks-the-minimum-element/</guid><link>https://willfaught.com/2013/03/21/stack-that-tracks-the-minimum-element/</link><atom:link href="https://willfaught.com/2013/03/21/stack-that-tracks-the-minimum-element/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 21 Mar 2013 17:02:01 -0700</pubDate><title>Stack That Tracks The Minimum Element</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>An interesting algorithm for finding a pair of axis-aligned rectangles that overlap. See also <a href=https://en.wikipedia.org/wiki/Sweep_and_prune rel=external>sweep and prune</a>
on Wikipedia.</p><p><a href=https://willfaught.com/2013/03/21/finding-overlapping-axis-aligned-rectangles/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-21:/2013/03/21/finding-overlapping-axis-aligned-rectangles/</guid><link>https://stackoverflow.com/questions/3324880/axisaligned-rectangles-intersection</link><atom:link href="https://stackoverflow.com/questions/3324880/axisaligned-rectangles-intersection" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 21 Mar 2013 15:58:29 -0700</pubDate><title>Finding Overlapping Axis-Aligned Rectangles</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>contains</span><span style=color:#1f2328>(</span>String<span style=color:#fff> </span>string<span style=color:#1f2328>,</span><span style=color:#fff> </span>String<span style=color:#fff> </span>substring<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>string<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span>substring<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>NullPointerException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>sublength<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>substring<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>sublength<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>length<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>string<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>length<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>sublength<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>char</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>cs<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>string<span style=color:#1f2328>.</span><span style=color:#1f2328>toCharArray</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>char</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>subcs<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>substring<span style=color:#1f2328>.</span><span style=color:#1f2328>toCharArray</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>length<span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>++</span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>cs<span style=color:#0550ae>[</span>i<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>subcs<span style=color:#0550ae>[</span>0<span style=color:#0550ae>]</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>j<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>1<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>j<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>sublength<span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>cs<span style=color:#0550ae>[</span>i<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>j<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>subcs<span style=color:#0550ae>[</span>j<span style=color:#0550ae>]</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>++</span>j<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>j<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>sublength<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-20:/2013/03/20/find-a-substring/</guid><link>https://willfaught.com/2013/03/20/find-a-substring/</link><atom:link href="https://willfaught.com/2013/03/20/find-a-substring/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 20 Mar 2013 19:36:23 -0700</pubDate><title>Find A Substring</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>ransom</span><span style=color:#1f2328>(</span>String<span style=color:#fff> </span>note<span style=color:#1f2328>,</span><span style=color:#fff> </span>String<span style=color:#fff> </span>magazine<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>note<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span>magazine<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>NullPointerException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>note<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>magazine<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span>magazine<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>note<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>char</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>cs<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>note<span style=color:#1f2328>.</span><span style=color:#1f2328>toCharArray</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>Map<span style=color:#0550ae>&lt;</span>Char<span style=color:#1f2328>,</span><span style=color:#fff> </span>Integer<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>m<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>HashMap<span style=color:#0550ae>&lt;</span>Char<span style=color:#1f2328>,</span><span style=color:#fff> </span>Integer<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>char</span><span style=color:#fff> </span>c<span style=color:#1f2328>:</span><span style=color:#fff> </span>cs<span style=color:#1f2328>)</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>containsKey</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>))</span><span style=color:#fff> </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>put</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>,</span><span style=color:#fff> </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>get</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>1<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>else</span><span style=color:#fff> </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>put</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>,</span><span style=color:#fff> </span>1<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>cs<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>magazine<span style=color:#1f2328>.</span><span style=color:#1f2328>toCharArray</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>char</span><span style=color:#fff> </span>c<span style=color:#1f2328>:</span><span style=color:#fff> </span>cs<span style=color:#1f2328>)</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>containsKey</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>))</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>get</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>i<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>1<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>remove</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>break</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#1f2328>}</span><span style=color:#fff> </span><span style=color:#cf222e>else</span><span style=color:#fff> </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>put</span><span style=color:#1f2328>(</span>c<span style=color:#1f2328>,</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-20:/2013/03/20/can-you-make-a-ransom-note-from-a-magazine/</guid><link>https://willfaught.com/2013/03/20/can-you-make-a-ransom-note-from-a-magazine/</link><atom:link href="https://willfaught.com/2013/03/20/can-you-make-a-ransom-note-from-a-magazine/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 20 Mar 2013 18:59:17 -0700</pubDate><title>Can You Make A Ransom Note From A Magazine?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>power2</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>x<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>x<span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span>0<span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>x<span style=color:#fff> </span><span style=color:#0550ae>&amp;</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>x<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#1f2328>))</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>A power of two must be greater than zero.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-20:/2013/03/20/is-an-integer-a-power-of-two/</guid><link>https://willfaught.com/2013/03/20/is-an-integer-a-power-of-two/</link><atom:link href="https://willfaught.com/2013/03/20/is-an-integer-a-power-of-two/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 20 Mar 2013 17:47:00 -0700</pubDate><title>Is An Integer A Power Of Two?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>int</span><span style=color:#fff> </span><span style=color:#6639ba>atoi</span><span style=color:#1f2328>(</span>String<span style=color:#fff> </span>s<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>s<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>NullPointerException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>length<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>s<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>length<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>NumberFormatException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>char</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>c<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>s<span style=color:#1f2328>.</span><span style=color:#1f2328>toCharArray</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span>negative<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>c<span style=color:#0550ae>[</span>0<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#0a3069>&#39;-&#39;</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>negative<span style=color:#fff> </span><span style=color:#0550ae>?</span><span style=color:#fff> </span>1<span style=color:#fff> </span><span style=color:#1f2328>:</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>length<span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>++</span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>Character<span style=color:#1f2328>.</span><span style=color:#1f2328>isDigit</span><span style=color:#1f2328>(</span>c<span style=color:#0550ae>[</span>i<span style=color:#0550ae>]</span><span style=color:#1f2328>))</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>NumberFormatException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>10<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>c<span style=color:#0550ae>[</span>i<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span><span style=color:#0a3069>&#39;0&#39;</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>negative<span style=color:#fff> </span><span style=color:#0550ae>?</span><span style=color:#fff> </span><span style=color:#0550ae>-</span>n<span style=color:#fff> </span><span style=color:#1f2328>:</span><span style=color:#fff> </span>n<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-19:/2013/03/19/parse-a-signed-integer/</guid><link>https://willfaught.com/2013/03/19/parse-a-signed-integer/</link><atom:link href="https://willfaught.com/2013/03/19/parse-a-signed-integer/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 19 Mar 2013 18:25:01 -0700</pubDate><title>Parse A Signed Integer</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Refer to member variables that enclose larger scopes by the class name to which they belong. For example, the following statement accesses the member variable of the class <code>ShadowTest</code> from the method <code>methodInFirstLevel</code>:</p></blockquote><blockquote><p><code>System.out.println("ShadowTest.this.x = " + ShadowTest.this.x);</code></p></blockquote><p>Just learned about this. I guess it doesn&rsquo;t come up often.</p><p><a href=https://willfaught.com/2013/03/19/member-variables-in-outer-class-scopes/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-19:/2013/03/19/member-variables-in-outer-class-scopes/</guid><link>https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html</link><atom:link href="https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 19 Mar 2013 15:22:46 -0700</pubDate><title>Member Variables In Outer Class Scopes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>class</span> <span style=color:#1f2328>Node</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>value<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>Node<span style=color:#fff> </span>left<span style=color:#1f2328>,</span><span style=color:#fff> </span>right<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>static</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>mirror</span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>x<span style=color:#1f2328>,</span><span style=color:#fff> </span>Node<span style=color:#fff> </span>y<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>x<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>y<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>x<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span>y<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>x<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>y<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>mirror<span style=color:#1f2328>(</span>x<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>,</span><span style=color:#fff> </span>y<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>mirror<span style=color:#1f2328>(</span>x<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>,</span><span style=color:#fff> </span>y<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-11:/2013/03/11/binary-tree-mirror-equals/</guid><link>https://willfaught.com/2013/03/11/binary-tree-mirror-equals/</link><atom:link href="https://willfaught.com/2013/03/11/binary-tree-mirror-equals/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 11 Mar 2013 19:21:00 -0700</pubDate><title>Binary Tree Mirror Equals</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Adrian Quark proving the Fisher–Yates shuffle is unbiased:</p><blockquote><p>Only later did I prove to myself that the current-or-later algorithm works. Think about the last element in an array of size n. What are the odds that it ends up at index 1? Obviously, 1/n. What about index 2? This is a bit trickier, since it&rsquo;s a compound probability: we have to multiply the odds of not swapping with 1 by the odds of then swapping with 2, to find the probability of the element actually ending up at 2. In other words, (n-1)/n - 1/(n-1) = 1/n. Similar math shows that there is an equal probability of swapping with 3, 4, etc, and you can do the same for other elements in the array besides the last.</p></blockquote><p>There&rsquo;s also a proof of why swapping with any other index is biased.</p><p><a href=https://willfaught.com/2013/03/11/shuffling-arrays-and-bias/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-11:/2013/03/11/shuffling-arrays-and-bias/</guid><link>https://adrianquark.blogspot.com/2008/09/how-to-shuffle-array-correctly.html</link><atom:link href="https://adrianquark.blogspot.com/2008/09/how-to-shuffle-array-correctly.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 11 Mar 2013 17:31:00 -0700</pubDate><title>Shuffling Arrays And Bias</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Methods that take a <code>java.util.concurrent.Executor</code> might not know if it&rsquo;s an <code>ExecutorService</code>, so you have to call <code>ExecutorService.shutdown()</code> yourself.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-09:/2013/03/09/remember-to-shut-down-executorservice/</guid><link>https://willfaught.com/2013/03/09/remember-to-shut-down-executorservice/</link><atom:link href="https://willfaught.com/2013/03/09/remember-to-shut-down-executorservice/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 09 Mar 2013 16:02:00 -0800</pubDate><title>Remember To Shut Down ExecutorService</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My favorites so far:</p><ul><li><a href=http://www.quickmeme.com/meme/3t7gtd/ rel=external>URL</a></li><li><a href=http://www.quickmeme.com/meme/3ss54z/ rel=external>Husband</a></li><li><a href=http://www.quickmeme.com/meme/35fr5e/ rel=external>Christmas</a></li><li><a href=http://www.quickmeme.com/meme/3reyqs/ rel=external>Pillow</a></li><li><a href=http://www.quickmeme.com/meme/3oe3cq/ rel=external>Soda</a></li><li><a href=http://www.quickmeme.com/meme/369hzo/ rel=external>Computer</a></li><li><a href=http://www.quickmeme.com/meme/35kv9g/ rel=external>Wi-Fi</a></li><li><a href=http://www.quickmeme.com/meme/3s2kzt/ rel=external>Poop</a></li><li><a href=http://www.quickmeme.com/meme/35d3l2/ rel=external>HDTV</a></li><li><a href=http://www.quickmeme.com/meme/35giyu/ rel=external>Radio</a></li></ul><p><a href=https://willfaught.com/2013/03/05/first-world-problems/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-05:/2013/03/05/first-world-problems/</guid><link>http://www.quickmeme.com/First-World-Problems/</link><atom:link href="http://www.quickmeme.com/First-World-Problems/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 05 Mar 2013 12:01:21 -0800</pubDate><title>First World Problems</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>John Gruber:</p><blockquote><p>Where others offer choices, Apple makes decisions. What some of us appreciate is what so rankles the others — that those decisions have so often and consistently been right.</p></blockquote><p><a href=https://willfaught.com/2013/03/04/open-and-shut/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-04:/2013/03/04/open-and-shut/</guid><link>https://daringfireball.net/2013/03/open_and_shut</link><atom:link href="https://daringfireball.net/2013/03/open_and_shut" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 04 Mar 2013 08:35:00 -0800</pubDate><title>Open And Shut</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Josh Bloch:</p><blockquote><p>In one sense, return values should have the opposite behavior of input parameters: It&rsquo;s best to return the most specific applicable collection interface rather than the most general. For example, if you&rsquo;re sure that you&rsquo;ll always return a SortedMap, you should give the relevant method the return type of SortedMap rather than Map. SortedMap instances are more time-consuming to build than ordinary Map instances and are also more powerful. Given that your module has already invested the time to build a SortedMap, it makes good sense to give the user access to its increased power. Furthermore, the user will be able to pass the returned object to methods that demand a SortedMap, as well as those that accept any Map.</p></blockquote><p>Method parameter types should be as general as possible, and method return types should be as specific as possible.</p><p><a href=https://willfaught.com/2013/03/03/method-return-types-should-be-as-specific-as-possible/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-03:/2013/03/03/method-return-types-should-be-as-specific-as-possible/</guid><link>https://docs.oracle.com/javase/tutorial/collections/interoperability/api-design.html</link><atom:link href="https://docs.oracle.com/javase/tutorial/collections/interoperability/api-design.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 03 Mar 2013 12:05:00 -0800</pubDate><title>Method Return Types Should Be As Specific As Possible</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Packed with funny lines like this:</p><blockquote><p>We start off with possibly the least-likable protagonist in the history of video games, Jason Brody, whose only previous work experience was as an Abercrombie & Fitch t-shirt tester. His distinguishing personality traits are &ldquo;having white guy tribal tattoos&rdquo; and &ldquo;possibly wearing shorts.&rdquo; I know personality seems like an odd thing to focus on in a first-person shooter, where the protagonists are traditionally mute and essentially invisible to the player. But silent characters like Link, Master Chief, Samus and Gordon Freeman get their personalities from the people reacting to them, and the way people react to Jason Brody is to humbly cup his messianic balls for having the graciousness to show up on their savage, backward island with all of his beautiful whiteness.</p></blockquote><p>And this:</p><blockquote><p>Ubisoft makes this game, and they have fucked up the back-end like they always do. Their own brand of always-on DRM, Uplay, permeates Far Cry 3. Which means that, if you buy the game through a service that is, itself, essentially pure DRM — like, oh, say, the largest digital game delivery system in existence [Steam] — you get to eat an entire layer-cake of frustration every time you boot up the game. Starting up Far Cry 3 through Steam is like throwing an Inception-themed orgy: Everybody&rsquo;s not only fucking you, but also each other, and themselves, locked forever in an eternal cycle of meta-boning.</p></blockquote><p><a href=https://willfaught.com/2013/03/02/why-you-shouldnt-play-far-cry-3/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-03-02:/2013/03/02/why-you-shouldnt-play-far-cry-3/</guid><link>https://www.cracked.com/blog/3-reasons-you-shouldnt-play-best-video-game-year/</link><atom:link href="https://www.cracked.com/blog/3-reasons-you-shouldnt-play-best-video-game-year/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 02 Mar 2013 09:01:00 -0800</pubDate><title>Why You Shouldn’t Play Far Cry 3</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Bash: #!/bin/bash if [ -z &ldquo;$1&rdquo; ] then echo &ldquo;renamehash: must specify a source directory&rdquo; exit 1 fi if [ -z &ldquo;$2&rdquo; ] then echo &ldquo;renamehash: must specify a target directory&rdquo; exit 1 fi fromdir="$1" todir="$2" if [ ! -d &ldquo;$fromdir&rdquo; ] then echo &ldquo;renamehash: path $1 is not a directory&rdquo; exit 1 fi if [ -e &ldquo;$todir&rdquo; ] then echo &ldquo;renamehash: path $1 already exists&rdquo; exit 1 fi mkdir -p &ldquo;$todir&rdquo; find &ldquo;$fromdir&rdquo; -type f -not -name .DS_Store | while read f do oldpath="$f" file=<code>basename "$oldpath"</code> extension="${file##*.}" oldsum=<code>sha1sum -b "$oldpath" | cut -d " " -f 1</code> newpath="$todir/$oldsum" if [[ &ldquo;$file&rdquo; == <em>"."</em> ]] then newpath="$newpath.$extension" fi if [ ! -e &ldquo;$newpath&rdquo; ] then ln &ldquo;$oldpath&rdquo; &ldquo;$newpath&rdquo; fi done You must have <code>sha1sum</code> installed. It operates on whole directories. It ignores .DS_Store because I use a Mac. It makes hard links in a new directory to keep things simple.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-02-25:/2013/02/25/rename-files-to-their-checksums/</guid><link>https://willfaught.com/2013/02/25/rename-files-to-their-checksums/</link><atom:link href="https://willfaught.com/2013/02/25/rename-files-to-their-checksums/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 25 Feb 2013 20:34:00 -0800</pubDate><title>Rename Files To Their Checksums</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Software sanity tests are commonly conflated with smoke tests. A smoke test determines whether it is possible to continue testing, as opposed to whether it is reasonable. A software smoke test determines whether the program launches and whether its interfaces are accessible and responsive (for example, the responsiveness of a web page or an input button). If the smoke test fails, it is impossible to conduct a sanity test. In contrast, the ideal sanity test exercises the smallest subset of application functions needed to determine whether the application logic is generally functional and correct (for example, an interest rate calculation for a financial application). If the sanity test fails, it is not reasonable to attempt more rigorous testing. Both sanity tests and smoke tests are ways to avoid wasting time and effort by quickly determining whether an application is too flawed to merit any rigorous testing.</p></blockquote><p><a href=https://willfaught.com/2013/02/18/smoke-tests-vs.-sanity-tests/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-02-18:/2013/02/18/smoke-tests-vs.-sanity-tests/</guid><link>https://en.wikipedia.org/wiki/Sanity_testing</link><atom:link href="https://en.wikipedia.org/wiki/Sanity_testing" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 18 Feb 2013 18:04:00 -0800</pubDate><title>Smoke Tests Vs. Sanity Tests</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Best explanation I&rsquo;ve seen yet of why Java&rsquo;s <code>Object.wait</code>/<code>notify</code>/<code>notifyAll</code> must be synchronized on the same <code>Object</code> instance, by Chris Smith:</p><blockquote><p><code>wait()</code> isn&rsquo;t strictly guaranteed to do anything at all. Something
called &ldquo;spurious wakeups&rdquo; might occur. That is, a call to wait() can
return at any time without any good reason. So a good rule of thumb for
using wait() is that you should consider it to be nothing but an
optimization. If a program issn&rsquo;t correct already (and assuming that
thread starvation is not occurring), calling wait() can NOT make a
program correct. However, it certainly can make a program incorrect!</p></blockquote><blockquote><p>So we need to start out thinking of how we&rsquo;d write the code without wait
at all. So how do you you wait for something is wait() doesn&rsquo;t do
anything? Easy&mldr; you do a busy-wait:</p></blockquote><blockquote><p><code>while (!thingImWaitingFor()) /* DO NOTHING */;</code></p></blockquote><blockquote><p>This uses 100% of the CPU power available, of course, and performance
horribly. The optimization is this:</p></blockquote><blockquote><p><code>while (!thingImWaitingFor()) wait();</code></p></blockquote><blockquote><p>That explains the need for a &ldquo;predicate&rdquo;, which in this case is
<code>!thingImWaitingFor()</code>. Next, you need an absolute guarantee that the
waiter and the notifier agree about the state of the predicate. The
waiter checks the state of the predicate at some point slightly BEFORE
it goes to sleep, but it depends for correctness on the predicate being
true WHEN it goes to sleep. There&rsquo;s a period of vulnerability between
those two events, which can break the program.</p></blockquote><blockquote><p>You need that period of vulnerability to be protected by a synchronized
block. If the waiter didn&rsquo;t synchronize, then any old bit of code might
change the predicate just before it goes to sleep, and then we&rsquo;re
certainly in trouble. If the notifier didn&rsquo;t synchronize, then it could
change the predicate even though the waiter is holding the lock&mldr; and
we&rsquo;d still have trouble.</p></blockquote><p><a href=https://willfaught.com/2013/02/06/why-javas-object.wait/notify/notifyall-must-be-synchronized/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-02-06:/2013/02/06/why-javas-object.wait/notify/notifyall-must-be-synchronized/</guid><link>https://www.velocityreviews.com/forums/t149170-why-synchronized-with-wait-notify.html</link><atom:link href="https://www.velocityreviews.com/forums/t149170-why-synchronized-with-wait-notify.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 06 Feb 2013 17:16:00 -0800</pubDate><title>Why Java’s Object.wait/notify/notifyAll Must Be Synchronized</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<ul><li>Strings in switch statements</li><li>Binary number literals</li><li>Integral literal digit group separators, e.g. 999_999_999</li><li>Generic type inference</li><li>Catch statement handling multiple exception types</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-02-05:/2013/02/05/nice-additions-with-java-7/</guid><link>https://willfaught.com/2013/02/05/nice-additions-with-java-7/</link><atom:link href="https://willfaught.com/2013/02/05/nice-additions-with-java-7/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 05 Feb 2013 01:02:00 -0800</pubDate><title>Nice Additions With Java 7</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Time in nanoseconds of common operations like system calls, context switches, forks, L1/L2 cache references, disk seeks, etc.</p><p><a href=https://willfaught.com/2013/02/03/performance-numbers-useful-to-software-engineers/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-02-03:/2013/02/03/performance-numbers-useful-to-software-engineers/</guid><link>https://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/</link><atom:link href="https://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 03 Feb 2013 17:19:00 -0800</pubDate><title>Performance Numbers Useful To Software Engineers</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Longest contiguous subarray of a signed int array that sums to zero or greater:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>int</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span><span style=color:#6639ba>longest</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>a<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>a<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>longestIndex<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#0550ae>-</span>1<span style=color:#1f2328>,</span><span style=color:#fff> </span>longestLength<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>a<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>++</span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>sum<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>length<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>j<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>i<span style=color:#1f2328>;</span><span style=color:#fff> </span>j<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>a<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>++</span>j<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>sum<span style=color:#fff> </span><span style=color:#0550ae>+=</span><span style=color:#fff> </span>a<span style=color:#0550ae>[</span>j<span style=color:#0550ae>]</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#0550ae>++</span>length<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>sum<span style=color:#fff> </span><span style=color:#0550ae>&gt;=</span><span style=color:#fff> </span>0<span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>length<span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>longestLength<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>longestIndex<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>i<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>longestLength<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>length<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>longestIndex<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#0550ae>-</span>1<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>int</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>b<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#0550ae>[</span>longestLength<span style=color:#0550ae>]</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>longestLength<span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>++</span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span>b<span style=color:#0550ae>[</span>i<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>a<span style=color:#0550ae>[</span>i<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>longestIndex<span style=color:#0550ae>]</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>b<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>I realize there&rsquo;s a similar O(<em>n</em> log <em>n</em>) algorithm by Jon Bentley, but I haven&rsquo;t studied it yet.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-31:/2013/01/31/longest-contiguous-subarray/</guid><link>https://willfaught.com/2013/01/31/longest-contiguous-subarray/</link><atom:link href="https://willfaught.com/2013/01/31/longest-contiguous-subarray/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 31 Jan 2013 00:01:00 -0800</pubDate><title>Longest Contiguous Subarray</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>The trace of a traversal [of a binary tree] is called a sequentialization of the tree. No one sequentialisation according to pre-, in- or post-order describes the underlying tree uniquely, but any combination of two types of sequentialisation does. Any two sequentializations of a binary tree can uniquely identify it, so you can directly compare those of any two binary trees to determine whether their structure and values are equal.</p></blockquote><p><a href=https://willfaught.com/2013/01/18/binary-tree-sequentializations-as-identities/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-18:/2013/01/18/binary-tree-sequentializations-as-identities/</guid><link>https://en.wikipedia.org/wiki/Tree_traversal</link><atom:link href="https://en.wikipedia.org/wiki/Tree_traversal" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 18 Jan 2013 00:15:00 -0800</pubDate><title>Binary Tree Sequentializations As Identities</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>EPSBD is a mnemonic I use to remember five helpful approaches to solving algorithmic problems that I got from <em><a href=https://www.amazon.com/dp/098478280X rel=external>Cracking the Coding Interview</a>
</em>by Gayle McDowell:</p><ol><li>Examplify: Derive rules from examples. To compute the angle between the hour and minute hands in a clock, first derive the rules for computing the angle of each hand separately, then derive the rule for computing the angle between the hands in terms of them.</li><li>Pattern match: Adapt the solution to a similar problem. To find the smallest element in a sorted array that&rsquo;s been rotated, you just need to find the discontinuity where the element order changes, so use binary search to find it.</li><li>Simplify and generalize: Change a constraint to simplify the solution, then generalize it.</li><li>Base case and build: Solve the base cases first, then the cases that build on those.</li><li>Data structure brainstorm: In a process of elimination, apply data structures to a problem to find a fit. Applying lateral thinking and praying for luck also fall under this approach.</li></ol>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-11:/2013/01/11/e-piss-bed/</guid><link>https://willfaught.com/2013/01/11/e-piss-bed/</link><atom:link href="https://willfaught.com/2013/01/11/e-piss-bed/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 11 Jan 2013 22:20:00 -0800</pubDate><title>E Piss Bed</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Half-Life 3 will be announced as a multiplatform title as soon as Sony and Microsoft unveil their next-generation hardware plans.</p></blockquote><p>This sounds plausible. Concurrent launch windows would be perfect for a multi-platform release, and they&rsquo;ve already done a few with the Orange Box and Left 4 Dead games.</p><p>I&rsquo;ve been awaiting this game for years.</p><blockquote><p>Bethesda Game Studios&rsquo; next role-playing game will be announced at E3 2013 and it&rsquo;ll be Fallout 4.</p></blockquote><p>Let me guess: same feel and mechanics as Fallout 3, Fallout: New Vegas, and The Elder Scrolls IV: Oblivion. Been there, done that. Changing the plot and re-skinning everything doesn&rsquo;t count as a new <em>game</em>. There are multiple Monopoly <em>themes</em>, but nobody buys more than one, and nobody thinks of them as different games. Pass.</p><p><a href=https://willfaught.com/2013/01/11/igns-2013-pc-game-predictions/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-11:/2013/01/11/igns-2013-pc-game-predictions/</guid><link>https://www.ign.com/articles/2013/01/10/10-bold-pc-predictions-for-2013</link><atom:link href="https://www.ign.com/articles/2013/01/10/10-bold-pc-predictions-for-2013" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 11 Jan 2013 12:27:00 -0800</pubDate><title>IGN’s 2013 PC Game Predictions</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><p>Recursive solution 1:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>class</span> <span style=color:#1f2328>Node</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>Node<span style=color:#fff> </span>left<span style=color:#1f2328>,</span><span style=color:#fff> </span>right<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>value<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span>first<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>previous<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isBST</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>first<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>isBST<span style=color:#1f2328>(</span><span style=color:#cf222e>this</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isBST</span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>n<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>isBST<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>))</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>first<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>first<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>previous<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff> </span><span style=color:#cf222e>else</span><span style=color:#fff> </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>previous<span style=color:#fff> </span><span style=color:#0550ae>&gt;=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>previous<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>isBST<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Recursive solution 2:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isBST</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>isBST<span style=color:#1f2328>(</span><span style=color:#cf222e>this</span><span style=color:#1f2328>,</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>,</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isBST</span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>n<span style=color:#1f2328>,</span><span style=color:#fff> </span>Integer<span style=color:#fff> </span>min<span style=color:#1f2328>,</span><span style=color:#fff> </span>Integer<span style=color:#fff> </span>max<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>((</span>min<span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#fff> </span><span style=color:#0550ae>&lt;=</span><span style=color:#fff> </span>min<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>max<span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#fff> </span><span style=color:#0550ae>&gt;=</span><span style=color:#fff> </span>max<span style=color:#1f2328>))</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>isBST<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>,</span><span style=color:#fff> </span>min<span style=color:#1f2328>,</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>isBST<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>,</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#1f2328>,</span><span style=color:#fff> </span>max<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Iterative solution:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isBST</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span>first<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>previous<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>Stack<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>nodes<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>Node<span style=color:#fff> </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>this</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>pop</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>first<span style=color:#1f2328>)</span><span style=color:#fff> </span>first<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>else</span><span style=color:#fff> </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>previous<span style=color:#fff> </span><span style=color:#0550ae>&gt;=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>previous<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-06:/2013/01/06/decide-if-a-binary-tree-is-a-binary-search-tree/</guid><link>https://willfaught.com/2013/01/06/decide-if-a-binary-tree-is-a-binary-search-tree/</link><atom:link href="https://willfaught.com/2013/01/06/decide-if-a-binary-tree-is-a-binary-search-tree/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Jan 2013 23:38:00 -0800</pubDate><title>Decide If A Binary Tree Is A Binary Search Tree</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>class</span> <span style=color:#1f2328>Node</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>Node<span style=color:#fff> </span>left<span style=color:#1f2328>,</span><span style=color:#fff> </span>right<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>LinkedList<span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>traverse<span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>LinkedList<span style=color:#0550ae>&lt;</span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;&gt;</span><span style=color:#fff> </span>lists<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>list<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>Queue<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>nodes<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>offer</span><span style=color:#1f2328>(</span><span style=color:#cf222e>this</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>parents<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>1<span style=color:#1f2328>,</span><span style=color:#fff> </span>children<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>parents<span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>Node<span style=color:#fff> </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>remove</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>list<span style=color:#1f2328>.</span><span style=color:#1f2328>add</span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>offer</span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span><span style=color:#0550ae>++</span>children<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>nodes<span style=color:#1f2328>.</span><span style=color:#1f2328>offer</span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span><span style=color:#0550ae>++</span>children<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#0550ae>--</span>parents<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>parents<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>lists<span style=color:#1f2328>.</span><span style=color:#1f2328>add</span><span style=color:#1f2328>(</span>list<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>list<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>parents<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>children<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span>children<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>lists<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>An even simpler solution:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>public</span><span style=color:#fff> </span>LinkedList<span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>traverse<span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>LinkedList<span style=color:#0550ae>&lt;</span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;&gt;</span><span style=color:#fff> </span>lists<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>parents<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>parents<span style=color:#1f2328>.</span><span style=color:#1f2328>add</span><span style=color:#1f2328>(</span><span style=color:#cf222e>this</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>parents<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>lists<span style=color:#1f2328>.</span><span style=color:#1f2328>add</span><span style=color:#1f2328>(</span>parents<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>children<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>parent<span style=color:#fff> </span><span style=color:#1f2328>:</span><span style=color:#fff> </span>parents<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>parent<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span>children<span style=color:#1f2328>.</span><span style=color:#1f2328>add</span><span style=color:#1f2328>(</span>parent<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>parent<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span>children<span style=color:#1f2328>.</span><span style=color:#1f2328>add</span><span style=color:#1f2328>(</span>parent<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>parents<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>children<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>lists<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-06:/2013/01/06/partition-tree-nodes-by-level/</guid><link>https://willfaught.com/2013/01/06/partition-tree-nodes-by-level/</link><atom:link href="https://willfaught.com/2013/01/06/partition-tree-nodes-by-level/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Jan 2013 22:15:00 -0800</pubDate><title>Partition Tree Nodes By Level</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>int</span><span style=color:#fff> </span>left<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#1f2328>...;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#cf222e>int</span><span style=color:#fff> </span>right<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#1f2328>...;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#cf222e>int</span><span style=color:#fff> </span>middle<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>right<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>left<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>/</span><span style=color:#fff> </span>2<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>left<span style=color:#1f2328>;</span></span></span></code></pre></div><p>Alternatively:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>int</span><span style=color:#fff> </span>middle<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>left<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>right<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>/</span><span style=color:#fff> </span>2<span style=color:#1f2328>;</span></span></span></code></pre></div><p>Proof:</p><pre tabindex=0><code>(right - left) / 2 + left = (left + right) / 2
right - left + left * 2 = left + right
right + left = left + right </code></pre><p>The second method is much simpler to understand and compute.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-06:/2013/01/06/compute-the-middle-index/</guid><link>https://willfaught.com/2013/01/06/compute-the-middle-index/</link><atom:link href="https://willfaught.com/2013/01/06/compute-the-middle-index/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Jan 2013 18:02:00 -0800</pubDate><title>Compute The Middle Index</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>class</span> <span style=color:#1f2328>Node</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>Node<span style=color:#fff> </span>left<span style=color:#1f2328>,</span><span style=color:#fff> </span>right<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>value<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>static</span><span style=color:#fff> </span>Node<span style=color:#fff> </span><span style=color:#6639ba>bst</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>a<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>a<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span>a<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>build<span style=color:#1f2328>(</span>a<span style=color:#1f2328>,</span><span style=color:#fff> </span>0<span style=color:#1f2328>,</span><span style=color:#fff> </span>a<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>static</span><span style=color:#fff> </span>Node<span style=color:#fff> </span><span style=color:#6639ba>build</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#0550ae>[]</span><span style=color:#fff> </span>a<span style=color:#1f2328>,</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>left<span style=color:#1f2328>,</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>right<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>left<span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>right<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>middle<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>left<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>right<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>/</span><span style=color:#fff> </span>2<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>Node<span style=color:#fff> </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Node<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>value</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>a<span style=color:#0550ae>[</span>middle<span style=color:#0550ae>]</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>build<span style=color:#1f2328>(</span>a<span style=color:#1f2328>,</span><span style=color:#fff> </span>left<span style=color:#1f2328>,</span><span style=color:#fff> </span>middle<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>build<span style=color:#1f2328>(</span>a<span style=color:#1f2328>,</span><span style=color:#fff> </span>middle<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>1<span style=color:#1f2328>,</span><span style=color:#fff> </span>right<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>n<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-06:/2013/01/06/convert-a-sorted-array-to-a-binary-search-tree/</guid><link>https://willfaught.com/2013/01/06/convert-a-sorted-array-to-a-binary-search-tree/</link><atom:link href="https://willfaught.com/2013/01/06/convert-a-sorted-array-to-a-binary-search-tree/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Jan 2013 17:57:05 -0800</pubDate><title>Convert A Sorted Array To A Binary Search Tree</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>class</span> <span style=color:#1f2328>Node</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>Node<span style=color:#0550ae>[]</span><span style=color:#fff> </span>adj<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isPathTo</span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>target<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>target<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>Stack<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>s<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>HashMap<span style=color:#0550ae>&lt;</span>Node<span style=color:#1f2328>,</span><span style=color:#fff> </span>Node<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>m<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>HashMap<span style=color:#0550ae>&lt;</span>Node<span style=color:#1f2328>,</span><span style=color:#fff> </span>Node<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>s<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span><span style=color:#cf222e>this</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>s<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>Node<span style=color:#fff> </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>s<span style=color:#1f2328>.</span><span style=color:#1f2328>pop</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>put</span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>,</span><span style=color:#fff> </span>n<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>n2<span style=color:#fff> </span><span style=color:#1f2328>:</span><span style=color:#fff> </span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>adj</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n2<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span>target<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>                </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n2<span style=color:#fff> </span><span style=color:#0550ae>!=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span><span style=color:#0550ae>!</span>m<span style=color:#1f2328>.</span><span style=color:#1f2328>containsKey</span><span style=color:#1f2328>(</span>n2<span style=color:#1f2328>))</span><span style=color:#fff> </span>s<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>n2<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2013-01-06:/2013/01/06/search-for-a-path-in-a-graph/</guid><link>https://willfaught.com/2013/01/06/search-for-a-path-in-a-graph/</link><atom:link href="https://willfaught.com/2013/01/06/search-for-a-path-in-a-graph/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Jan 2013 16:31:00 -0800</pubDate><title>Search For A Path In A Graph</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>class</span> <span style=color:#1f2328>Node</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>Node<span style=color:#fff> </span>left<span style=color:#1f2328>,</span><span style=color:#fff> </span>right<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>static</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span><span style=color:#6639ba>height</span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>n<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>1<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>Math<span style=color:#1f2328>.</span><span style=color:#1f2328>max</span><span style=color:#1f2328>(</span>height<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>),</span><span style=color:#fff> </span>height<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>));</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>static</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isBalanced</span><span style=color:#1f2328>(</span>Node<span style=color:#fff> </span>n<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>true</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>Math<span style=color:#1f2328>.</span><span style=color:#1f2328>abs</span><span style=color:#1f2328>(</span>height<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>height<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>))</span><span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>1<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#fff> </span><span style=color:#cf222e>false</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>isBalanced<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>left</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>isBalanced<span style=color:#1f2328>(</span>n<span style=color:#1f2328>.</span><span style=color:#1f2328>right</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-12-27:/2012/12/27/decide-whether-a-binary-tree-is-balanced/</guid><link>https://willfaught.com/2012/12/27/decide-whether-a-binary-tree-is-balanced/</link><atom:link href="https://willfaught.com/2012/12/27/decide-whether-a-binary-tree-is-balanced/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 27 Dec 2012 17:37:00 -0800</pubDate><title>Decide Whether A Binary Tree Is Balanced</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>class</span> <span style=color:#1f2328>Tower</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>number<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>Integer<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>disks<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>Integer<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#6639ba>Tower</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>number<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>this</span><span style=color:#1f2328>.</span><span style=color:#1f2328>number</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>number<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>add</span><span style=color:#1f2328>(</span>Integer<span style=color:#fff> </span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>disks<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&gt;=</span><span style=color:#fff> </span>disks<span style=color:#1f2328>.</span><span style=color:#1f2328>peek</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>IllegalArgumentException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>disks<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>i<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>moveTop</span><span style=color:#1f2328>(</span>Tower<span style=color:#fff> </span>to<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>Integer<span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>disks<span style=color:#1f2328>.</span><span style=color:#1f2328>pop</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>to<span style=color:#1f2328>.</span><span style=color:#1f2328>disks</span><span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>i<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>System<span style=color:#1f2328>.</span><span style=color:#1f2328>out</span><span style=color:#1f2328>.</span><span style=color:#1f2328>println</span><span style=color:#1f2328>(</span><span style=color:#0a3069>&#34;Moved &#34;</span><span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span><span style=color:#0a3069>&#34; from Tower &#34;</span><span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>number<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span><span style=color:#0a3069>&#34; to Tower &#34;</span><span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>to<span style=color:#1f2328>.</span><span style=color:#1f2328>number</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>move</span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>n<span style=color:#1f2328>,</span><span style=color:#fff> </span>Tower<span style=color:#fff> </span>to<span style=color:#1f2328>,</span><span style=color:#fff> </span>Tower<span style=color:#fff> </span>temp<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>&lt;=</span><span style=color:#fff> </span>0<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>return</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>to<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#fff> </span><span style=color:#0550ae>||</span><span style=color:#fff> </span>temp<span style=color:#fff> </span><span style=color:#0550ae>==</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>NullPointerException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>move<span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#1f2328>,</span><span style=color:#fff> </span>temp<span style=color:#1f2328>,</span><span style=color:#fff> </span>to<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>moveTop<span style=color:#1f2328>(</span>to<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>temp<span style=color:#1f2328>.</span><span style=color:#1f2328>move</span><span style=color:#1f2328>(</span>n<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#1f2328>,</span><span style=color:#fff> </span>to<span style=color:#1f2328>,</span><span style=color:#fff> </span><span style=color:#cf222e>this</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>static</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>main</span><span style=color:#1f2328>(</span>String<span style=color:#0550ae>[]</span><span style=color:#fff> </span>args<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>n<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>4<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>Tower<span style=color:#0550ae>[]</span><span style=color:#fff> </span>t<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Tower<span style=color:#0550ae>[</span>3<span style=color:#0550ae>]</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>0<span style=color:#1f2328>;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&lt;</span><span style=color:#fff> </span>3<span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>++</span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span>t<span style=color:#0550ae>[</span>i<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Tower<span style=color:#1f2328>(</span>i<span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>1<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>n<span style=color:#1f2328>;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&gt;=</span><span style=color:#fff> </span>1<span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>--</span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span>t<span style=color:#0550ae>[</span>0<span style=color:#0550ae>]</span><span style=color:#1f2328>.</span><span style=color:#1f2328>add</span><span style=color:#1f2328>(</span>i<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>t<span style=color:#0550ae>[</span>0<span style=color:#0550ae>]</span><span style=color:#1f2328>.</span><span style=color:#1f2328>move</span><span style=color:#1f2328>(</span>n<span style=color:#1f2328>,</span><span style=color:#fff> </span>t<span style=color:#0550ae>[</span>2<span style=color:#0550ae>]</span><span style=color:#1f2328>,</span><span style=color:#fff> </span>t<span style=color:#0550ae>[</span>1<span style=color:#0550ae>]</span><span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>System<span style=color:#1f2328>.</span><span style=color:#1f2328>out</span><span style=color:#1f2328>.</span><span style=color:#1f2328>println</span><span style=color:#1f2328>(</span><span style=color:#0a3069>&#34;Tower 1: &#34;</span><span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>t<span style=color:#0550ae>[</span>0<span style=color:#0550ae>]</span><span style=color:#1f2328>.</span><span style=color:#1f2328>disks</span><span style=color:#1f2328>.</span><span style=color:#1f2328>toString</span><span style=color:#1f2328>());</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>System<span style=color:#1f2328>.</span><span style=color:#1f2328>out</span><span style=color:#1f2328>.</span><span style=color:#1f2328>println</span><span style=color:#1f2328>(</span><span style=color:#0a3069>&#34;Tower 2: &#34;</span><span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>t<span style=color:#0550ae>[</span>1<span style=color:#0550ae>]</span><span style=color:#1f2328>.</span><span style=color:#1f2328>disks</span><span style=color:#1f2328>.</span><span style=color:#1f2328>toString</span><span style=color:#1f2328>());</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>System<span style=color:#1f2328>.</span><span style=color:#1f2328>out</span><span style=color:#1f2328>.</span><span style=color:#1f2328>println</span><span style=color:#1f2328>(</span><span style=color:#0a3069>&#34;Tower 3: &#34;</span><span style=color:#fff> </span><span style=color:#0550ae>+</span><span style=color:#fff> </span>t<span style=color:#0550ae>[</span>2<span style=color:#0550ae>]</span><span style=color:#1f2328>.</span><span style=color:#1f2328>disks</span><span style=color:#1f2328>.</span><span style=color:#1f2328>toString</span><span style=color:#1f2328>());</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div><p>Sample output:</p><pre tabindex=0><code>Moved 1 from Tower 1 to Tower 2
Moved 2 from Tower 1 to Tower 3
Moved 1 from Tower 2 to Tower 3
Moved 3 from Tower 1 to Tower 2
Moved 1 from Tower 3 to Tower 1
Moved 2 from Tower 3 to Tower 2
Moved 1 from Tower 1 to Tower 2
Moved 4 from Tower 1 to Tower 3
Moved 1 from Tower 2 to Tower 3
Moved 2 from Tower 2 to Tower 1
Moved 1 from Tower 3 to Tower 1
Moved 3 from Tower 2 to Tower 3
Moved 1 from Tower 1 to Tower 2
Moved 2 from Tower 1 to Tower 3
Moved 1 from Tower 2 to Tower 3
Tower 1: []
Tower 2: []
Tower 3: [4, 3, 2, 1]</code></pre><p>Once I wrapped my head around the algorithm I thought it was very beautiful.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-12-27:/2012/12/27/tower-of-hanoi/</guid><link>https://willfaught.com/2012/12/27/tower-of-hanoi/</link><atom:link href="https://willfaught.com/2012/12/27/tower-of-hanoi/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 27 Dec 2012 01:36:28 -0800</pubDate><title>Tower Of Hanoi</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>class</span> <span style=color:#1f2328>DoubleQueueStack</span><span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>store<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>(),</span><span style=color:#fff> </span>other<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>LinkedList<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>push</span><span style=color:#1f2328>(</span>E<span style=color:#fff> </span>e<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>store<span style=color:#1f2328>.</span><span style=color:#1f2328>offer</span><span style=color:#1f2328>(</span>e<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>E<span style=color:#fff> </span><span style=color:#6639ba>pop</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>store<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>IllegalStateException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>E<span style=color:#fff> </span>e<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>null</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>store<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>e<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>store<span style=color:#1f2328>.</span><span style=color:#1f2328>remove</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>store<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>break</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>            </span>other<span style=color:#1f2328>.</span><span style=color:#1f2328>offer</span><span style=color:#1f2328>(</span>e<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>LinkedList<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>t<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>store<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>store<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>other<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>other<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>t<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>e<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isEmpty</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>store<span style=color:#1f2328>.</span><span style=color:#1f2328>isEmpty</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-12-26:/2012/12/26/a-stack-implemented-with-two-queues/</guid><link>https://willfaught.com/2012/12/26/a-stack-implemented-with-two-queues/</link><atom:link href="https://willfaught.com/2012/12/26/a-stack-implemented-with-two-queues/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 26 Dec 2012 23:49:00 -0800</pubDate><title>A Stack Implemented With Two Queues</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>static</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>shuffle</span><span style=color:#1f2328>(</span>T<span style=color:#0550ae>[]</span><span style=color:#fff> </span>a<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span>Random<span style=color:#fff> </span>r<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Random<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>for</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#cf222e>int</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>a<span style=color:#1f2328>.</span><span style=color:#1f2328>length</span><span style=color:#1f2328>;</span><span style=color:#fff> </span>i<span style=color:#fff> </span><span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>1<span style=color:#1f2328>;</span><span style=color:#fff> </span><span style=color:#0550ae>--</span>i<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>int</span><span style=color:#fff> </span>j<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>r<span style=color:#1f2328>.</span><span style=color:#1f2328>nextInt</span><span style=color:#1f2328>(</span>i<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>T<span style=color:#fff> </span>t<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>a<span style=color:#0550ae>[</span>i<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#0550ae>]</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>a<span style=color:#0550ae>[</span>i<span style=color:#fff> </span><span style=color:#0550ae>-</span><span style=color:#fff> </span>1<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>a<span style=color:#0550ae>[</span>j<span style=color:#0550ae>]</span><span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>a<span style=color:#0550ae>[</span>j<span style=color:#0550ae>]</span><span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span>t<span style=color:#1f2328>;</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-12-22:/2012/12/22/reorder-an-array-randomly/</guid><link>https://willfaught.com/2012/12/22/reorder-an-array-randomly/</link><atom:link href="https://willfaught.com/2012/12/22/reorder-an-array-randomly/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 22 Dec 2012 22:18:00 -0800</pubDate><title>Reorder An Array Randomly</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Java:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>class</span> <span style=color:#1f2328>DoubleStackQueue</span><span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>enqueue<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>(),</span><span style=color:#fff> </span>dequeue<span style=color:#fff> </span><span style=color:#0550ae>=</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>private</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>move</span><span style=color:#1f2328>(</span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>from<span style=color:#1f2328>,</span><span style=color:#fff> </span>Stack<span style=color:#0550ae>&lt;</span>E<span style=color:#0550ae>&gt;</span><span style=color:#fff> </span>to<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>while</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>from<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span>to<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>from<span style=color:#1f2328>.</span><span style=color:#1f2328>pop</span><span style=color:#1f2328>());</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>void</span><span style=color:#fff> </span><span style=color:#6639ba>enqueue</span><span style=color:#1f2328>(</span>E<span style=color:#fff> </span>element<span style=color:#1f2328>)</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>dequeue<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span>move<span style=color:#1f2328>(</span>dequeue<span style=color:#1f2328>,</span><span style=color:#fff> </span>enqueue<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span>enqueue<span style=color:#1f2328>.</span><span style=color:#1f2328>push</span><span style=color:#1f2328>(</span>element<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span>E<span style=color:#fff> </span><span style=color:#6639ba>dequeue</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span>isEmpty<span style=color:#1f2328>())</span><span style=color:#fff> </span><span style=color:#cf222e>throw</span><span style=color:#fff> </span><span style=color:#cf222e>new</span><span style=color:#fff> </span>IllegalStateException<span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>if</span><span style=color:#fff> </span><span style=color:#1f2328>(</span><span style=color:#0550ae>!</span>enqueue<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>())</span><span style=color:#fff> </span>move<span style=color:#1f2328>(</span>enqueue<span style=color:#1f2328>,</span><span style=color:#fff> </span>dequeue<span style=color:#1f2328>);</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>dequeue<span style=color:#1f2328>.</span><span style=color:#1f2328>pop</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#cf222e>public</span><span style=color:#fff> </span><span style=color:#cf222e>boolean</span><span style=color:#fff> </span><span style=color:#6639ba>isEmpty</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#1f2328>{</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>        </span><span style=color:#cf222e>return</span><span style=color:#fff> </span>enqueue<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>()</span><span style=color:#fff> </span><span style=color:#0550ae>&amp;&amp;</span><span style=color:#fff> </span>dequeue<span style=color:#1f2328>.</span><span style=color:#1f2328>empty</span><span style=color:#1f2328>();</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff>    </span><span style=color:#1f2328>}</span><span style=color:#fff>
</span></span></span><span style=display:flex><span><span style=color:#fff></span><span style=color:#1f2328>}</span></span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-12-19:/2012/12/19/a-queue-implemented-with-two-stacks/</guid><link>https://willfaught.com/2012/12/19/a-queue-implemented-with-two-stacks/</link><atom:link href="https://willfaught.com/2012/12/19/a-queue-implemented-with-two-stacks/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 19 Dec 2012 20:39:00 -0800</pubDate><title>A Queue Implemented With Two Stacks</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><ol><li>The network is reliable.</li><li>Latency is zero.</li><li>Bandwidth is infinite.</li><li>The network is secure.</li><li>Topology doesn&rsquo;t change.</li><li>There is one administrator.</li><li>Transport cost is zero.</li><li>The network is homogeneous.</li></ol></blockquote><p><a href=https://willfaught.com/2012/12/17/the-fallacies-of-distributed-computing/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-12-17:/2012/12/17/the-fallacies-of-distributed-computing/</guid><link>https://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing</link><atom:link href="https://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 17 Dec 2012 22:40:28 -0800</pubDate><title>The Fallacies Of Distributed Computing</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Alex Munroe:</p><blockquote><p>Now imagine you meet millions of carpenters using this toolbox who tell you &ldquo;well hey what&rsquo;s the problem with these tools? They&rsquo;re all I&rsquo;ve ever used and they work fine!&rdquo; And the carpenters show you the houses they&rsquo;ve built, where every room is a pentagon and the roof is upside-down. And you knock on the front door and it just collapses inwards and they all yell at you for breaking their door.</p></blockquote><blockquote><p>That&rsquo;s what&rsquo;s wrong with PHP.</p></blockquote><p>Alex goes on to lay out the criteria for a good computer language:</p><blockquote><ul><li>A language must be predictable. It&rsquo;s a medium for expressing human ideas and having a computer execute them, so it&rsquo;s critical that a human&rsquo;s understanding of a program actually be correct.</li></ul></blockquote><blockquote><ul><li>A language must be consistent. Similar things should look similar, different things different. Knowing part of the language should aid in learning and understanding the rest.</li></ul></blockquote><blockquote><ul><li>A language must be concise. New languages exist to reduce the boilerplate inherent in old languages. (We could all write machine code.) A language must thus strive to avoid introducing new boilerplate of its own.</li></ul></blockquote><blockquote><ul><li>A language must be reliable. Languages are tools for solving problems; they should minimize any new problems they introduce. Any &ldquo;gotchas&rdquo; are massive distractions.</li></ul></blockquote><blockquote><ul><li>A language must be debuggable. When something goes wrong, the programmer has to fix it, and we need all the help we can get.</li></ul></blockquote><p>Then demonstrates the various ways that PHP fails these criteria. It&rsquo;s quite persuasive.</p><p><a href=https://willfaught.com/2012/11/08/php-a-fractal-of-bad-design/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-11-08:/2012/11/08/php-a-fractal-of-bad-design/</guid><link>https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/</link><atom:link href="https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 08 Nov 2012 16:56:00 -0800</pubDate><title>PHP: A Fractal Of Bad Design</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/EUXnJraKM3k?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>While I worked at Microsoft, I heard that this video was made by someone who had worked for Microsoft. I haven&rsquo;t verified that, though.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-10-23:/2012/10/23/microsoft-packaging/</guid><link>https://willfaught.com/2012/10/23/microsoft-packaging/</link><atom:link href="https://willfaught.com/2012/10/23/microsoft-packaging/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 23 Oct 2012 21:45:00 -0700</pubDate><title>Microsoft Packaging</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Marco Arment:</p><blockquote><p>Personally, I&rsquo;ve stopped buying extended warranties on almost everything, with the rationale that if I ever actually need to repair something out of warranty and it costs me a much larger amount of money than I would have been spending on extended warranties, I&rsquo;ll start buying them from that point forward.</p></blockquote><p>Makes sense to me.</p><p><a href=https://willfaught.com/2012/10/23/is-applecare-worth-it/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-10-23:/2012/10/23/is-applecare-worth-it/</guid><link>https://www.marco.org/2012/03/07/which-ipad-3-should-i-get</link><atom:link href="https://www.marco.org/2012/03/07/which-ipad-3-should-i-get" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 23 Oct 2012 16:20:00 -0700</pubDate><title>Is AppleCare Worth It?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Damn. I was wrong about the new small iPad name. :)&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-10-23:/2012/10/23/new-ipad-name/</guid><link>https://willfaught.com/2012/10/23/new-ipad-name/</link><atom:link href="https://willfaught.com/2012/10/23/new-ipad-name/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 23 Oct 2012 16:18:00 -0700</pubDate><title>New IPad Name</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The name of the current big iPad suggests that the name of the new small iPad, rumored to be unveiled tomorrow, will be just iPad, not iPad Nano, iPad Air, iPad Mini, or iPad Junior. If Apple had named &ldquo;the new iPad&rdquo; iPad 3, then the new small iPad would have to be named something like iPad Something, iPad 3 Something, or iPad 4 to differentiate it; but they didn&rsquo;t. What seems more probable is that Apple will adopt the naming convention of some of their other products, namely iPod, iMac, MacBook Air, and MacBook Pro, in which a family of related products all share the same name and are differentiated by a simple yet obvious characteristic like storage capacity or screen size: iPod touch 32/64 GB, iMac 24/27", MacBook Air 11/13", and MacBook Pro 13/15". I predict the names of the big and small iPads will henceforth be iPad, 7" or 9" (or 8" and 10" if you round).</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-10-22:/2012/10/22/the-name-of-the-new-small-ipad/</guid><link>https://willfaught.com/2012/10/22/the-name-of-the-new-small-ipad/</link><atom:link href="https://willfaught.com/2012/10/22/the-name-of-the-new-small-ipad/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 22 Oct 2012 17:09:00 -0700</pubDate><title>The Name Of The New Small IPad</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Good lord:</p><blockquote><p><strong>Password Length</strong></p><ul><li>Minimum of 8 characters</li><li>Maximum length of 40 characters</li></ul><p><strong>What It Must Contain</strong></p><p>It must contain at least one character from three of the following lists:</p><ul><li><p>Uppercase Alphabetic (A-Z)</p></li><li><p>Numbers (0-9)</p></li><li><p>Lower case Alphabetic (a-z)</p></li><li><p>These Special Characters are allowed:</p><p>! $ % & , ( ) - + - . / ; : &lt; = > ? [ \ ] ^ _ { | } ~</p></li><li><p>These are some of the characters that are not allowed:</p><p># " @ and the space character</p></li></ul><p>NOTE: A password can be &ldquo;simpler&rdquo; (e.g. CalPolyLearnbyDoingisGreat) - with a minimum of 16 characters.</p><p><strong>What It Cannot Contain</strong></p><ul><li>Any words of 3 or more characters, including foreign words</li><li>Any groups of 3 or more characters of the same character type</li><li>Any names, person, places, or things found in a common dictionary</li><li>Any of your names (first, middle, last), any current Cal Poly username</li><li>Your previous password changed within the last year</li><li>Repetitive characters (sequences)</li></ul></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-10-17:/2012/10/17/absurd-password-rules/</guid><link>https://willfaught.com/2012/10/17/absurd-password-rules/</link><atom:link href="https://willfaught.com/2012/10/17/absurd-password-rules/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 17 Oct 2012 16:44:00 -0700</pubDate><title>Absurd Password Rules</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>There&rsquo;s no easy and obvious way that I could find to download all the songs in iTunes Match (previously purchased, matched, and uploaded) onto an iPhone with iOS 6. (The iTunes app can download only previously purchased songs. This may also apply to iPads.) The way to do it is to create a playlist of all your music, then scroll to the bottom and tap the download button. Simple, but not discoverable. It&rsquo;s shameful that the solution is so indirect.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-10-08:/2012/10/08/how-to-download-all-itunes-match-music-onto-an-iphone-with-ios-6/</guid><link>https://willfaught.com/2012/10/08/how-to-download-all-itunes-match-music-onto-an-iphone-with-ios-6/</link><atom:link href="https://willfaught.com/2012/10/08/how-to-download-all-itunes-match-music-onto-an-iphone-with-ios-6/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 08 Oct 2012 22:53:00 -0700</pubDate><title>How To Download All ITunes Match Music Onto An IPhone With IOS 6</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2012-04-06:/2012/04/06/cambodia-2012-pictures/</guid><link>https://www.dropbox.com/gallery/18866064/1/Cambodia%202012?h=a248de</link><atom:link href="https://www.dropbox.com/gallery/18866064/1/Cambodia%202012?h=a248de" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 06 Apr 2012 20:29:00 -0700</pubDate><title>Cambodia 2012 Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2012-04-06:/2012/04/06/laos-2012-pictures/</guid><link>https://www.dropbox.com/gallery/18866064/1/Laos%202012?h=133d12</link><atom:link href="https://www.dropbox.com/gallery/18866064/1/Laos%202012?h=133d12" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 06 Apr 2012 19:52:00 -0700</pubDate><title>Laos 2012 Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2012-04-06:/2012/04/06/thailand-2012-pictures/</guid><link>https://www.dropbox.com/gallery/18866064/1/Thailand%202012?h=47e9e9</link><atom:link href="https://www.dropbox.com/gallery/18866064/1/Thailand%202012?h=47e9e9" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 06 Apr 2012 18:14:00 -0700</pubDate><title>Thailand 2012 Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I stayed at the Chocolate Box Backpackers hostel for five more days. I was so tired and burned out that I kept mostly to myself and stayed inside. The weather was still wet and dreary, so I wasn&rsquo;t missing out on much outside. I read the web, watched some movies, and otherwise relaxed. On Friday, March 2, I flew from Taipei to Seoul, and then a couple hours later I flew to Seattle, Washington. I arrived nine hours later at 11:30 AM and Tess picked me up, having taken the rest of the day off. I spent the next week or so staying with Tess and her wonderful family in Seattle. It took me about that long to get over my jet lag. I would grow sleepy around 10 or 11 PM at night and wake up naturally around 8 AM, which is very abnormal for me. Tess and I were together when she wasn&rsquo;t at work. On Sunday, March 11, I flew to Sacramento, California. My parents picked me up at the airport and we stopped at In-N-Out for dinner — as we tend to do — on the way home. As I mounted the front steps to our house in Grass Valley, I beheld a hand-written sign hung on it proclaiming, &ldquo;Welcome home, Will!&rdquo; I was home.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-04-04:/2012/04/04/coming-home/</guid><link>https://willfaught.com/2012/04/04/coming-home/</link><atom:link href="https://willfaught.com/2012/04/04/coming-home/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 04 Apr 2012 21:00:00 -0700</pubDate><title>Coming Home</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Let myself sleep in until 1:30 PM. Went for lunch at Modern Toilet with the others in my dorm room at about 4:30 PM. Returned to my hostel to do laundry. Ate a late dinner at McDonald&amp;rsquo;s again. Played on my computer.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/sunday-february-26-2012/</guid><link>https://willfaught.com/2012/02/27/sunday-february-26-2012/</link><atom:link href="https://willfaught.com/2012/02/27/sunday-february-26-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:54:19 -0800</pubDate><title>Sunday, February 26, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rode a tuk tuk from my hostel to the airport. Flew to Taipei with a layover in Kuala Lumpur. Rode a bus to Taipei Main Station. Rode the MRT to Guting station. Walked to my hostel and arrived around 9:30 PM. Ate dinner at a nearby McDonald&amp;rsquo;s (sorry, Tess). Met the others in my dorm room, English teachers from south of Taipei visiting for a long weekend. Played on my computer, then went to bed.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/saturday-february-25-2012/</guid><link>https://willfaught.com/2012/02/27/saturday-february-25-2012/</link><atom:link href="https://willfaught.com/2012/02/27/saturday-february-25-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:50:44 -0800</pubDate><title>Saturday, February 25, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Called Tess to plan my flight to Seattle. Ate lunch at my hostel. Walked to a nearby ATM. Rode a motorbike taxi to the S-21 museum where thousands were detained and tortured for confessions by the Khmer Rouge. Afterward, rode a motorbike taxi to the killing fields just outside of town where thousands were murdered. It was so very sad. Rode a motorbike taxi back to my hostel. Bought a flight ticket to Taipei for the next day and booked a hostel I&amp;rsquo;d stayed at before, Chocolate Box. Ate dinner at my hostel and played on my computer.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/friday-february-24-2012/</guid><link>https://willfaught.com/2012/02/27/friday-february-24-2012/</link><atom:link href="https://willfaught.com/2012/02/27/friday-february-24-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:45:00 -0800</pubDate><title>Friday, February 24, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Checked out of my hostel. Wanted to call Tess, but my ride to the bus terminal was early. Rode a bus to Phnom Penh for six hours. Rode a tuk tuk to my hostel and checked in. Walked around the neighborhood a little, but there was little to see. Ate dinner at my hostel.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/thursday-february-23-2012/</guid><link>https://willfaught.com/2012/02/27/thursday-february-23-2012/</link><atom:link href="https://willfaught.com/2012/02/27/thursday-february-23-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:41:13 -0800</pubDate><title>Thursday, February 23, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Jake drove me to some of the smaller temples. I can&amp;rsquo;t recall which ones, but aside from small features, they were very similar. After seeing temples for two days under a blistering sun, they all started to look alike and I grew weary of it. Returned to the hostel and arranged for a six-hour bus ride to Phnom Penh the next morning.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/wednesday-february-22-2012/</guid><link>https://willfaught.com/2012/02/27/wednesday-february-22-2012/</link><atom:link href="https://willfaught.com/2012/02/27/wednesday-february-22-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:38:00 -0800</pubDate><title>Wednesday, February 22, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Ate breakfast at the hostel. Jake drove me in a tuk tuk to Angkor Wat, Banteay Kdei, Ta Prohm, The Bayon in Angkor Thom, and Phnom Bakheng, to the top of which I hiked for a sunset view. Needless to say, the temples there are exquisite and exciting to explore. My favorite was Angkor Wat, but The Bayon was a close second. I ate dinner at the same street place as the day before. I arranged to have Jake drive me around the next day as well.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/tuesday-february-21-2012/</guid><link>https://willfaught.com/2012/02/27/tuesday-february-21-2012/</link><atom:link href="https://willfaught.com/2012/02/27/tuesday-february-21-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:32:00 -0800</pubDate><title>Tuesday, February 21, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Woke up at 4:30 AM. Flew to Siem Reap, Cambodia. Jake, from my hostel, picked me up at the airport. Checked in, showered, and ate lunch. Arranged a private tuk tuk for seeing the ruins the next day with Jake as my driver. Spent the rest of the day napping and relaxing. Ate dinner with another guy from my dorm named Robin (from Germany). Went to bed early to get up early the next day.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/monday-february-20-2012/</guid><link>https://willfaught.com/2012/02/27/monday-february-20-2012/</link><atom:link href="https://willfaught.com/2012/02/27/monday-february-20-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:21:41 -0800</pubDate><title>Monday, February 20, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Didn&rsquo;t do much. Again, I felt tired, and mostly remained inside and ate at nearby restaurants. One evening I walked to the Mekong River&rsquo;s edge to see the night market there and watch the local people. Ran into a few more people from the group I was with at the river near Vang Vieng. Met a girl in my hostel that I&rsquo;d met before at my hostel in Luang Prabang. Feeling the bandaid on my face was a constant reminder of the river, and I think it put me in a bad mood.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/saturday-sunday-february-18ndash19-2012/</guid><link>https://willfaught.com/2012/02/27/saturday-sunday-february-18ndash19-2012/</link><atom:link href="https://willfaught.com/2012/02/27/saturday-sunday-february-18ndash19-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:17:23 -0800</pubDate><title>Saturday &amp; Sunday, February 18–19, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rode a bus to Vientiane at 10 AM. Walked around with a couple looking for a guesthouse or hostel. Checked into a hostel called Asian World. Ate a croissant for a late lunch and drank a couple Cokes to cool down. Read my guidebook about the city. Ate dinner at a pizza place and ran into a couple from the group I had hung out with at the river at Vang Vieng. Felt sick after eating dinner and went to bed early.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/friday-february-17-2012/</guid><link>https://willfaught.com/2012/02/27/friday-february-17-2012/</link><atom:link href="https://willfaught.com/2012/02/27/friday-february-17-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:12:29 -0800</pubDate><title>Friday, February 17, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ate lunch at a Friends restaurant. Went to the inner tube shop, then rode a tuk tuk with a group of others, including two girls I&rsquo;d met at my hostel in Chiang Mai, to the river. Hung out with that group there for an hour or so, drinking a beer. I&rsquo;d heard stories about how dangerous it was inner tubing there, how people had died falling on rocks while riding zip lines over the river, or how inner tube riders had been hit by bottles attached to ropes that locals working at riverside bars throw at them to reel them in. I&rsquo;d decided to stick to beer only to stay safe, since I was on my own. We got our inner tubes and floated into the current, which took us around a bend where a platform had been erected on which a couple guys were trying to reel in inner tube riders. I kept a wary eye on them to make sure they didn&rsquo;t hit me, but also glanced back at the rest of the group to see whether they were going to stop at the next riverside bar, which was just downstream of the first and rapidly approaching. I was paddling to be closer to the others when I was struck in the face with a bottle thrown by a guy from the second bar. I hadn&rsquo;t seen him winding up. I remember there being an abrupt change of consciousness; I had been paddling, and then my eyes were closed and I was leaning back and the side of my face felt hot. I can&rsquo;t remember if the impact had torn my sunglasses off, or if I took them off when feeling my face, but in either case, they were lost to the bottom of the river, never to be seen again. Slowly I realized what had happened. My hand fell on the rope and closed on it. The adrenaline started pumping, and I was really pissed off. I started to pull and yank on the rope, and I rolled off my inner tube into the water. I think I was trying to get the rope out of the guy&rsquo;s hands out of some sort of vengeance, but I wasn&rsquo;t thinking too clearly. I ended up pulling myself to the river&rsquo;s edge near the guy and started screaming at him somewhat incoherently. I&rsquo;m not even sure he spoke English or understood a word I said. At some point some white guy stood next to the guy who&rsquo;d thrown the bottle and was yelling at me. I didn&rsquo;t know who he was, so I just screamed at him too. Sometimes tourists find jobs at these kinds of touristy places so they can afford to stay there longer, so maybe he worked there? I probably would have gotten out of the water then and escalated things, but I grew aware of my things starting to float away from me. I gathered my inner tube and a flip flop floating nearby, and looked around for my other flip flop. One of the bar employees pointed me to it across the river, and I swam with the inner tube to get it. I kept feeling my face and saw blood on my fingers, so I knew I had to get out. I paddled to a nearby ladder and pulled my inner tube out of the water. I didn&rsquo;t see anyone from my group, so I walked out of the bar to the road and flagged down a tuk tuk and rode it into town. I returned the inner tube, then went to my room to see the damage and clean the injuries. There were several small cuts on my right temple, and a small but deep cut on my right cheekbone. I looked up online when to get stitches, then walked to the hospital. There was a guy there who&rsquo;d also been injured at the river that day. He&rsquo;d been riding a zip line drunk and somehow hit his head when entering the water. He&rsquo;d gotten sixteen stitches in his forehead without anesthesia. A doctor saw me right away and a nurse gave me two stitches without anesthesia. I&rsquo;d never had stitches for an injury before. I was told to get them removed in a week. I went to a Friends restaurant and spent the rest of the afternoon and evening there watching TV and trying not to think about anything. I wanted to move on, so I bought a bus ticket to Vientiane for the next morning. I ran into several people from that group later in Vientiane who were sympathetic. One guy said he was reluctant to go on the river afterward. Thinking back on it, it was a good thing that I didn&rsquo;t get out of the river when I was mad. I was alone and unsteady and didn&rsquo;t speak the language. Getting into a fight with a local, and possibly some douche bag tourist, would have been a disaster. If I had been thinking straight, I would have had the guy who threw the bottle take me to the hospital and pay for everything. If only <em>I hadn&rsquo;t been hit in the head with a bottle</em>. One of the tradeoffs of traveling alone is that no one has your back.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-27:/2012/02/27/thursday-february-16-2012/</guid><link>https://willfaught.com/2012/02/27/thursday-february-16-2012/</link><atom:link href="https://willfaught.com/2012/02/27/thursday-february-16-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Feb 2012 01:07:25 -0800</pubDate><title>Thursday, February 16, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Still felt tired, so I stayed inside mostly and kept to myself. Ate lunch and dinner at restaurants that played Friends. I&amp;rsquo;d forgotten how funny Friends is.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-26:/2012/02/26/wednesday-february-15-2012/</guid><link>https://willfaught.com/2012/02/26/wednesday-february-15-2012/</link><atom:link href="https://willfaught.com/2012/02/26/wednesday-february-15-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 26 Feb 2012 09:33:44 -0800</pubDate><title>Wednesday, February 15, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Moved my things to a private room at the Chilllaos hostel about a block away. Ate lunch at one of the restaurants playing the TV show Friends. Felt very tired, so I stayed in my room all day by myself. Ate dinner at the same place.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-26:/2012/02/26/tuesday-february-14-2012/</guid><link>https://willfaught.com/2012/02/26/tuesday-february-14-2012/</link><atom:link href="https://willfaught.com/2012/02/26/tuesday-february-14-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 26 Feb 2012 09:15:46 -0800</pubDate><title>Tuesday, February 14, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The tour started at 11 AM. All four of us rode a private minibus to the three Plain of Jars sites. &ldquo;Plain&rdquo; is an exaggeration; &ldquo;fields&rdquo; is perhaps more fitting. The first site (called Site 3) was a five minute hike from a parking lot through some dry rice fields and rolling hills. Fortunately, the area had been cleared of land mines. I&rsquo;d seen all I wanted to see after about five minutes. They&rsquo;re just large stone jars, some sunk in the dirt, some tipped over, some chipped, some with holes, some full of dirt, some full of water. Aside from the mysteries of their origin and how they were transported, there wasn&rsquo;t much else to them. I could have lived with just seeing some pictures in a guidebook or online. Oh well. The second site (Site 2) involved a moderate hike with a beautiful view of the surrounding valley and hills, but it had fewer jars. The third site (Site 1) was the biggest, sporting around 300 jars and a neat cave with a hole in the ceiling that you could hike to from outside. Seeing just Site 1 would have been enough. The weather was very pleasant all day. Actually, come to think of it, the weather was very pleasant all throughout Laos everyday. Returned to the guesthouse and ate some dinner, then all four of us rode a tuk tuk to the bus terminal and rode a &ldquo;VIP&rdquo; sleeper bus toward Vang Vieng. Arrived there at 4 AM, and Vincent and I got off and rode a tuk tuk into town. We walked around and found a guesthouse to get a few hours&rsquo; sleep in. We shared a room, as before. Vincent had to leave around 9 AM to ride a minibus out of town, so we said goodbye as he left the room. I let myself sleep in until I had to check out around noon.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-26:/2012/02/26/monday-february-13-2012/</guid><link>https://willfaught.com/2012/02/26/monday-february-13-2012/</link><atom:link href="https://willfaught.com/2012/02/26/monday-february-13-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 26 Feb 2012 09:12:00 -0800</pubDate><title>Monday, February 13, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rode a minibus to Phonsavan for six hours. Stopped at a small town on the way for lunch and ate with another guy from the minibus named Vincent. Shared a tuk tuk with Vincent and two girls from the Phonsavan bus terminal to the center of town where all the guesthouses are. Vincent and I shared a room with two twin beds. It was cheap, but the wifi sucked. We looked around at a couple of tourist agencies and all four of us finally booked a tour of the three Plain of Jars sites for the next day. I ended up deciding to ride a sleeper bus the next evening to Vang Vieng. We ate dinner at a local place about a block away, then went to bed.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-26:/2012/02/26/sunday-february-12-2012/</guid><link>https://willfaught.com/2012/02/26/sunday-february-12-2012/</link><atom:link href="https://willfaught.com/2012/02/26/sunday-february-12-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 26 Feb 2012 08:58:51 -0800</pubDate><title>Sunday, February 12, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Woke up earlier than I expected, at about 8:30 AM. Read my Laos guidebook about the northern area to plan where to go next. Decided to go to the Plain of Jars next, and then to the wild debauchery of Vang Vieng. Walked around town with my guidebook and saw all the temples that I had missed the day before. Met a couple novice monks, Joy and Sing, and talked with them for about an hour. Sing was 19 and wanted to quit the temple life and enroll in a university. He wanted tips for flirting with girls and wanted to know about my dating life. It was very amusing. In the late afternoon I felt tired, so I returned to my hostel and rested for a bit, then went to the night market for dinner. Ran into Michelle and her friend and I ate with them and a guy from Australia who also sat with us. Bought some more banana bread on my way back to my hostel. Caught up on my blog and got my stuff ready to go in the morning.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/saturday-february-11-2012/</guid><link>https://willfaught.com/2012/02/11/saturday-february-11-2012/</link><atom:link href="https://willfaught.com/2012/02/11/saturday-february-11-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 08:29:43 -0800</pubDate><title>Saturday, February 11, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><strong>My birthday!</strong> Let myself sleep in. Tried to call my parents, but the wifi wasn&rsquo;t working. Walked into downtown and rented a bicycle for 10,000 kip. Rode around town looking at some temples. Stopped at a cafe for a Coke to cool off and use their wifi to call my parents and Tess. Continued riding around town and saw a a couple more temples. Returned the bicycle and ran into Matteo. Walked with him a little and then parted ways to go to Utopia to treat myself to a delicious dinner of steak, fries, salad, fried spring rolls, a mai tai, a mojito, and a large Beer Laos. Bernard and Jenny joined me again and we sat and drank and chatted all evening. We walked back to the hostel together, and then Bernard and I walked to the night market to buy some fruit-flavored bread for dessert. He and Jenny were leaving town the next day, but I had decided to stay an extra day. They were getting up early to see the monks collect food donations before leaving, and I thought about doing that too. We all went to bed. I had trouble falling asleep, so I decided to skip the monk stuff in the morning at sleep in instead. It&rsquo;s my birthday, after all.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/friday-february-10-2012/</guid><link>https://willfaught.com/2012/02/11/friday-february-10-2012/</link><atom:link href="https://willfaught.com/2012/02/11/friday-february-10-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 08:21:09 -0800</pubDate><title>Friday, February 10, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rode a minibus with Aimee, Glenn, Nic, Sara, Dan, Sylvia, Michelle, and Ingo to the gorgeous Kuang Si waterfalls. Took lots of pictures, swam, swung on a rope and jumped off a small cliff into the icy blue water. Hiked up to all the different pools and falls. Got lost coming down the other side of the falls and ended up taking the long way back to the bottom of the falls. Returned to the hostel. Hiked Phou Si hill for a view of Luang Prabang at sunset with a girl from my dorm named Monica (from Australia). Walked with Monica to another popular bar and lounge I&amp;rsquo;d heard about called Utopia. Ate dinner and drank beers and chatted with Monica, her friends, and Bernard (from Austria) and Jenny (from Finland), who were also from our dorm. Walked home when curfew closed the bar and chatted with Bernard and Jenny a little more around a campfire at the hostel.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/thursday-february-9-2012/</guid><link>https://willfaught.com/2012/02/11/thursday-february-9-2012/</link><atom:link href="https://willfaught.com/2012/02/11/thursday-february-9-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 08:12:47 -0800</pubDate><title>Thursday, February 9, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ate another American breakfast and got a sandwich to go for lunch on the slow boat. Boarded at 8:30 AM and sat and waited for the stragglers to arrive. Departed around 9:30 AM. Sat with Aimee (from Austin, Texas) and we chatted for a while. I also read and listened to a couple podcasts and some music. The scenery was again very beautiful. This time my seat was much more cramped, but still the time passed quickly enough. We arrived in Luang Prabang, the old capital of Laos (rhymes with cow, not mouse), and Aimee and I took a tuk tuk to our hostel, Spicylaos. Walked with Aimee, Shelley, Glenn, and Matteo to the night market and ate a cheap dinner on the street for 10,000 kip (remember, I&rsquo;m a multi-millionaire here). We crossed over the ridge of Phou Si hill near the market as a shortcut to a popular bar and lounge we had heard about called Laos Laos Garden. We ordered buckets there and hung out for an hour or so. The group decided to go dancing or bowling, I can&rsquo;t recall which, and I headed for the toilet quickly before we left. I was gone for only a minute, but in that time everyone had piled into a tuk tuk and was gone. I found myself unexpectedly alone and decided to make my way back to the hostel and call it a night.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/wednesday-february-8-2012/</guid><link>https://willfaught.com/2012/02/11/wednesday-february-8-2012/</link><atom:link href="https://willfaught.com/2012/02/11/wednesday-february-8-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 08:04:41 -0800</pubDate><title>Wednesday, February 8, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>No hot water for my shower, and there was a breeze from a fan when I turned on the shower light, so I skipped the shower except for a light rinse. Ate an American breakfast at the hotel&rsquo;s restaurant. Shared a tuk tuk to the river boat pier at 9:30 AM. Boarded around 10 AM and sat waiting to depart for an hour or two as others trickled on board. Listened to podcasts the whole time and watched the beautiful landscape roll by. Arrived in Pakbeng at around sunset. Hauled my gear up the hill and looked at a couple places before deciding on a somewhat pricey place at 300 baht for the night. The mattress was nice and soft for my poor back. Ate dinner with Aimee, an American from Austin, Texas, that I had met before boarding the boat, and her friends Shelley, Glenn, and Matteo, and their friends Alex and Mary. Returned to my hotel to shower and shave. Computer time until bed time. I had heard they shut off the electricity to the city at 10 PM, but this wasn&rsquo;t the case.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/tuesday-february-7-2012/</guid><link>https://willfaught.com/2012/02/11/tuesday-february-7-2012/</link><atom:link href="https://willfaught.com/2012/02/11/tuesday-february-7-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 07:55:49 -0800</pubDate><title>Tuesday, February 7, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Awoke still sick with a bad back. Ate a cheap lunch at a local restaurant. Rode the bus to Chiang Khong at the Thailand–Laos border. Shared a tuk tuk with a guy to the Mekong river shore and exited Thailand. Bought passage across the river and landed on the Laos shore. Paid the fee and entered the town of Huay Xai in Laos. Walked up the hill and looked at a few places and chose to stay at a nice hotel with wifi and air con. Found an ATM and withdrew a million kip (around US$100). Bought a Coke to cool off. Bought a slow boat ticket for 950 baht for the following morning. Hung out in my hotel room. Ate dinner at the hotel&amp;rsquo;s restaurant. My back was still thrown out. Computer time in my room.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/monday-february-6-2012/</guid><link>https://willfaught.com/2012/02/11/monday-february-6-2012/</link><atom:link href="https://willfaught.com/2012/02/11/monday-february-6-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 07:48:00 -0800</pubDate><title>Monday, February 6, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Woke up still feeling sick, and also felt like I had thrown my back out (the &ldquo;mattresses&rdquo; were really stiff). Showered, ate lunch, stayed in all day watching BSG, bought a bus ticket to Chiang Khong at the Thailand–Laos border, went out again for dinner, then returned to the hostel.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/sunday-february-5-2012/</guid><link>https://willfaught.com/2012/02/11/sunday-february-5-2012/</link><atom:link href="https://willfaught.com/2012/02/11/sunday-february-5-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 07:32:00 -0800</pubDate><title>Sunday, February 5, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Still sick and miserable. Slept in, showered, ate lunch, returned to my hostel and stayed inside all day, lying on my back watching Battlestar Galactica with my head angled up to reduce the running of my nose. Ate an expensive dinner at a pizza place nearby to try to cheer myself up.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/saturday-february-4-2012/</guid><link>https://willfaught.com/2012/02/11/saturday-february-4-2012/</link><atom:link href="https://willfaught.com/2012/02/11/saturday-february-4-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 07:22:17 -0800</pubDate><title>Saturday, February 4, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Awoke feeling sick &lt;em>again&lt;/em>. Returned the scooter I had rented the day before. Checked out and rode a taxi truck to the Arcade bus terminal. Rode the bus to Chiang Rai for a few hours and listened to podcasts. Arrived and wandered around for ten minutes looking for my hostel. Checked in, ate lunch, then returned to my hostel and stayed inside on my bed the rest of the day feeling too sick to do anything. Ate dinner at the nearby night market feeling miserable. Sick twice in two weeks! What luck.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/friday-february-3-2012/</guid><link>https://willfaught.com/2012/02/11/friday-february-3-2012/</link><atom:link href="https://willfaught.com/2012/02/11/friday-february-3-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 07:17:50 -0800</pubDate><title>Friday, February 3, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rented a scooter and rode it to Doi Suthep. On my way back, I came across a scooter accident that had just happened. The driver was a man from Nebraska named Paul. He was in really bad shape. All the skin on his right knee cap had been scraped off and he was bleeding heavily from his right arm. He took an antibacterial wipe and a clotting pad from my first aid kit and some toilet paper I had to soak up the blood from his arm. A very helpful Thai woman called an ambulance for him. I was reminded just how dangerous it was riding around on those things. Returned to the old quarter and then rode to Tiger Kingdom for some one-on-one time with some small and large tigers. Hired a photographer to take pictures of me with them. Returned to the old quarter again and then rode to the Arcade bus terminal to buy a bus ticket to Chiang Rai for the next day. Parked the scooter at the hostel, ate dinner, computer time, then bed.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/thursday-february-2-2012/</guid><link>https://willfaught.com/2012/02/11/thursday-february-2-2012/</link><atom:link href="https://willfaught.com/2012/02/11/thursday-february-2-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 07:14:10 -0800</pubDate><title>Thursday, February 2, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Went to the Elephant Nature Park and fed and washed elephants all day. I didn&amp;rsquo;t realize the way elephants are trained to be ridden and do tricks is so brutal and inhumane. Returned to the hostel and planned my next few days. Craved McDonalds, so I ate dinner there. Watched some Battlestar Galactica.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/wednesday-february-1-2012/</guid><link>https://willfaught.com/2012/02/11/wednesday-february-1-2012/</link><atom:link href="https://willfaught.com/2012/02/11/wednesday-february-1-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 07:01:38 -0800</pubDate><title>Wednesday, February 1, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rented a bicycle and headed for the interior of the old quarter. Stopped to east some street food for lunch. Saw several temples. Rode to a neighborhood outside the old quarter that supposedly was a nice place to shop, but was sorely disappointed. Returned to the hostel for a couple hours. Ate dinner nearby. Rode my bicycle to the night market a few blocks away and browsed the stalls there for an hour or so. Returned to the hostel and went to bed.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/tuesday-january-31-2012/</guid><link>https://willfaught.com/2012/02/11/tuesday-january-31-2012/</link><atom:link href="https://willfaught.com/2012/02/11/tuesday-january-31-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 06:53:38 -0800</pubDate><title>Tuesday, January 31, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Ate an American breakfast at a restaurant across the street. Rode the minibus to the Ko Phuket airport and arrived at 1:30 PM. Ate lunch at Burger King and then had four or so hours to kill. Drank some beers in a bar to use their free wifi. Flew to Chiang Mai at about 7:30 PM and arrived at about 9:30 PM. Rode a taxi to my hostel, A Little Bird Guesthouse, in the old quarter of the city. Walked around the nearby streets a little, then returned and went to bed.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/monday-january-30-2012/</guid><link>https://willfaught.com/2012/02/11/monday-january-30-2012/</link><atom:link href="https://willfaught.com/2012/02/11/monday-january-30-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 06:50:18 -0800</pubDate><title>Monday, January 30, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Bought some lunch to go and put it in my day pack. Rode a long tail boat from Krabi to Railay East. Climbed to the vista point overlooking the Railay area. Ate my lunch while admiring the view. Tried to hike to a nearby lagoon, but it was too muddy. Walked to Railay West and went for a quick dip in the ocean and then laid on the sand and read for an hour or so. Got up and walked along the entire beach. It was even more beautiful at the other end. Storm clouds were gathering, so I arranged a long tail boat back to Krabi. It started raining heavily and ocean grew choppy, and I grew concerned about my camera and phone in my day pack; but everything stayed dry and we made it back in one piece. I arranged a minibus from my hostel to the Ko Phuket airport the following day to fly to Chiang Mai.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/sunday-january-29-2012/</guid><link>https://willfaught.com/2012/02/11/sunday-january-29-2012/</link><atom:link href="https://willfaught.com/2012/02/11/sunday-january-29-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 06:46:59 -0800</pubDate><title>Sunday, January 29, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rode the ferry in the morning to Krabi. Met a girl my age from England named Louisa who had been teaching English in South Korea. We were both going to the same hostel. Checked in. Planned what to do the next day. Walked to see a nearby temple. Walked from the temple to a nearby night street market for a delicious dinner of street food. Returned to the hostel for some quality computer time.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-02-11:/2012/02/11/saturday-january-28-2012/</guid><link>https://willfaught.com/2012/02/11/saturday-january-28-2012/</link><atom:link href="https://willfaught.com/2012/02/11/saturday-january-28-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Feb 2012 06:41:27 -0800</pubDate><title>Saturday, January 28, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Got up early and had the showers to myself. Walked to the travel agency where I&rsquo;d booked the boat tour and bought some bananas on the way. Was led to the boat tour company office, then to the pier, then to the boat itself and boarded. The tour wasn&rsquo;t organized as well as the Angthong Marine Park one, so we didn&rsquo;t really know where the next stop was, or how they would signal us that the boat was leaving when everyone was snorkeling. And no free Cokes. They did take us to all the places they promised, and it was all beautiful, and we had great weather. I saw Maya Bay on Ko Phi Phi Leh, better known as <em>the</em> beach from the movie The Beach. It was literally overrun with bodies, just totally ruined. It might be worth it to camp there overnight just so you can get the beach mostly to yourself. Actually, in the movie it looks much more secluded because they used graphics or something to make the bay opening look much narrower than it actually is. We went to Monkey Beach and I saw several tiny monkeys eating sugar packets and small fruits and attacking unwitting girls that weren&rsquo;t paying attention. They were really cute and funny (because I wasn&rsquo;t attacked). I ended up getting burned a little on my upper back and shoulders despite heaps of sunscreen because I switched from SPF 50 to 20 that day. The burns felt hot for several days after, but it wasn&rsquo;t too bad. I met a Scottish girl about my age who was also going it alone and a nice couple from Austin. I can&rsquo;t remember the names of all the beaches we saw, but there were about seven or eight of them. By the end, I could feel the burn on my back, and didn&rsquo;t go out into the sun anymore. We returned to the Ko Phi Phi Don pier, and I showered, ate, bought a ferry ticket to Krabi, and then bought a beer and walked the beach a little, but there weren&rsquo;t any fire dancers at the time, so I called it an early night again.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-06:/2012/02/06/friday-january-27-2012/</guid><link>https://willfaught.com/2012/02/06/friday-january-27-2012/</link><atom:link href="https://willfaught.com/2012/02/06/friday-january-27-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 06 Feb 2012 06:55:55 -0800</pubDate><title>Friday, January 27, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Rode a minibus to a nearby pier and boarded a ferry bound for Ko Phi Phi. Was a little worried about my pack — as I usually am — after I stowed it on the deck like everyone else, but it was soon buried under a bunch of packs. Safety in numbers. Got off the boat without trouble a couple hours later. Wandered the streets of Tonsai Village for over an hour in the burning sun, sweat running down to my chin and in my eyes, looking for a dorm bed somewhere. The first three or four places I went to were full. I found a hotel room for 800 baht, but wasn&rsquo;t ready to pay that just yet. I made another round of the streets and managed to find a dorm I had missed before and got a bed there for 300 baht. I wouldn&rsquo;t call it a hostel; it was just a tattoo parlor with a dorm and showers attached. The dorm was open to the air, no air con, several fans, &ldquo;mattresses&rdquo; were hard as boards, and my torso was covered in small, red bites by the end. Showers were challenging. But it was cheap. Laid down my stuff, cooled off in a 7-11, then ate lunch. Returned to the dorm, changed into my swimsuit, and hung out at the nearby beach for a couple hours reading a book until the light faded. The tide was low and the water had gross bits floating in it. Booked a boat tour of the Ko Phi Phi islands. Bought a few Chang beers and wandered around town and up and down the beach watching the fire dancers and fire breathers. Called it an early night.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-06:/2012/02/06/thursday-january-26-2012/</guid><link>https://willfaught.com/2012/02/06/thursday-january-26-2012/</link><atom:link href="https://willfaught.com/2012/02/06/thursday-january-26-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 06 Feb 2012 06:36:31 -0800</pubDate><title>Thursday, January 26, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A really well-written review of the 2011 American movie by James Berardinelli.</p><p><a href=https://willfaught.com/2012/02/06/the-girl-with-the-dragon-tattoo/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-02-06:/2012/02/06/the-girl-with-the-dragon-tattoo/</guid><link>https://www.reelviews.net/php_review_template.php?identifier=2398</link><atom:link href="https://www.reelviews.net/php_review_template.php?identifier=2398" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 06 Feb 2012 06:09:18 -0800</pubDate><title>The Girl With The Dragon Tattoo</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Arrived in Hanoi by sleeper bus feeling disheveled, greasy, and tired. The weather was gray and a tiny bit rainy. Wasn&rsquo;t sure where to go or what to do. A motorbike taxi driver offered to take me to the Old Quarter, so I went with him. He took me to a travel agency there. Spoke with the agent inside and decided to go to Ha Long Bay first to ensure I had enough time to see it. Booked transportation to Cat Ba island in Ha Long Bay at the travel agency and then went in search of breakfast. Someone showed up on a motorbike to take me to the bus, and I went with him, and then boarded the bus to Ha Long City. At the pier, I boarded a tour boat and was stuck with them all day. The weather was still gray and a little rainy. Saw some of the stone karst islands in Ha Long Bay. Went with the boat tourists to see a large cave in one of the karsts. The boat landed on Cat Ba island just after sunset in the dark. I boarded another bus and dozed a little until we arrived in Cat Ba City on the south shore. I went to the nearest hotel, followed by a couple I had met on the boat, and we checked in. We walked the strip along the hotels and waterfront and then chose a restaurant for dinner. After dinner, I shopped around for a day cruise of the islands. The next day, I boarded a tour boat bound for the Ha Long Bay islands and spent the day cruising around, snapping photos of karsts, kayaking around karsts, and gazing at karsts. It was a day of karsts all around. Did I mention there were karsts? The sky was gray, but it didn&rsquo;t rain. At the end, the boat returned us to Cat Ba Island, and I went to the same restaurant as before for a delicious dinner and a quiet evening alone. The next day it was still cloudy and gray, so I decided that I&rsquo;d had enough of Ha Long Bay, having seen karsts to my heart&rsquo;s content the day before, so I booked transportation back to Hanoi by bus for the same day and departed around noon.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-25:/2012/01/25/ha-long-bay-vietnam/</guid><link>https://willfaught.com/2012/01/25/ha-long-bay-vietnam/</link><atom:link href="https://willfaught.com/2012/01/25/ha-long-bay-vietnam/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Jan 2012 08:04:56 -0800</pubDate><title>Ha Long Bay, Vietnam</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>After Hoi An, I went to Hue. At this point, I was worried about running out of time, since I could only stay in Vietnam for thirty days. I stayed in Hue for two days. It was lightly raining the entire time, so I wore my poncho and gritted my teeth. The first day, after I checked into my hotel, I walked to the Imperial Citadel and spent all afternoon exploring the ruins (bombed by the Americans) and the buildings still standing. The second day, I hired a private motorbike guide to take me to three emperor tombs and a pagoda in the surrounding area. Bought an open tour bus ticket for Hanoi.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-25:/2012/01/25/hue-vietnam/</guid><link>https://willfaught.com/2012/01/25/hue-vietnam/</link><atom:link href="https://willfaught.com/2012/01/25/hue-vietnam/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Jan 2012 07:22:53 -0800</pubDate><title>Hue, Vietnam</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>After Dalat and the six-day Easy Rider motorbike ride with Hien, I went to Hoi An. Hien dropped me off at one side of Hoi An and we parted ways. Stayed in a cheap hotel for $9 per night for several days. Browsed several shops and bought five paper lanterns in assorted colors, a dirty metal gong, a couple dirty coins, a few small paintings on scraps of paper, a marble tea box, and a marble candle box. I shipped them home the long way. Found a really nice, good, and cheap restaurant on the edge of town. Ate at a couple restaurants along the river. Did a tour of the My Son ruins an hour outside of town. Wanted to rent a motorbike and ride to the nearby Marble Mountains, but the timing didn&rsquo;t work out. Hoi An&rsquo;s shops, streets, and riversides are decorated with lit lanterns at night, and at night people buy lit candles in paper boats and set them afloat on the river. People go to the riversides at night and stroll and shop and snack and listen to Vietnamese music. It was the most pleasant place I experienced in Vietnam.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-25:/2012/01/25/hoi-an-vietnam/</guid><link>https://willfaught.com/2012/01/25/hoi-an-vietnam/</link><atom:link href="https://willfaught.com/2012/01/25/hoi-an-vietnam/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Jan 2012 07:16:07 -0800</pubDate><title>Hoi An, Vietnam</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/8mP39wS_FxQ?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>The fireworks I saw at Taipei 101 in Taipei, Taiwan, for New Year&rsquo;s Eve. (It&rsquo;s not my video.)</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-25:/2012/01/25/taipei-101-fireworks/</guid><link>https://willfaught.com/2012/01/25/taipei-101-fireworks/</link><atom:link href="https://willfaught.com/2012/01/25/taipei-101-fireworks/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Jan 2012 06:56:59 -0800</pubDate><title>Taipei 101 Fireworks</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Decided to stay in Ko Phuket one more day to see a beach or two and get a feel for the place. Got up at 9 AM, ate toast for breakfast, got ready, and was out the door by 11 AM. Walked twenty minutes to the bus spot in Phuket Town and rode a bus to Hat Kata. Got off and followed a woman to the beach. Beheld the beach, took some snaps, then walked along the surf for a little ways. Decided to go for a dip and left my bag on an empty chair. Locked my camera and stuff in the big pouch with a luggage lock. Kicked myself for not thinking of bringing my luggage cable to tie the bag to the chair. Waded into the surf, submerged my head, and floated for a few minutes. Took in the scenery. Hat Kata felt crowded, but the sand and water were nice. Too many chairs and umbrellas, too close together. Saw several topless women by the end of the day. Kept an eye on my bag. Got out, dried off, and continued walking south along the beach. Ate pork fried rice at a restaurant at the far end and cooled off with a Coke. Ordered seconds for both. Walked to the road and then walked to the southern half of Hat Kata and continued my stroll along the surf. Got to the southern end and walked all the way back to the north end of Hat Kata where I started, then continued north to see Hat Karon. I liked Hat Karon more than Hat Kata. It was bigger, so things were more spread out, and the sand was nicer; it was so finely grained that it kind of squeaked when I walked on it. Looked for a bus back to Phuket Town at 4 PM because they stop running early and the cost of taking a taxi is exorbitant. Had trouble spotting the buses in time to flag them down. Got one, rode it back, walked to my hostel, showered, went out again for some quick Thai food nearby, then returned to my hostel again. Bought a ticket for Ko Phi Phi. Settled in for the evening.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-25:/2012/01/25/wednesday-january-25-2012/</guid><link>https://willfaught.com/2012/01/25/wednesday-january-25-2012/</link><atom:link href="https://willfaught.com/2012/01/25/wednesday-january-25-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Jan 2012 06:52:15 -0800</pubDate><title>Wednesday, January 25, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Woke up and felt much better. Went on a boat and kayak tour of the Phang Nga islands to the north of Ko Phuket. A minibus picked me up around 8 AM and took me to Ao Por Pier in the northern part of the island. The boat was large and had two stories. There were about forty to fifty customers on board. Visited the famous island that was in the James Bond movie The Man with the Golden Gun. Ate a buffet lunch on the boat. The food was just okay. Went to Hong Island. Rode a kayak and went through a dark tunnel with a low ceiling and entered a secluded lagoon in the interior of the island. We went under yet another low ceiling and entered a second interior lagoon. Then we backtracked. Entered another cave that opened into a cavern with the ceiling missing, with sunlight streaming down into the water. Very beautiful. Went to Panak Island. Rode a kayak through a tunnel to an interior lagoon with sheer cliffs on either side covered in lush foliage. Again, very beautiful. Went to another island and rode a kayak by myself and explored some interesting rock formations and a deep sandy cave. Returned to Ko Phuket and rode a minibus back to my hostel. Chatted with a couple Germans in my room, one of them the one from the night before. We went out for food and ate on the street. Was still hungry, so bought some meat on a stick and some ice cream at a Swenson&amp;rsquo;s. Returned to my hostel and relaxed. Decided to stay on Ko Phuket one more day to see the beach area. Planning to take a bus to Hat Kata tomorrow, and then maybe I will walk to some other beaches nearby.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-24:/2012/01/24/tuesday-january-24-2012/</guid><link>https://willfaught.com/2012/01/24/tuesday-january-24-2012/</link><atom:link href="https://willfaught.com/2012/01/24/tuesday-january-24-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 24 Jan 2012 08:47:15 -0800</pubDate><title>Tuesday, January 24, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2012-01-24:/2012/01/24/taiwan-2012-pictures/</guid><link>https://www.dropbox.com/gallery/18866064/1/Taiwan%202011?h=08fa88</link><atom:link href="https://www.dropbox.com/gallery/18866064/1/Taiwan%202011?h=08fa88" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 24 Jan 2012 08:40:00 -0800</pubDate><title>Taiwan 2012 Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>When I travel to places that remind me of movies that I&rsquo;ve seen, I feel an urge to watch them again, like George Costanza was with food. So far, I&rsquo;ve only watched Lost in Translation. But being in the south of Thailand among the tropical islands, I now plan to also watch again The Beach and The Man with the Golden Gun. Watch along with me!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-24:/2012/01/24/movies-from-my-journey/</guid><link>https://willfaught.com/2012/01/24/movies-from-my-journey/</link><atom:link href="https://willfaught.com/2012/01/24/movies-from-my-journey/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 24 Jan 2012 07:25:42 -0800</pubDate><title>Movies From My Journey</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Woke up still sick. Went downstairs for a breakfast of cereal and toast. Took a while getting ready. Called Tess. Wanted to talk to the hostel staff about getting a map of Ko Phuket, where to get lunch, and where to rent a scooter, but I couldn&rsquo;t find anyone. It was already past 1 PM, so I left on my own. Found a small place for lunch and had pork fried rice. Kept going and found a couple places that rented scooters, but neither had a helmet that fit me, and one shop didn&rsquo;t even have an automatic shift scooter. Walked up and down the streets of Phuket Town looking for a rental shop with a helmet that fit me, but never found one. Returned to my hostel to ask where I could buy my own helmet, then went there, but the helmets were much too expensive for a one-time use. It was late in the afternoon by then and the light was waning. Resigned to losing the day. Returned to my hostel and arranged through the front desk to do a boat and kayak tour of the nearby Phang Nga islands (as seen in the James Bond movie The Man with the Golden Gun) the next day. Researched where to stay on Ko Phi Phi. Caught up on my blog. Chatted with a German in my room. Prepared for bed, then went to sleep.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-23:/2012/01/23/monday-january-23-2012/</guid><link>https://willfaught.com/2012/01/23/monday-january-23-2012/</link><atom:link href="https://willfaught.com/2012/01/23/monday-january-23-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Jan 2012 16:20:47 -0800</pubDate><title>Monday, January 23, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Woke up still sick. Decided to skip the dive class so I wouldn&rsquo;t miss the west coast. Packed my gear and bought a ticket for Phuket. Quickly reserved a bed at a hostel before I left the hostel. Walked to the ferry pier and bought some snacks at the 7-11 along the way. Arrived at the boat just in time, sweat pouring down my face. Fortunately, the boat had air con. Read my guidebook about Ko Phuket, Ko Phi Phi, and the Krabi area, and listened to a podcast. The ferry stopped at Ko Samui, then continued on to Surat Thani. I got off there and transferred to a bus. It was only me and a girl my age named Dean on this huge bus. We chatted the whole time. The bus unexpectedly stopped in Surat Thani and we were told we would transfer to a minibus when six others arrived. We waited for over two hours. We bought ice cream, chips, and instant soup to eat for dinner while waiting. Fortunately, the minibus had air con too. I listened to podcasts and watched a thunderstorm brew on the horizon the whole way. The driver offered to drive us beyond Phuket Town for outrageous prices, but fortunately I was going to Phuket Town. Got off the bus, said goodbye to the other backpackers, then took a motorbike taxi two blocks to my hostel. Checked in, unpacked, and found that my pack had been rifled through despite the lock I had on it. Fortunately, my laptop/precious was still there. They must not have been able to get it out through the zippers and the lock. I couldn&rsquo;t figure out when they had had time to do it. Dismayed, I repacked it all neatly and went to bed as soon as possible, feeling exhausted.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-23:/2012/01/23/sunday-january-22-2012/</guid><link>https://willfaught.com/2012/01/23/sunday-january-22-2012/</link><atom:link href="https://willfaught.com/2012/01/23/sunday-january-22-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Jan 2012 07:36:00 -0800</pubDate><title>Sunday, January 22, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Woke up still sick. Had planned to take a dive class on the nearby island Ko Tao, but didn&rsquo;t want to do it while sick. Decided to wait here an extra day to see if I felt better the next day. Took a while getting ready. Ate a delicious lunch again at the small restaurant nearby. Chose a spicy and delicious green curry to open my sinuses. Returned my beloved scooter. Grabbed my Treasure Island book and went again to the nearby Baan Tai beach. Found a shaded patch of soft sand closer than before to the beachside resort partnered with my hostel. Read all afternoon, pausing occasionally to enjoy the incredible view of the beach and Ko Samui across the water. A dog dug a seat next to me and joined me for a while. Had a huge bottle of water with me to keep hydrated. Used the resort bathroom a few times. Turned down a scuba instructor offering a class, and he looked disappointed. The beach and most of the resorts were devoid of activity. Where is everyone? It&rsquo;s high season, and I had the entire beach to myself. Maybe it&rsquo;s the bad economy. I felt bad for the resort owners and scuba instructors. I returned to my hostel just before sunset and met a Malaysian guy named Chow in my dorm room. We walked to the night market for dinner. Bumped into a German I had met on a river boat in Bangkok, and we chatted about Ko Tao, where he&rsquo;d just been. Returned to the hostel, watched an episode of Battlestar Galactica, then went to sleep.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-23:/2012/01/23/saturday-january-21-2012/</guid><link>https://willfaught.com/2012/01/23/saturday-january-21-2012/</link><atom:link href="https://willfaught.com/2012/01/23/saturday-january-21-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Jan 2012 07:15:00 -0800</pubDate><title>Saturday, January 21, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Woke up sick with a cold. No sore throat, but my nose was really runny. Took a long time getting ready. Rented a scooter from a nearby shop and rode to the 7-11 to buy lots of water and orange juice. Ate lunch at the same small restaurant nearby. Rode to a pharmacy to buy some medicine to alleviate my symptoms and bought a nose spray. Feeling more composed, I set out to see Ko Ma at the northwest corner of the island and some other beaches on the west coast. I stopped along the way at a table on the side of the road to buy a couple tall bottles of golden gasoline (40 baht each). Saw Ko Ma, Haad Salad, Haad Yao, Haad Son, and a couple other beaches. I would park my scooter and walk a little up and down each one to get a feel for the place. Some of them were much nicer than Baan Tai beach. My nose was running like crazy the whole time. Learning to drive a scooter was fun and easy, although a little nerve wracking at first, given the crazy ways the locals drive. Now I want to get a scooter or motorcycle when I return home. No one else was staying in my dorm room that night, so I went to the night market alone on my scooter. I quickly ate and then returned to my hostel to rest. Watched a couple Battlestar Galactica episodes online and then went to bed.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-23:/2012/01/23/friday-january-20-2012/</guid><link>https://willfaught.com/2012/01/23/friday-january-20-2012/</link><atom:link href="https://willfaught.com/2012/01/23/friday-january-20-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Jan 2012 06:52:28 -0800</pubDate><title>Friday, January 20, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Rode a minibus early in the morning to the Big Buddha pier on the north side of Ko Samui. Rode a ferry to the island Ko Phangan for about forty-five minutes. Rode a songthaew taxi truck for 100 baht to Baan Tai beach. There was some confusion about where to find my hostel, and I walked around in the searing heat for twenty minutes before slogging into the place to check in. Ate lunch at the little restaurant beside the hostel and the road. Changed into my swim suit and headed to the beach. Walked down the beach quite a ways to find a patch of soft sand and water without floating weed bits. Baan Tai beach wasn&rsquo;t as nice as Chaweng beach on Ko Samui. Felt a tinge of regret leaving it. Waded in, but didn&rsquo;t submerge my head. Mostly read Treasure Island on the sand. Returned to the beachside resort that was partnered with my hostel and swam a little in their pool and had a couple beers. Chatted with a German named Eric for a half hour. Walked to the night market with him and his friend David and another guy from my hostel later that evening for dinner. On the way back, we stopped at a bar and had a beer and played a few rounds of billiards. I taught them the game nine ball. Returned to the hostel and went to bed.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-23:/2012/01/23/thursday-january-19-2012/</guid><link>https://willfaught.com/2012/01/23/thursday-january-19-2012/</link><atom:link href="https://willfaught.com/2012/01/23/thursday-january-19-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Jan 2012 06:35:00 -0800</pubDate><title>Thursday, January 19, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Woke up at 7 AM. Got ready for the Angthong Marine Park island tour. The bus was late picking me up, but I got to the dock in time to eat the tiny breakfast and hot chocolate they served me. We started a little late, but they made up for it later. About forty people plus five or so staff. Lots of cold Cokes to go around throughout the day to slake our thirst. Snorkeled for an hour off one of the island karsts. Saw a few types of fish and got up close to some huge sea urchins. Swam above some divers and enjoyed the tickle of the bubbles. Went to an island with a beautiful emerald inland lake and a great lookout of the surrounding sea and islands. Ate a delicious lunch of green curry and vegetables, steamed rice, and sliced fruit on a beautiful sandy beach all to ourselves. Kayaked to a sandy spot on a nearby island and played in the water for an hour. Made a pit stop at another island. Returned to Ko Samui. Showered. Ten of us staying at my hostel went out for dinner at the nearby Thai restaurant, then got beers at the Focus Minimart across the street from the hostel and watched movies in the common room. Arranged for transportation to Ko Phangan the next morning. Went to bed around midnight.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-21:/2012/01/21/wednesday-january-18-2012/</guid><link>https://willfaught.com/2012/01/21/wednesday-january-18-2012/</link><atom:link href="https://willfaught.com/2012/01/21/wednesday-january-18-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 21 Jan 2012 07:46:00 -0800</pubDate><title>Wednesday, January 18, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Beach day! Slept in until 9:30 AM. Showered and got ready. The hostel bathrooms were disgusting, so it took me about an hour to finish. Called Tess. Got lunch. Headed to the beach with a used copy of Treasure Island by Robert Louis Stevenson that I had picked up the night before. Swam in the surf and baked in the sand and read about buried treasure all afternoon until the light fell and it felt time to leave. Met a couple more people at the hostel. Listened to one girl, Xin, talk about a boat tour of the Angthong Marine Park islands that she had done that day. I decided to do it too and booked a ticket that night. I had to get up early for the island tour, so I got ready for bed around 11 PM.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-21:/2012/01/21/tuesday-january-17-2012/</guid><link>https://willfaught.com/2012/01/21/tuesday-january-17-2012/</link><atom:link href="https://willfaught.com/2012/01/21/tuesday-january-17-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 21 Jan 2012 07:35:00 -0800</pubDate><title>Tuesday, January 17, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Arrived at the bus station in Surat Thani feeling greasy and exhausted. Found my pack and turned around to approach the ticket office, then, feeling somewhat dazed, tottered into the waiting area. Found a seat and set my packs down. Saw the Vietnamese English guy board another bus soon afterward, and was sorry I hadn&rsquo;t said goodbye to him. Wish I could remember his name. Another bus took me to the ferry pier on the coast, and I dozed on the way. When we arrived, I got off, arranged a chair under a walkway overhang, and dozed a few more minutes. Woke up and walked with others down the dock to our boat and boarded the ferry. The ride was about 1.5 hours. Arrived at the Na Thon pier. The directions about a local bus were all wrong, so I took a local songthaew taxi truck with some other ferry passengers to Chaweng beach. The hostel&rsquo;s walking directions turned out to be useless, so after walking around in the blistering heat with all my gear for fifteen minutes, I gave up and walked into the nearest hotel, figuring they spoke some English and could sort it out. The wonderful front desk staff called my hostel and got directions for me. Checked into my hostel. It was mid-afternoon and I needed to eat soon, so I ate at the McDonalds a few minutes&rsquo; walk back down the road, not wanting to take time to explore. Showered afterward. Felt much better. Decided to go for a quick dip in the ocean at the nearby beautiful Chaweng beach. Laid on the sand for an hour or so and soaked up the last hour or so of sunshine. Returned to the hostel and showered. Emma, another guest, took me to a nearby Thai restaurant and then showed me the bars and clubs along the beach. I bought a Chang beer at a 7-11 on the way back.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-21:/2012/01/21/monday-january-16-2012/</guid><link>https://willfaught.com/2012/01/21/monday-january-16-2012/</link><atom:link href="https://willfaught.com/2012/01/21/monday-january-16-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 21 Jan 2012 07:21:00 -0800</pubDate><title>Monday, January 16, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Spent the whole day killing time at my hostel, waiting for my sleeper bus to depart from the train station at 7 PM for Ko Samui. Chatted in the common room with a Canadian who had been in Thailand for three months. He recommended seeing Ko Chang, a small island to the east, and skipping Pattaya, in his words a place where old white men go to get native girls. Got some insight from his stories into the way Thai family members support each other, and why so little money is saved per paycheck. Ate some street food at the train station for dinner. Somehow boarded the sleeper bus almost last and got one of the two broken seats that couldn&rsquo;t recline. So I was strapped in upright like Frankenstein for seven hours until some people got off and I could take another seat. I met the nice guy sitting behind me, whose seat was also broken, but who was taking it much better than I. He was Vietnamese, but had grown up in England. We spoke a little about Vietnam and the things I&rsquo;d seen there. I&rsquo;d actually seen more than him. We arrived in Surat Thani at 6 AM.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-21:/2012/01/21/sunday-january-15-2012/</guid><link>https://willfaught.com/2012/01/21/sunday-january-15-2012/</link><atom:link href="https://willfaught.com/2012/01/21/sunday-january-15-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 21 Jan 2012 07:00:00 -0800</pubDate><title>Sunday, January 15, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m so glad that my mom took me to get a good watch the day before I left home for this trip. It&rsquo;s been invaluable. Thanks, Mom!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-14:/2012/01/14/grateful-for-my-watch/</guid><link>https://willfaught.com/2012/01/14/grateful-for-my-watch/</link><atom:link href="https://willfaught.com/2012/01/14/grateful-for-my-watch/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 14 Jan 2012 20:37:47 -0800</pubDate><title>Grateful For My Watch</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rode the BTS and MRT to Hua Lamphong station to arrange transportation to Ko Samui. Bought a sleeper bus ticket to Surat Thani that would depart at 7 PM on Sunday and a ferry ticket from Surat Thani to Ko Samui. The bus company would get me from the bus station to the ferry pier. Then I rode the MRT and BTS to Mo Chit station and explored the JJ weekend market for several hours. This thing is enormous. Hundreds, perhaps thousands, of stalls, selling anything you can think of. I bought a new day pack. I returned to my hostel by the BTS and ate two orders of pad thai for dinner at the small night market on Sukhumvit Soi 38, near my hostel. I showered and then rode the BTS to Chit Lom station to meet my friend Pla to go to a club with On, a mutual friend, and a few of their friends. I didn&amp;rsquo;t know there was a dress code, so I had to return to my hostel to change into pants and shoes. When I again arrived at Chit Lom station, Pla said her friends had changed clubs. We then went to the BTS station for my hostel and then took a taxi the rest of the way. There were a couple bands at the club playing Thai music. I had no idea what the singers were singing, but I liked the tunes. I returned to my hostel at about 2:30 AM.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-14:/2012/01/14/saturday-january-14-2012/</guid><link>https://willfaught.com/2012/01/14/saturday-january-14-2012/</link><atom:link href="https://willfaught.com/2012/01/14/saturday-january-14-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 14 Jan 2012 12:13:00 -0800</pubDate><title>Saturday, January 14, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Rode a minibus to Ayuthaya and rented a bicycle to see the ruins. Returned to Bangkok by minibus and then rode a taxi and the BTS to the Patpong night market to buy a couple t-shirts. Returned to my hostel to plan my trip to Ko Samui.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2012-01-13:/2012/01/13/friday-january-13-2012/</guid><link>https://willfaught.com/2012/01/13/friday-january-13-2012/</link><atom:link href="https://willfaught.com/2012/01/13/friday-january-13-2012/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 13 Jan 2012 11:00:00 -0800</pubDate><title>Friday, January 13, 2012</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><strong>Sunday, January 8, 2012</strong></p><p>Arrived in Bangkok around 10:45 PM. Checked into my hostel just after midnight. No problems finding the place, thankfully.</p><p><strong>Monday, January 9, 2012</strong></p><p>Let myself sleep in. Rode the BTS to Saphan Taksin station and then rode the Chao Phraya Express boat to Chang station to see Wat Pho. Backtracked to the BTS and rode it to Udom Suk station to meet the Thai girls that I had met in Dalat, Vietnam. They picked me up at the station in their car, took me to a swank Thai restaurant, and treated me to a delicious Thai dinner and drinks. I was touched that they would do that for me. Such good hosts.</p><p><strong>Tuesday, January 10, 2012</strong></p><p>Went to Ko Ratanakosin and saw the Grand Palace and Wat Phra Kaew. Walked around the nearby area and saw a real, poor local neighborhood, ate some grass jelly, browsed the amulet market, and crossed the Sanam Luang field. Crossed the river to see Wat Arun. Crossed back to catch the sunset behind Wat Arun from the Deck bar on the river&rsquo;s edge. Walked to Khao San Road and ate delicious street food for dinner: pad thai, a kebob, and a bag of sliced pineapple. Grabbed some beers at one of the many bars. This place is nonstop activity. Tons of foreigners. Took a tuk tuk home and got swindled because I didn&rsquo;t know what a good price was. I&rsquo;m taking just taxis from now on.</p><p><strong>Wednesday, January 11, 2012</strong></p><p>Delicious pineapple-fried rice at a restaurant near my hostel. Explored the street markets in Chinatown during the day. Got a traditional Thai massage at the Wat Pho massage school. Drank a couple Singha beers at the Moon Bar on the roof of the Banyan Tree Hotel at sunset. Chatted with a couple from southern France. They told me about the nearby Patpong night market, so I walked there. I met Steve and Jeff on the way and walked with them through the market. We drank some beers and walked and chatted. Jeff was having fun saying &ldquo;Hi, white people&rdquo; to all the white people he passed on the sidewalks. Jeff had lived in Bangkok for five years, and Steve for two. Steve is a programmer and makes a living running a games web site. Jeff disappeared on us. Steve took me to a club he liked. The club had live bands that were really good. The song <em>Moves Like Jagger</em> by Maroon 5 seems to be really popular in Taiwan and Thailand. Took a taxi home. Went to bed around 3 AM.</p><p><strong>Thursday, January 12, 2012</strong></p><p>Woke up at 6:30 AM inexplicably hung over (I didn&rsquo;t drink that much the night before) and incredibly sore and stiff from the massage. Passed between sore, tired discomfort and uneasy dozing until noon. I could barely bend over, I was so stiff. Stretched some. Pineapple-fried rice again. Rode the BTS to Chit Lom station and saw the Erawan shrine. Continued on to National Stadium station to see BMK and the Jim Thompson House. Backtracked to Siam station and changed lines for Saphan Taksin station. Rode the express boat to Saphan Phut station to see the Pak Khlong night flower market. Planned to return to the Patpong market to buy some t-shirts, but I mixed up the location, and ended up just returning to my hostel. Did some laundry.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2012-01-12:/2012/01/12/bangkok-thailand/</guid><link>https://willfaught.com/2012/01/12/bangkok-thailand/</link><atom:link href="https://willfaught.com/2012/01/12/bangkok-thailand/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 12 Jan 2012 09:17:00 -0800</pubDate><title>Bangkok, Thailand</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>For six days, I rode on the back of Hien&rsquo;s motorcycle as we wound our way through the back country from Dalat to Hoi An. My pack was wrapped in a plastic bag and tied to the back of the bike, Hien sat in front with his pack, and I was sandwiched between them. The weather was nice and warm for several days, but then grew cool and rainy toward the end. The cool wind blowing on your face and body masks the intense sunshine beating down on you. I wore long-sleeved shirts to protect my arms, but my left wrist and hand became burned and sensitive to the sun, so I wore gloves and a bandana around my neck. I also bought a face mask for the dust that buses and trucks would sometimes kick up into the air. Hien had a poncho for me when it started raining. Thank god I still had my jacket! The longest I had ever ridden on a motorbike before was about an hour in the Mekong Delta. I was unprepared for a six-day ride. After the first couple days, I would feel weary toward the end of the day. After a couple more days, I would feel weary after only a few hours of riding. I started to take breaks between lunch and arriving at the hotels. It was about that time that I wished I had only done a three day trip, but after it was all over I was glad I stuck it out. (The alternate title for this post is <em>Buns of Steel</em>.) Hien is supposedly the first one to provide this kind of motorbike guide service. He was discovered by a Lonely Planet writer some years ago, and since then the market for motorbike tours has taken off and there are many other so-called Easy Rider guides to choose from. In typical Vietnamese fashion, all the motorbike guides claim that they&rsquo;re the original Easy Rider, and there&rsquo;s almost no way to figure out who&rsquo;s telling the truth. I found Hien through a review on TripAdvisor, and it all just kind of worked out. According to several guidebooks, Hien actually is the original guy, and his web site has pictures of the guidebook pages to prove it. He charged me $75 per day, which is really steep, and it&rsquo;s also $10–$15 more than the competition&rsquo;s prices. Based on his excellent reviews, I figured that he was worth the premium. Several times he pointed out how other guides passed up places and things that he took the time to show me and tell me about. Hien fought for the south in the American War, and afterward he couldn&rsquo;t get a job because he was blacklisted by the northern communist government. He&rsquo;s been an Easy Rider for about twenty years now, and seems to have taught many other Easy Riders which routes to take and places to see. He&rsquo;s somewhere between middle age and old age, and has thinning, graying hair; skin like crinkled paper; and a toothy, white smile. He&rsquo;s very sociable with other Vietnamese, seemingly able to strike up conversations with anyone, and carried shampoo and candy as bribes to allow me to get close to the local people for pictures. He was good at pointing out things that would make great pictures like overloaded motorbikes and colorful outfits. We didn&rsquo;t have great chemistry, so there were lots of quiet meals shared between us. There are many minority villages in the back country that speak their own language and farm the surrounding land. Even Hien couldn&rsquo;t speak to a lot of them. It being a communist country, everyone — even the poorest of the poor — had televisions and satellite dishes, which is just bizarre. The government builds a small modern building in a lot of these villages; I guess it&rsquo;s their point of contact with the people there. Some minority people didn&rsquo;t like the more modern (non-squat) toilets that the government installed for them, so they made their own makeshift squat toilets nearby. The government essentially bribes these people not to slash and burn the jungle around them. I saw too many things to list here, but I will say that the thing that struck me the most was the beautiful land. There are so many beautiful hills, valleys, fields, gorges, rivers, and sunsets there that I&rsquo;m running out of room to store all the pictures I took of them. It is truly a beautiful country. The effort it takes to get out there to see it is worth it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-27:/2011/12/27/from-dalat-to-hoi-an-vietnam/</guid><link>https://willfaught.com/2011/12/27/from-dalat-to-hoi-an-vietnam/</link><atom:link href="https://willfaught.com/2011/12/27/from-dalat-to-hoi-an-vietnam/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 27 Dec 2011 03:42:10 -0800</pubDate><title>From Dalat To Hoi An, Vietnam</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Warning: Some are graphic.</p><p><a href=https://willfaught.com/2011/12/20/vietnam-2012-pictures/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-20:/2011/12/20/vietnam-2012-pictures/</guid><link>https://www.dropbox.com/gallery/18866064/1/Vietnam%202011?h=739f41</link><atom:link href="https://www.dropbox.com/gallery/18866064/1/Vietnam%202011?h=739f41" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 20 Dec 2011 08:07:00 -0800</pubDate><title>Vietnam 2012 Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve found the holy grail of Dropbox upload speeds, and it&rsquo;s at <a href=https://www.hostelworld.com/hosteldetails.php/Flip-Flop-Hostel-Taipei-Main-Station/Taipei/51111 rel=external>Flip Flop Hostel</a>
in Taipei! <em>Yes!</em></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-14:/2011/12/14/the-broadband-holy-grail/</guid><link>https://willfaught.com/2011/12/14/the-broadband-holy-grail/</link><atom:link href="https://willfaught.com/2011/12/14/the-broadband-holy-grail/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 14 Dec 2011 00:32:42 -0800</pubDate><title>The Broadband Holy Grail</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I rode an open tour bus from Saigon to Dalat. It took about six or seven hours, and we arrived in the evening. I passed the time listening to podcasts, watching <em>My Cousin Vinnie</em> on my laptop, and chatting with a Thai girl, Pla, sitting next to me. She was going to Dalat for a weekend vacation with her two friends. She was really friendly and invited me to join her and her friends in their taxi after we arrived at the bus station. Having no plan, I agreed and went with them to their hotel. I got a room, and then joined them for dinner and walking around the night market area. I was dismayed to find that Dalat&rsquo;s climate was much cooler than Saigon&rsquo;s. Perhaps I had gotten rid of my long underwear and cardigan too soon. The girls did a city tour the next day, and I joined them for that as well. The tour wasn&rsquo;t great, taking us to several touristy places, but we rode a cable car that gave us a great view of the city and the surrounding hills and forest. The city itself is interesting to see, being cleaner and more colorful than Saigon, a welcome change. When we got back, I e-mailed an Easy Rider guide named Hien about whom I had read good things on TripAdvisor about doing a six day ride from Dalat to Hoi An, a city north of Dalat and the central highlands. Fortunately, he was going to return to Dalat that day and could meet me the next morning. I changed hotels to something cheaper and was sorry to say goodbye to the girls. Hien and I met the next morning. We agreed on the tour and the price, and then we were off.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-13:/2011/12/13/dalat-vietnam/</guid><link>https://willfaught.com/2011/12/13/dalat-vietnam/</link><atom:link href="https://willfaught.com/2011/12/13/dalat-vietnam/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 13 Dec 2011 02:53:00 -0800</pubDate><title>Dalat, Vietnam</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve accumulated 26.19 GB of pictures and videos on my travels so far. Soon their size will exceed the capacity of the 32 GB flash drive that I use to back them up. When that happens, all of my picture and video eggs will be in my laptop basket. Dropbox upload speeds are too slow to keep pace. At that point, I don&rsquo;t know what I can do, other than find a wifi connection with a fast upload speed. Good luck with that.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-12:/2011/12/12/running-out-of-space/</guid><link>https://willfaught.com/2011/12/12/running-out-of-space/</link><atom:link href="https://willfaught.com/2011/12/12/running-out-of-space/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 12 Dec 2011 08:10:00 -0800</pubDate><title>Running Out Of Space</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My notes of Japan:</p><ul><li>Japanese wear masks if they&rsquo;re sick to prevent spreading disease in public.</li><li>There are sometimes different slippers for around the house and inside the bathroom.</li><li>Koreans in Seoul tend to dress sharper.</li><li>The Tokyo subway is similar to that in Seoul, although more complicated and extensive.</li><li>Most people are silent on the subway. It&rsquo;s taboo to talk, eat, or drink.</li><li>Lots of people ride bicycles on the sidewalks.</li><li>Drive on the left.</li><li>When on foot, stand and walk on the left and pass on the right.</li><li>Most mobile phones are dumb phones. I saw few Japanese using touch screens. I was surprised by this. I assumed Japanese were way ahead of Americans on mobile tech. Maybe I&rsquo;m missing something.</li><li>Most of the Japanese I interacted with (waitresses, retailers, etc.) could speak some or a lot of English.</li><li>Formality in Japanese is &ldquo;sprinkled&rdquo; at the end of phrases. Just add &ldquo;gozaimasu&rdquo; (pronounced <em>go-zah-ee-moss</em>) to the end. Different from Korean, where you seem to add a <em>-yo</em> suffix to words to be formal.</li><li>Kimonos everywhere.</li><li>When you check out of a hostel, you have to bring your pillowcase to reception. Just the pillowcase, not the sheets. Weird.</li><li>Sandwiches are either triangular or rectilinear.</li><li>The character &lsquo;<del>&rsquo; is used for ranges, e.g. 1</del>4, 2:00~4:00.</li><li>Military time.</li><li>The pillowcases are just sheets, not actual cases that encase the pillow.</li><li>VAT prices. <em>Yes!</em></li><li>As in Korea, it&rsquo;s difficult to gauge the age of Japanese. They tend to look 5–10 years younger.</li><li>Bathrooms rarely have hand towels, even in hostels. Bring a handkerchief.</li><li>Toilet paper is usually in public toilet stalls.</li><li>You can see Yakuza on the streets of Kyoto. They dress in nice suits, sort of an American 1940s look, and are known for arm tattoos. It&rsquo;s not good to have arm tattoos of your own.</li><li>Arabic numerals, thankfully.</li><li>I met lots of fellow travelers who were there for a conference.</li><li>US electrical plugs. <em>Yes!</em></li><li>Restaurants usually give you wet hand towels or napkins before the meal.</li><li>Slurping noodles is common and not impolite.</li><li>Cross your forearms to signify &rsquo;no&rsquo;.</li><li>There&rsquo;s a McDonald&rsquo;s on virtually every block in Tokyo.</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-12:/2011/12/12/japan-notes/</guid><link>https://willfaught.com/2011/12/12/japan-notes/</link><atom:link href="https://willfaught.com/2011/12/12/japan-notes/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 12 Dec 2011 05:25:00 -0800</pubDate><title>Japan Notes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I headed south from Saigon to the Mekong Delta to see some floating markets and river life. I met some volunteers from England and Australia on the bus from the Ben Thanh market to the bus terminal and decided to follow them to My Tho. I took a taxi with them to their hotel, got a room, and joined them for dinner. Afterward, I arranged for a four-hour private boat tour of the nearby river the next day. I was taken to tourist traps on three islands, none of which had anything worthwhile. The only redeeming part was a really cool ride on a row boat down a tiny stream in the middle of a jungle. Ben Tre was just across the river, and probably more of the same, so I decided to skip it. I rode a motorbike taxi for an hour to Vinh Long and did a &ldquo;home stay.&rdquo; I use quotation marks because I had pictured staying the night with a family in their home, maybe sleeping in the guest room they have friends and family stay in, but this was not the case. At least, not unless average Vietnamese families live in hotels and never speak to their guests. As a bonus, there was no air con and the bathroom plumbing stopped working. I&rsquo;ve since learned that most home stays in Vietnam are like that, i.e. rustic hotels, so if you really want to have the &ldquo;real&rdquo; experience, at least do it north of the delta where you won&rsquo;t miss air con. I met a couple of funny English guys who were doing a bicycle tour and passed the evening with them drinking beers and telling stories. I hired another private boat in the early morning (early for me is 8) to take me to the Cai Be floating market. When I got there, I was disappointed to find that it was already over. No one had thought to mention to me that I was leaving too late to see anything. At this point, I was embittered on the whole delta and ready to leave, but I decided to give it one more shot. I continued on to Can Tho, getting scammed into overpaying for the bus ticket by someone who didn&rsquo;t work for the bus company. I arranged yet another private boat for the next day to see two floating markets, a backwater canal, and a noodle factory. We left at 5 (dear lord!) in the morning and it took us an hour to get there, but holy shit was it worth it! The tour lasted for eight hours and I saw some amazing sights, and even walked across a monkey bridge. It was amazing. <em>That</em> was what I had been looking for. Satisfied, I arranged for an open tour bus back to Saigon.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-12:/2011/12/12/mekong-delta-vietnam/</guid><link>https://willfaught.com/2011/12/12/mekong-delta-vietnam/</link><atom:link href="https://willfaught.com/2011/12/12/mekong-delta-vietnam/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 12 Dec 2011 00:52:46 -0800</pubDate><title>Mekong Delta, Vietnam</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Here are my pictures from South Korea, Japan, Hong Kong, and Singapore:</p><ul><li><a href="https://www.dropbox.com/gallery/18866064/1/South%20Korea%202011?h=9a5f74" rel=external>South Korea</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Japan%202011?h=6116ec" rel=external>Japan</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Hong%20Kong%202011?h=ed2cbc" rel=external>Hong Kong</a></li><li><a href="https://www.dropbox.com/gallery/18866064/1/Singapore%202011?h=4eca07" rel=external>Singapore</a></li></ul><p>I tried using Flickr and Facebook to share them, but both failed me. Uploading to Flickr was too slow in Vietnam. Uploading to Facebook with iPhoto produced duplicates and limited albums to 200 pictures. Dropbox came to my rescue. I exported 1,232 pictures from iPhoto to the Dropbox Photos directory with medium size and quality, weighing in at 83.8 MB. Simple and fast. I love it. Dropbox is definitely the way to go when you want to share lots of pictures. The only downside is that the pictures don&rsquo;t tie into Flickr or Facebook.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-11:/2011/12/11/travel-pictures/</guid><link>https://willfaught.com/2011/12/11/travel-pictures/</link><atom:link href="https://willfaught.com/2011/12/11/travel-pictures/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 11 Dec 2011 22:47:06 -0800</pubDate><title>Travel Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I arrived in Ho Chi Minh City (Saigon for the lazy&mldr;or stubborn) and took a taxi to my hostel, Long Guesthouse, in the Phạm Ngũ Lão backpacker area of District 1. The staff were very friendly and helpful, but there wasn&rsquo;t a common room, so it was difficult to meet people, which I didn&rsquo;t like. After a couple days, I chose to switch to another hostel, Saigon Backpackers, that was nicer and had a more social atmosphere. I stayed there for the rest of my time in Saigon. There were a few sights in the area that I was interested in seeing:</p><ul><li>Notre Dame church (ended up not seeing this one)</li><li>Architecture of the post office</li><li>Cuchi tunnels</li><li>War Remnants Museum</li><li>Reunification Palace</li></ul><p>The War Remnants Museum was all about the bad things the U.S. did in the American War, as they call it, most notably Agent Orange. How Agent Orange didn&rsquo;t qualify as a crime against humanity, I can&rsquo;t imagine. &ldquo;Oops&rdquo;? Truly moving imagery. I came close to crying several times. I think I spent about three hours there. I highly recommend it. I met lots of people and made friends with a few. I saw a few sights with a few of them, and chatted with them in the dorm or went out for a meal in the nearby restaurants. One evening, as I was eating dinner with a friend on a sidewalk in the backpacker area, droves of young people suddenly swarmed the road in front of us on their motorbikes. They were celebrating the victory of the Vietnam football (soccer) team. Lots of shouting and cheering and carrying on. At one point a guy stood on something in the middle of the street and fired confetti into the air to the cheers of the crowd. Of course, this was the <em>one time</em> I left my camera in my bag. (Speaking of football, why is American football called that when kicking it is like five percent of the game? It should be called runball or tackleball or boringball. You know, something descriptive. <em>Zing.</em>) It was hot hot <em>hot</em>. I showered at least twice a day. If you stepped outside, you started sweating. It was not pleasant. It rained heavily for about thirty or forty-five minutes each day, usually in the late afternoon or evening. Wherever you were when it started, there you were stuck. Fortunately, this usually happened as I was drinking beer with friends under shelter on the sidewalk. It was fun watching the bar proprietors set up the umbrellas and the water quickly become inches deep. After you&rsquo;ve lived in a place for several days, you get used to the rhythm of the place. You find a restaurant and a bar you like. You develop a routine. So despite the humid weather, I found myself growing comfortable. But I had run out of things to see and do.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-05:/2011/12/05/ho-chi-minh-city-vietnam/</guid><link>https://willfaught.com/2011/12/05/ho-chi-minh-city-vietnam/</link><atom:link href="https://willfaught.com/2011/12/05/ho-chi-minh-city-vietnam/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 05 Dec 2011 08:22:43 -0800</pubDate><title>Ho Chi Minh City, Vietnam</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I got laid over in Singapore on my way from Hong Kong to Vietnam. The passengers were delayed boarding the plane because there was a problem with a smoke detector. The delay caused me to miss my connecting flight in Singapore. The airline, Jetstar, put me up in a decent hotel (Riverview) for the night and paid for the taxis and meals. As you might guess, the hotel was on the shore of a small river, alongside several other large hotels. The buildings were lit in interesting and attractive ways, and a nearby bridge had a cool wavy roof with a blue light running underneath it over the walkway. I ate dinner and strolled around the river area with a beer in hand. It was nice to have a room to myself for once. I took advantage of the extra privacy and space. The room&amp;rsquo;s power was turned on by inserting my door key into the wall. It took a few minutes to figure this out. I made it back to the airport the next morning with no problems. Apparently it had been raining recently, but the weather had brightened that morning, and the sun was out and the sky was blue. The drive to the airport was about 45 minutes, ample time to take in some of the passing scenery. The city is beautiful, clean, and lush. Trees are planted at regular intervals seemingly everywhere. Soon I was on my way to Vietnam.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-12-05:/2011/12/05/singapore/</guid><link>https://willfaught.com/2011/12/05/singapore/</link><atom:link href="https://willfaught.com/2011/12/05/singapore/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 05 Dec 2011 07:39:00 -0800</pubDate><title>Singapore</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was in Hong Kong for a week. It&rsquo;s a mix of old and new, touristy and authentic, cheap and pricey. Real estate must cost through the roof, because the hostels there were the dirtiest I&rsquo;ve ever seen. Granted, all I&rsquo;d seen before that were the ones in South Korea and Japan, which are very clean and tidy places. But still: I&rsquo;m talking about taking a shower while staring at insects crawling on the wall a foot away, about trying to put your pants on without letting the ankle cuffs touch the bathroom floor. <em>That</em> kind of dirty. The weather was a mix of good and bad. My first foray into the city was on a rainy and humid day, the kind where the sweat sticks to your back and face. Other days were quite pleasant. I got around quite easily on the MTR metro, and even rode the tram both ways to see Hong Kong Island. I saw and did lots of stuff:</p><ul><li>Hong Kong Park</li><li>Hong Kong Botanical Garden</li><li>The Peak</li><li>Graham St Market</li><li>Midlevel Escalators</li><li>Temple St Market</li><li>Wong Tai Sin Temple</li><li>Chungking Mansions</li><li>Peninsula Hotel</li><li>Tsim Sha Tsui promenade</li><li>Light show</li><li>Lan Kwai Fong</li><li>Causeway Bay</li><li>Aberdeen Harbor</li><li>Hong Kong Tram</li><li>Star Ferry</li></ul><p>I didn&rsquo;t make it to Lantau Island or Macau. The Vietnam consulate kept my passport for four or five days, so I couldn&rsquo;t enter Macau. I ran out of steam before I could do Lantau. I met a lot of cool people in the hostels I stayed in. At the second hostel, Tin Tong, I was standing with a group of other guests on the building roof, drinking beers and chatting. I realized at one point that I was the only native English speaker there, and everyone was talking and joking conversationally just fine with each other. I felt extremely privileged to have grown up speaking English, and at the same time very stupid for not knowing another language myself; everyone else seemed to be more accomplished than I linguistically. It was a humbling and wondrous moment. I met this guy around my age named Sergio from Texas in Seoul just before I left for Jeju. He was traveling around the world, and had just come from Egypt. In Kyoto, we saw each other in the lobby and squinted and tried to recall where we&rsquo;d seen each other. We laughed about it, and got a beer together. I went out for dinner and karaoke shortly later, and I left Kyoto the next morning, so I never got his contact info. Well, guess who I ran into at a hostel in Hong Kong? Sergio! We drank some more beers and exchanged contact info and laughed about it again. Hopefully we&rsquo;ll run into each other again on the road. I was disappointed that I didn&rsquo;t get to practice Cantonese more. The people I interacted with we&rsquo;re mostly cashiers, retailers, and waiters, and most were unfriendly, barely acknowledging that I had said anything at all. When you can&rsquo;t tell if you&rsquo;re saying things right, you stop wanting to try. So I did. I had fun learning some Korean and Japanese, at least.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-12-03:/2011/12/03/hong-kong/</guid><link>https://willfaught.com/2011/12/03/hong-kong/</link><atom:link href="https://willfaught.com/2011/12/03/hong-kong/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 03 Dec 2011 07:03:54 -0800</pubDate><title>Hong Kong</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Monday, November 7, 2011</em></p><p><strong>Narita</strong></p><p>Yama, the hostel owner, gave me a free ride to the Narita airport in the morning. I flew from there to the <a href="https://www.google.com/search?q=shanghai+pudong+airport" rel=external>Shanghai Pudong airport</a>
. The architecture of the terminal was lofty and impressive. The airport had wifi, but Facebook, Twitter, and Dropbox were blocked by the Great Firewall. I then flew to Hong Kong and arrived in the evening. It was much warmer than South Korea or Japan had been, to the point where you would sweat just by standing there.</p><p><strong>Hong Kong</strong></p><p>I rode a bus from the airport into the city and got off in <a href="https://www.google.com/search?q=causeway+bay" rel=external>Causeway Bay</a>
. The hostel, <a href=https://www.hostelworld.com/st/hostels/p/16037/hong-kong-hostel/ rel=external>Hong Kong Hostel</a>
(love the name), hadn&rsquo;t provided any walking directions from there, so I floundered for the next twenty minutes or so trying to figure out what street I was on, which way was which, and finally found 47 Paterson Street. I checked in, and found the staff to be disinterested and bored and the facilities to be seedy, cheap, and dirty. The common room sucked. It wasn&rsquo;t a good vibe. But the location was great and the price couldn&rsquo;t be beat. I dropped off my stuff in my room and met my roommates, Doug (from the U.S.) and Mahesh (from India). It was late, about 10 PM, and I hadn&rsquo;t eaten, so I went back on the street and wandered around for a few minutes. I didn&rsquo;t see any local food restaurants, but I did see a McDonald&rsquo;s, and it was late, and I was hungry, so I decided to just eat there.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-24:/2011/11/24/hong-kong-long-day-of-traveling/</guid><link>https://willfaught.com/2011/11/24/hong-kong-long-day-of-traveling/</link><atom:link href="https://willfaught.com/2011/11/24/hong-kong-long-day-of-traveling/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Nov 2011 03:59:53 -0800</pubDate><title>Hong Kong: Long Day Of Traveling</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Sunday, November 6, 2011</em></p><p><strong>Hiroshima</strong></p><p>Chris (from Australia) and I rode the Shinkansen train to Tokyo. It took five hours altogether. We had to sit apart, so I mostly listened to podcasts to pass the time. It was pleasant just to sit there and watch the landscape slide past.</p><p><strong>Tokyo</strong></p><p>At the JR station, Chris and I parted ways. He was returning home, having spent two weeks in Japan for vacation. I rode the metro to Ueno station and then transferred to the Ueno Keisei station, then rode the Keisei train to Narita.</p><p><strong>Narita</strong></p><p>I rode a bus from the Narita airport terminal out into the middle of nowhere and then walked ten minutes in the dark to my hostel, <a href=https://www.hostelworld.com/hosteldetails.php/Narita-Airport-Hostel/Narita-Airport/28878 rel=external>Narita Airport Hostel</a>
. I checked in, then called home using Skype. I chatted with my dad for a half hour or so, then went to sleep.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-12:/2011/11/12/japan-backtracking/</guid><link>https://willfaught.com/2011/11/12/japan-backtracking/</link><atom:link href="https://willfaught.com/2011/11/12/japan-backtracking/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 12 Nov 2011 08:04:38 -0800</pubDate><title>Japan: Backtracking</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Saturday, November 5, 2011</em></p><p><strong>Kyoto</strong></p><p>The sky was gray and dreary. Chris (from Australia) and I took the Shinkansen train to Hiroshima.</p><p><strong>Hiroshima</strong></p><p>It was raining when we arrived two hours later. We walked a few blocks to our hostel, <a href=https://www.hostelworld.com/st/hostels/p/30699/backpackers-hostel-k-s-house-hiroshima/ rel=external>K&rsquo;s House</a>
. After checking in, we rode the street tram to the <a href="https://www.google.com/search?q=a-bomb+dome" rel=external>A-Bomb Dome</a>
. We strolled around the perimeter, taking photos here and there, and reading the plaques of a few art installations commemorating the event of the bombing and the people and children affected by it. Nearby was the <a href="https://www.google.com/search?q=hiroshima+peace+museum" rel=external>Hiroshima Peace Museum</a>
, and incredibly informative and moving presentation of dates, timelines, correspondence, military intelligence, the fallout, and the aftereffects of the bombing that occurred there. I only spent an hour and a half there, and then it closed. I could easily have spent another hour seeing the rest of what I missed. I learned several things that surprised me. One thing was that one reason the U.S. decided to deploy the bomb against the Japanese instead of the Germans was because it was thought the Japanese would be able to learn less about atomic technology from the attack. Another thing was that basically the only thing keeping the Japanese from surrendering was that they wanted to preserve the emperor system of government, but the Allies wouldn&rsquo;t budge on that point. Another thing was that, to develop the atomic bomb, it cost the U.S. government $2 billion ($24.57 billion adjusted for inflation) using 120,000 people and dozens of factories, labs, and other installations across the world. Justifying the cost of the project to U.S. citizens was absolutely one reason why it was deployed at all. Every time a country tests a nuclear weapon, the mayor of Hiroshima mails a public letter of protestation to the country&rsquo;s leader exhorting them to cease the use of nuclear technology. Every letter is reproduced in an individual metal card in the museum. The latest three were addressed to President Obama. It was really moving. Afterward, we rode the tram back to the hostel and hung out in the common room for a while, chatting with a couple other guests, Jason (from Australia) and Sam (from England). Later, we all walked to a nearby Taiwanese restaurant and got dinner to go, then took it back to the hostel. I went to a nearby 7-11 after dinner and bought an ice cream cone and some beers for Chris and myself. I was encountering some weird syncing problem with my iPhone, so I spent a couple hours just trying to get that fixed. By the time I finished that and went to bed, it was 4 AM. Chris went to bed at 5.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-12:/2011/11/12/japan-aftermath-of-a-cataclysm/</guid><link>https://willfaught.com/2011/11/12/japan-aftermath-of-a-cataclysm/</link><atom:link href="https://willfaught.com/2011/11/12/japan-aftermath-of-a-cataclysm/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 12 Nov 2011 07:39:29 -0800</pubDate><title>Japan: Aftermath Of A Cataclysm</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Friday, November 4, 2011</em></p><p><strong>Nara</strong></p><p>It was warm and sunny. I rode the train for an hour to <a href="https://www.google.com/search?q=nara+japan" rel=external>Nara</a>
, a small city near Kyoto that&rsquo;s well known for several temples and about 1,200 wild deer that roam freely in the parks, streets, and walkways of the city. They&rsquo;re accustomed to humans, so they&rsquo;re not shy about coming up to you to see if you have food for them. If they smell it on you, they&rsquo;ll follow you around and nip at your shirt until you give them what they want. I managed to take several pictures of the deer eating (yanking) out of my hand. After the deer and picked me clean of food, I walked to <a href="https://www.google.com/search?q=todaiji" rel=external>Todaiji</a>
and saw the largest Buddha statue in Japan. From there, I walked east to <a href="https://www.google.com/search?q=nigatsu-do" rel=external>Nigatsu-do</a>
, which was perched on a hill and had an incredible view of Nara Park. I walked south to <a href="https://www.google.com/search?q=kasuga-taisha" rel=external>Kasuga-taisha</a>
, the Buddhist temple of many lanterns, both hanging and mounted. Everything was colored vermillion. Quite striking. Then I walked west to the <a href="https://www.google.com/search?q=nara+national+museum" rel=external>Nara National Museum</a>
, which had lots of information and displays about Buddhist practices and items. I had no idea incense, and the sense of smell in general, plays such a big role in Buddhism. Afterward, I strolled through the park some more, snapping a few photos of the deer in an open grass field.</p><p><strong>Kyoto</strong></p><p>I returned to Kyoto by train and ate tempura for dinner with Chris (from Australia); Kenji (from Japan, who shared my dorm room); Carmen, Sam and Rob (all from England); Bob (an older man from Japan); and some annoying drunk guy who was from the Netherlands. The tempura was delicious, and afterward we all sang karaoke at a place Bob led us to. A couple days later, Chris and I wondered whether Bob was trying to make a commission off of us, but there was no way to tell. The English girls sang an exhilarating rendition of <a href="https://www.youtube.com/watch?v=XAi3VTSdTxU" rel=external><em>Earth Song</em></a>
by Michael Jackson. I noted the song name and bought it later. I think I&rsquo;m becoming a fan of Michael Jackson.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-12:/2011/11/12/japan-what-about-the-deer/</guid><link>https://willfaught.com/2011/11/12/japan-what-about-the-deer/</link><atom:link href="https://willfaught.com/2011/11/12/japan-what-about-the-deer/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 12 Nov 2011 06:58:06 -0800</pubDate><title>Japan: What About The Deer?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Thursday, November 3, 2011</em></p><p><strong>Kyoto</strong></p><p>I met Chris (from Australia) and Marion (from France) in the morning in the bar adjacent to the hostel. We biked to the <a href="https://www.google.com/search?q=kyoto+imperial+palace" rel=external>Imperial Palace</a>
to see a cultural performance. We arrived late and saw only the last few minutes. Afterward, we walked around the palace grounds. There were large crowds because it was a special week in which they opened up the palace to the general public. Chris had been there before, and said that normally you have to visit as part of a small tour group. In addition, they had opened up <a href="https://www.google.com/search?q=shishinden" rel=external>Shishinden</a>
to the public, which even Chris hadn&rsquo;t been able to see before. After an hour or two we left and had lunch at a nearby McDonald&rsquo;s. (Don&rsquo;t judge me. I had an urge.) I ordered the double cheeseburger meal, but was given the double quarter pounder meal instead. I just figured out why that happened today, here in Hong Kong. I&rsquo;ll explain why later. I have to say that the fast food here is much much better than in the U.S.; it&rsquo;s put together much better; it actually looks like the picture you point at on the menu. Then we biked along the river to <a href="https://www.google.com/search?q=fushimi+inari+taisha" rel=external>Fushimi Inari-taisha</a>
, the <a href=https://en.wikipedia.org/wiki/The_Gateless_Barrier rel=external>not-so-gateless</a>
trails of countless orange <a href="https://www.google.com/search?q=torii" rel=external>torii</a>
gates. We hiked up quite a ways, although not to the top, or around, or whatever constitutes the furthest extent of those trails. It was getting dark, so we biked back to the hostel and holed up in the bar with our laptops for a while. I booked a hostel in Hong Kong and a flight from Hong Kong to Vietnam. Marion wanted to go to the <a href="https://www.google.com/search?q=gion" rel=external>Gion</a>
neighborhood and spot a <a href="https://www.google.com/search?q=geisha" rel=external>geisha</a>
, so we hopped on our bikes again. After a little wandering, we found the area, but I think it was too late in the evening, because we didn&rsquo;t see any. We split up, and I headed back to the hostel to get a recommendation for a good, cheap sushi place nearby. I strolled a few blocks to Kyoto Station and walked through it to the other side where some restaurants were. There I found the sushi place, which was certainly cheap: it was one of those places with a revolving track with plates on it that you take food from a la carte. It was good, though, and I left full of fish. I returned to the bar by the hostel and nursed a couple beers with Chris and Marion for the rest of the evening.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-11:/2011/11/11/japan-not-so-gateless-gates/</guid><link>https://willfaught.com/2011/11/11/japan-not-so-gateless-gates/</link><atom:link href="https://willfaught.com/2011/11/11/japan-not-so-gateless-gates/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 11 Nov 2011 02:41:14 -0800</pubDate><title>Japan: Not-So-Gateless Gates</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Wednesday, November 2, 2011</em></p><p><strong>Kyoto</strong></p><p>I upgraded my iPhone 4 to iOS version 5 in the morning using my new laptop. Then I rode a rented bicycle with Chris (from Australia), Mike (from the U.S.), and Marion (from France) to an eclectic Japanese store called <a href="https://www.google.com/search?q=don+quixote+store" rel=external>Don Quixote</a>
. It sells virtually anything you can think of, from clothing to food to kitchenware to seat cushions to memory cards to shoes. It&rsquo;s all packed tightly together along narrow aisles that twist and turn haphazardly. I looked for some pajama shorts and some t-shirts, but couldn&rsquo;t find anything I liked. Then we rode our bikes to a cheap <a href="https://www.google.com/search?q=ramen" rel=external>ramen</a>
shop near our hostel that had the best ramen I&rsquo;d had so far in Japan. Then we rode our bikes to <a href="https://www.google.com/search?q=sanjusangendo" rel=external>Sanjusangendo</a>
, a Buddhist temple near our hostel. The sheer number of statues (a thousand) is stunning. Then we rode to another famous Buddhist temple, <a href="https://www.google.com/search?q=kiyomizudera" rel=external>Kiyomizudera</a>
. It has a magnificent view of the city, and I was able to take some pictures of the cityscape at dusk when the lights started coming on. When we left the temple, it was dark, so we returned to the hostel and hung out for a while in the bar. I planned the following week that I would spend in Hong Kong on my computer. Then we took a taxi to a <a href="https://www.google.com/search?q=shabu+shabu" rel=external>shabu-shabu</a>
restaurant near the <a href="https://www.google.com/search?q=gion" rel=external>Gion</a>
district — a place known for its geishas. When eating shabu-shabu, you sit at a table with a pot of boiling water in the middle, in which you put vegetables, tofu, some other things I can&rsquo;t remember, and thin slices of various kinds of meat into the water to cook. The meat only takes five to fifteen seconds to cook per slice. If you select the right combination of meat and sauce, it can be heaven. You get as much meat as you can eat in an hour and a half. After the meal, we walked forty-five minutes along the river back to our hostel and arrived at about 2 AM.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-05:/2011/11/05/japan-a-thousand-reasons-to-go-out/</guid><link>https://willfaught.com/2011/11/05/japan-a-thousand-reasons-to-go-out/</link><atom:link href="https://willfaught.com/2011/11/05/japan-a-thousand-reasons-to-go-out/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Nov 2011 09:24:36 -0700</pubDate><title>Japan: A Thousand Reasons To Go Out</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Tuesday, November 1, 2011</em></p><p><strong>Tokyo</strong></p><p>I did laundry in the morning, then rode the <a href="https://www.google.com/search?q=shinkansen" rel=external>Shinkansen</a>
train with Chris (from Australia) to <a href="https://www.google.com/search?q=kyoto" rel=external>Kyoto</a>
.</p><p><strong>Kyoto</strong></p><p>Chris and I checked into our hostel, <a href=https://www.hostelworld.com/st/hostels/p/5536/backpackers-hostel-k-s-house-kyoto/ rel=external>Backpackers Hostel K&rsquo;s House Kyoto</a>
, then headed to the adjacent bar for a couple beers. I went back to my room to get something and met Mike (from the U.S.) and asked him to join Chris and I in the bar. I went back to the bar and researched what I wanted to see in Kyoto. Mike and Marion (from France) joined us and we chatted for a while over beers. The hostel threw a party with free sushi and snacks to celebrate their eighth anniversary. Afterward, they played bingo and gave away prizes. We were still hungry, so we walked a few blocks away and found a yakitori restaurant, where Mike — who had been teaching English in Japan for a year — ordered skewers of meat and beer for us. Then we walked back to the hostel and stopped at a 7-11 on the way to buy a beer for the road (there are no open container laws in Japan). We returned to the hostel and hung out in the common room for a few minutes before heading off for bed.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-05:/2011/11/05/japan-bingo/</guid><link>https://willfaught.com/2011/11/05/japan-bingo/</link><atom:link href="https://willfaught.com/2011/11/05/japan-bingo/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Nov 2011 08:56:00 -0700</pubDate><title>Japan: Bingo</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Monday, October 31, 2011</em></p><p><strong>Tokyo</strong></p><p>Still being sick, I let myself sleep in again. The weather was still gray and dreary, so again I decided to stay inside and take it easy. I called Tess at 2 PM and caught up with her. In the evening, I went out to eat <a href="https://www.google.com/search?q=okonomiyaki" rel=external>okonomiyaki</a>
— kind of like a Japanese pancake — delicious! — for dinner with Chris and Billy (both from Australia), Damian and Aliena (both from Canada), and Angelica and Felix (both from Sweden).</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-11-05:/2011/11/05/japan-japanese-pancakes-mdash-sort-of/</guid><link>https://willfaught.com/2011/11/05/japan-japanese-pancakes-mdash-sort-of/</link><atom:link href="https://willfaught.com/2011/11/05/japan-japanese-pancakes-mdash-sort-of/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Nov 2011 08:27:23 -0700</pubDate><title>Japan: Japanese Pancakes — Sort Of</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<ul><li>It feels (and is) very safe. I&rsquo;ve been wearing my money belt only for practice for Southeast Asia.</li><li>The subway system is the best I&rsquo;ve ever seen (but I haven&rsquo;t seen many). It&rsquo;s incredibly easy to use: to know where you are, which direction you&rsquo;re going, what the next stops are, which exit to take, and which side of the tracks to be on. English is on almost all signs, and most trains have announcements in English. It&rsquo;s all run by a single entity, unlike Tokyo, so you only pay once when you exit at your destination. I can&rsquo;t stress enough how useful it is for English speakers.</li><li>A lot of South Korean television shows seem to be reality shows.</li><li>Thick-rimmed glasses are fashionable among schoolchildren. I heard that some people who don&rsquo;t need glasses will wear the frames without lenses as an affectation.</li><li>Business suits are worn by every man going about his business, it seems. Dress here is very formal. Lots of ties, slacks, and jackets. Even when dressed informally, South Koreans dress very well. My first night in Seoul, I felt very underdressed in a small Japanese fusion restaurant. They dress to impress. Great hairstyles, too.</li><li>Young schoolchildren will say hello or hi to you if you&rsquo;re white. They learn English when they&rsquo;re very young, even before they learn Korean in school, so they&rsquo;re eager to practice. Several groups of schoolchildren wanted to take a picture with me as well.</li><li>Apple products are very popular here, seemingly even more so than Samsung and LG products. I saw lots of iPhones, iPads, and white earbuds.</li><li>When I arrived in Seoul, it was only two or three days after Steve Jobs&rsquo;s death. It was big news in Seoul. The story was playing constantly on televisions in the subway stations. There were copies of his biography in Korean being sold soon after.</li><li>Facebook is the true unifier among young travelers. If you meet them in hostels and they like you, they&rsquo;ll offer to connect and stay in touch via Facebook. Not MySpace, not Google+. Facebook is king.</li><li>The song <em>Party Rock Anthem</em> by LMFAO is very popular. I hear it played all over the city, in dance clubs, and on television commercials.</li><li>I seemed to be uncharacteristically resilient to drinking. Perhaps the alcohol content is lower than in the United States?</li><li>South Koreans make a &ldquo;V&rdquo; (for victory) sign with their fingers, palm facing out, when striking poses for pictures.</li><li>South Koreans hold and pass objects and pour liquids with both hands to be polite.</li><li>Age and station is very important for determining how people interact with each other. Younger people pour drinks for older people, older people tend to pay for younger people, younger people look away from older people when drinking from their cup, etc. It&rsquo;s very nuanced behavior that most Americans would be oblivious to without being informed. When meeting you, South Koreans may ask somewhat personal questions about your education, job, and age in order to figure out how they should behave around you: Are you beneath, above, or at the same level as them? There are special behaviors and language for each case.</li><li>South Korea has a counterpart to Japanese sake called makgeolli, except it&rsquo;s milky white instead of transparent.</li><li>A popular drink called soju is available in practically every restaurant and is commonly ordered with dinner. It&rsquo;s similar to vodka, but not as strong and goes down more smoothly.</li><li>Schoolchildren wear uniforms and go to separate schools based on their sex.</li><li>Taxis won&rsquo;t accept you unless you&rsquo;re going far enough to make it worth their while. I once had to walk forty-five minutes to a main road to catch a bus because a taxi driver didn&rsquo;t want to take me there.</li><li>Men (and some women) spit in public.</li><li>I know how to say hello, goodbye, thank you, yes, no, how are you, I&rsquo;m fine, and excuse me. The phrases are difficult to memorize, but unlike Japanese and Chinese, the Korean language uses an alphabet that is much easier to recognize and decipher. You can sound out words if you know what each letter means, like western languages. It just looks incomprehensible because letters are stacked into groups of two or three that form syllables.</li><li>Everything is in military time.</li><li>All numbers (prices, times, weights, temperatures, subway lines, amounts, etc.) are in Arabic numerals like in the United States.</li><li>1,000, 5,000, and 10,000 Korean won bills are common and are usually what&rsquo;s in your pocket. For any price in Korean won, simply divide by 1,000 and subtract about 15–20% to get the value in United States dollars. So 1,000 won is roughly a dollar, minus a little. It&rsquo;s easiest to just divide by a thousand for everything. Coins are almost worthless.</li><li>It&rsquo;s common for white foreigners to be complimented by South Koreans as being handsome. I never learned whether they meant it or not.</li><li>&ldquo;Mart&rdquo; is usually part of a convenience store name. FamilyMart is the most ubiquitous convenience store. There is a lot of English in signs and names for things.</li><li>New York Yankees baseball hats are popular. Baseball is the most popular sport.</li><li>I saw several people make a heart shape with their hands. I&rsquo;m not sure if this is a common gesture.</li><li>Some Asian countries, including South Korea, have a way to reckon a person&rsquo;s age that&rsquo;s different from how westerners do it. Westerners measure age as elapsed time, where when a person is born, they are zero years old, and time accumulates from there. Some Asians measure age starting at one, and then everyone ages one year at the same time at the new year. So it&rsquo;s possible that you can be two years old, yet not even one year has elapsed since your birth. It&rsquo;s at most off by two years from elapsed age.</li><li>South Korea has a value-added tax (VAT), so all listed prices are final. It&rsquo;s fantastic! I want one.</li><li>Mosquitos are a common annoyance at night in most hostels.</li><li>Pringles, Snickers, and Coca Cola can be found everywhere.</li><li>It can be very difficult to change careers because it&rsquo;s awkward for you to be older than your boss. Where that would be the case, you often won&rsquo;t be hired.</li><li>The population is very homogenous racially, with a very high percentage being Korean. People with dark or black skin can have a hard time finding jobs.</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-observations/</guid><link>https://willfaught.com/2011/10/30/south-korea-observations/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-observations/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 09:56:55 -0700</pubDate><title>South Korea: Observations</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Sunday, October 30, 2011</em></p><p><strong>Tokyo</strong></p><p>I woke up feeling sicker than ever: sore throat, dehydrated, and exhausted. I tried to sleep in as much as I could, but the sounds of roommates and cleaners eventually forced me awake. I contemplated going with Chris (from Australia) and Stephen (from New Zealand/Canada) to the <a href="https://www.google.com/search?q=national+museum+of+emerging+science+and+innovation" rel=external>National Museum of Emerging Science and Innovation</a>
, but I didn&rsquo;t feel up to it. I tried to call Tess at 2 PM, but couldn&rsquo;t reach her, then realized I was calling a day early because it was Sunday here, but Saturday there. D&rsquo;oh! It rained a little in the afternoon, so I decided to just stay in today and rest and catch up on my blogging. (As of today, I&rsquo;m finally caught up!) Chris and Stephen returned and we walked to a highly-rated <a href="https://www.google.com/search?q=ramen" rel=external>ramen</a>
restaurant near the Asakusa temple complex (Sensoji) for dinner. I had decided to spend my second week in Japan in Kyoto, so I booked a hostel in Kyoto. Chris (from Australia) is heading that way at the same time, so we may catch the same bullet train. I&rsquo;ve heard that Kyoto is even more fun than Tokyo, with more temples and better night life, so I&rsquo;m excited to move on.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/japan-day-of-rest/</guid><link>https://willfaught.com/2011/10/30/japan-day-of-rest/</link><atom:link href="https://willfaught.com/2011/10/30/japan-day-of-rest/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 09:06:28 -0700</pubDate><title>Japan: Day Of Rest</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Saturday, October 29, 2011</em></p><p><strong>Tokyo</strong></p><p>My throat still felt sore, so I let myself sleep in. Then I checked out of the Anne hostel and checked into <a href=https://www.hostelworld.com/hosteldetails.php/Backpackers-Hostel-Ks-House-Tokyo/Tokyo/16019 rel=external>Backpackers Hostel Ks House Tokyo</a>
. Using their wifi, I researched more into Japanese culture I might want to experience. I was still feeling under the weather, so I didn&rsquo;t want to do a lot of strenuous walking, so I decide to check out one of the many gardens in Tokyo. I rode the subway to <a href="https://www.google.com/search?q=rikugien+garden" rel=external>Rikugien Garden</a>
, a beautiful, peaceful garden that looks small at first glance, but has many meandering paths through woods away from the central pond. There&rsquo;s something about the foliage that gives everything a soft, smooth look that&rsquo;s soothing. I returned to the hostel and met my roommates. Since it was the Saturday before Halloween, it was the night that most young people would go out to celebrate with costumes, which is what they were planning to do. They invited me to come along, and I figured it would be a shame to miss Halloween in Tokyo no matter how sick I felt, so I accepted. I went out and searched for over an hour for a costume store, but no luck. For the third time during this trip I entered a store thinking it was one thing (in this case, a Halloween costume store), and it turned out to be a sex shop. I can&rsquo;t read anything posted on the windows or doors, and of course they don&rsquo;t put graphic things near the store entrance where passing children can see them, so without any context, I seem to be in store for many such surprises. I returned to the hostel feeling exhausted, and told my roommates that I wasn&rsquo;t in any shape to go out all night. I grabbed a cup of noodles and a sandwich from a nearby 7-11 for dinner. I met Chris (from Australia), Stephan (from New Zealand/Canada), and Tina (from Belgium) at my hostel, and they invited me to join them for a couple beers in Shibuya. We&rsquo;d be back around midnight before the subways closed for the night, so I agreed, figuring that wouldn&rsquo;t be too hard on my body, and off we went. We found a stand-up bar and ordered a few rounds of beers and a few appetizers and chatted for about an hour, then wandered the streets with beers in hand, purchased from a nearby <a href="https://www.google.com/search?q=familymart" rel=external>FamilyMart</a>
(ubiquitous in South Korea and Japan). We stopped at a KFC to use the toilet and we ordered a bucket of four pieces of chicken. We decided to stay out a little later because we were having a good time, so at the end of the night we had to take a taxi back to the hostel, which cost about <a href="https://www.google.com/search?q=1000+yen+in+usd" rel=external>1000 yen</a>
per person. We got home at about 2 AM. In my room, I spoke with a guy who had been traveling abroad for nine months and had just come from Vietnam, having spent forty days there. We spoke a little about Vietnam, since I would probably be going there in the next month or two. I went to bed exhausted.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/japan-sick/</guid><link>https://willfaught.com/2011/10/30/japan-sick/</link><atom:link href="https://willfaught.com/2011/10/30/japan-sick/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 08:50:32 -0700</pubDate><title>Japan: Sick</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Friday, October 28, 2011</em></p><p><strong>Tokyo</strong></p><p>I went to <a href="https://www.google.com/search?q=harajuku" rel=external>Harajuku</a>
, the young fashion center of Tokyo, to see the bizarre outfits and explore the clothing shops. I ate <a href="https://www.google.com/search?q=udon" rel=external>udon</a>
for the first time for lunch. I went to the Apple store in Shibuya and bought a <a href=https://www.apple.com/macbookair/ rel=external>128 GB 11" MacBook Air</a>
. I couldn&rsquo;t stand not having my own computer environment anymore. I had been having trouble finding the time or opportunity to blog about my experiences. I needed a way to back up my pictures in case I lost my camera. I wanted to upgrade my iPhone&rsquo;s operating system to version 5, which unfortunately had been released <em>after</em> I left home. I knew exactly what I wanted, and the staff there were great getting me all set up. Thanks to the great service <a href=https://www.dropbox.com/ rel=external>Dropbox</a>
, my entire digital environment is accessible worldwide: music, documents, pictures, videos, anything I want accessible. I just have to wait for it all to download. From this point on, everything I blogged was done with my new precious. With my new laptop secure in my daypack, I rode the subway to <a href="https://www.google.com/search?q=shinjuku" rel=external>Shinjuku</a>
and explored the high-rise government buildings and brightly-signed streets of the <a href="https://www.google.com/search?q=kabukicho" rel=external>Kabukicho</a>
red light district. From there, I rode the subway to <a href="https://www.google.com/search?q=ikebukuro" rel=external>Ikebukuro</a>
and sought out <a href="https://www.google.com/search?q=ikebukuro+sunshine+city" rel=external>Sunshine City</a>
. After an hour of searching, my feet were tired, and my throat felt sore, so I gave up and returned home. Just before bed, I researched some elements of Japanese culture that I wanted to experience, like a <a href="https://www.google.com/search?q=japanese+tea+ceremony" rel=external>Japanese tea ceremony</a>
, <a href="https://www.google.com/search?q=kabuki" rel=external>kabuki theater</a>
, <a href="https://www.google.com/search?q=bunraku" rel=external>bunraku puppetry</a>
, and <a href="https://www.google.com/search?q=sumo+wrestling" rel=external>sumo wrestling</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/japan-my-precious/</guid><link>https://willfaught.com/2011/10/30/japan-my-precious/</link><atom:link href="https://willfaught.com/2011/10/30/japan-my-precious/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 08:28:00 -0700</pubDate><title>Japan: My Precious</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Thursday, October 27, 2011</em></p><p><strong>Tokyo</strong></p><p>I went with Karlee (from Canada) to the <a href="https://www.google.com/search?q=tsukiji+fish+market" rel=external>Tsukiji fish market</a>
late in the morning. Unfortunately, the real action begins at 5 or 6 AM, so the show was mostly over when we got there. We perused the aisles of the market anyway and saw some cool things, then exited and ordered relatively cheap, super fresh sushi bowls at a nearby restaurant. Karlee was going to meet a friend at Ginza, and I had already been there, so we parted ways. I didn&rsquo;t know where I was going next, so I pulled out my map and iPhone and decided to go see the <a href="https://www.google.com/search?q=sensoji+temple" rel=external>Sensoji Buddhist temple</a>
next in the Asakusa district. But first, I had to use the toilet in the subway station, and for the second time since the start of my journey I faced a <a href="https://www.google.com/search?q=squat+toilet" rel=external>squat toilet</a>
. I had to <em>really</em> go, if you know what I mean, but I knew of no other toilet nearby, so I was committed to having my first squat experience. In Japan, of all places. I was sure it would happen in South Korea, not Japan. Anyway, having read my <em>Going Abroad</em> book from cover to cover, I was prepared, my technique was flawless, and everything went according to plan. The temple, gates, and pagoda were incredibly beautiful. There was a nearby Shinto shrine that I visited as well. I was much more impressed by the Buddhist temple. Shinto shrines seem to be much more minimalist; if you&rsquo;re not into the religion, you don&rsquo;t seem to get as much out of visiting them as the Buddhist temples, at least aesthetically. Maybe that&rsquo;s the idea? Next I went to <a href="https://www.google.com/search?q=ueno+park" rel=external>Ueno park</a>
and strolled around the trees and ponds. There was a man holding food in his hand and tiny birds were flocking a nearby tree trunk and hopping onto his hand and arm two or three at a time. I entered the <a href="https://www.google.com/search?q=tokyo+national+museum" rel=external>Tokyo National Museum</a>
and looked at the Japanese art exhibit for an hour until my legs were tired. I returned to the Toco hostel and checked out, then checked into <a href=https://www.hostelworld.com/hosteldetails.php/Anne-Hostel-Asakusabashi/Tokyo/32652 rel=external>Anne Hostel Asakusabashi</a>
. I rode the subway to Akihabara, the geeky part of town, and checked out the multi-storied arcade buildings and ate some sushi. I had wanted to see the <a href=https://www.taito.co.jp/gc/details/tokyo/tokyo/sgc00366/index.html rel=external>HEY</a>
arcade in particular. When I entered, I noticed there was a staircase leading to a basement level. I descended and found what looked to be a crowded <a href=https://en.wikipedia.org/wiki/Manga rel=external>manga</a>
shop. I started perusing the shelves, working my way around the outer shelves of the store. I wasn&rsquo;t paying attention too closely at first, but I gradually noticed things getting more and more sexually explicit, until it was clear that I had stumbled into a hentai shop, not a manga shop. I wandered back upstairs and explored the upper floors. Each floor seemed to have a rough video game category, like shooters, fighters, or <a href="https://www.google.com/search?q=gundam" rel=external>gundam</a>
(flying robots fighting other flying robots). I bought a lemon drink and a strawberry ice cream cone from a vending machine while perusing the rows upon rows of machines cast in hazy blue light. Soak it up.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/japan-inner-geek/</guid><link>https://willfaught.com/2011/10/30/japan-inner-geek/</link><atom:link href="https://willfaught.com/2011/10/30/japan-inner-geek/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 08:05:10 -0700</pubDate><title>Japan: Inner Geek</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Wednesday, October 26, 2011</em></p><p><strong>Tokyo</strong></p><p>The drinking from the night before had overwhelmed me, so I spent most of the morning waking up, cleaning up, and getting stabilized. I needed more cash (a common problem in Tokyo, I was to learn) and something to put in my stomach, so I walked to the nearest 7-11 (all 7-11s have ATMs that accept foreign cards and are open 24 hours per day), withdrew some cash, and bought a sandwich for the road. The sandwich was surprisingly good. (Competition between convenience stores is fierce in Tokyo, so the food quality tends to be good.) I rode the subway to see the <a href="https://www.google.com/search?q=tokyo+imperial+palace" rel=external>Imperial Palace</a>
. Much of the original palace compound was destroyed in the past, so there are only a few guardhouses and walls to see, aside from the contemporary palace. From there, I walked toward the Ginza district and entered the <a href="https://www.google.com/search?q=tokyo+international+forum" rel=external>Tokyo International Forum</a>
to see its interesting architecture. By then it had turned dark. I walked to the nearby streets of <a href="https://www.google.com/search?q=ginza" rel=external>Ginza</a>
to see the amazing streets lit up like daylight and filled with high-end shops and restaurants. Some buildings have interesting light animations on their walls and windows. Then I rode the subway to <a href="https://www.google.com/search?q=shibuya" rel=external>Shibuya</a>
, a young and hip part of the city where the lights and sounds and crowds again astound the senses. According to a guidebook I read, this intersection crossing was made famous to the western world by the film <a href=https://en.wikipedia.org/wiki/Lost_in_Translation_%28film%29 rel=external>Lost in Translation</a>
(of which I&rsquo;m a big fan). I ate <a href=https://en.wikipedia.org/wiki/Sushi#Nigirizushi rel=external>nigiri</a>
standing up in Shibuya. It turns out that the <a href=https://en.wikipedia.org/wiki/Sushi#Western-style_sushi rel=external>roll sushi</a>
Americans are used to is an invention by Japanese chefs to adapt real sushi to American palates. I still haven&rsquo;t seen a roll in a restaurant. I returned to the hostel and asked if I could stay longer, since I liked the place, but had only booked for a couple nights initially. They didn&rsquo;t have room, so I booked a couple nights at a cheaper hostel. I went to bed at midnight, my feet feeling tired. I had seen a lot that day.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/japan-wednesday-night-lights/</guid><link>https://willfaught.com/2011/10/30/japan-wednesday-night-lights/</link><atom:link href="https://willfaught.com/2011/10/30/japan-wednesday-night-lights/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 07:23:00 -0700</pubDate><title>Japan: Wednesday Night Lights</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Tuesday, October 25, 2011</em></p><p><strong>Incheon</strong></p><p>Liz gave me a ride to the Incheon airport in the morning. She waived the ride fee because I donated my <a href=https://www.amazon.com/dp/1892147033 rel=external>Going Abroad</a>
book to her hostel library. We chatted about the landscape under construction that we were passing through. The South Korean government had planned for a lot of development around Incheon, but there wasn&rsquo;t enough demand for housing there, so there was a lot of suspended construction dotting the landscape. Liz said the area used to be hilly and pretty to see, but was flattened for the airport and the surrounding development. I flew from Incheon, South Korea, to Narita, Japan.</p><p><strong>Tokyo</strong></p><p>I rode the Keisei train from Narita to Tokyo, then rode the Hibiya subway line from Ueno station to Iriya station. After being turned around for five minutes on the street, I finally located my hostel, <a href=https://www.hostelworld.com/hosteldetails.php/Toco-Tokyo-Heritage-Hostel/Tokyo/46418 rel=external>Toco Tokyo Heritage Hostel</a>
. As I was putting my stuff into my locker I met Karlee (from Canada), who had just checked in as well and was going out for dinner with another girl, Charlie, whom she had just met too. We rode the subway to Ueno station and exited there and walked through a nearby neighborhood to the first <a href=https://en.wikipedia.org/wiki/Yakitori rel=external>yakitori</a>
we liked and sat down. While eating, we met a Japanese family eating next to us: Sao and Yoko Suzuki, and their son, Kato. We chatted a little with them and learned that Sao was part of the Japanese emperor&rsquo;s family and had served as the Japanese ambassador to the United States a number of years ago, and had lived in a $2 million house in Newport Beach in California, and had been the drummer in a metal band called Loudness. Being slightly inebriated at the time, I took all of this at face value, but now I wonder whether some or all of it was true—what are the odds of meeting a royal rockstar ambassador? It didn&rsquo;t really matter, because I was really excited at the time, and we invited them to join us for karaoke, and they agreed. We found a place nearby that had free drinks, and we all stayed there for hours drinking and singing. Eventually Yoko and Kato had to go, presumably to put him to bed, but Sao stayed with us until the end. It turned out to be really expensive, about <a href="https://www.google.com/search?q=10000+yen+in+usd" rel=external>10,000 yen</a>
per person. This was my first introduction to the high expense of Japanese living in Tokyo. We all exchanged contact information and parted ways with Sao, then took a taxi home. The liquor had been much stronger than what I was used to in South Korea, so things got hazy from there. I woke up the next morning and my phone was lying exposed on the floor, and I was lying on top of the lock for my luggage locker on my bed, still in my clothes from the night before. It had been a good night.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/japan-royal-rockstar-ambassador/</guid><link>https://willfaught.com/2011/10/30/japan-royal-rockstar-ambassador/</link><atom:link href="https://willfaught.com/2011/10/30/japan-royal-rockstar-ambassador/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 07:04:54 -0700</pubDate><title>Japan: Royal Rockstar Ambassador</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://ch3n.tumblr.com/ rel=external>ch3n</a>
asked me which camera I used to take pictures in South Korea. The camera that I&rsquo;ve used for the last half year is the <a href=https://www.amazon.com/Canon-PowerShot-S95-Stabilized-3-0-Inch/dp/B003ZSHNGS rel=external>Canon PowerShot S95</a>
. It&rsquo;s a remarkable camera that takes stellar pictures. I&rsquo;ve been complimented on how great my pictures look, but my secret is this magical device. I highly recommend it. I&rsquo;ve met two other people on my journey that had one and they loved theirs just as much.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/my-camera/</guid><link>https://willfaught.com/2011/10/30/my-camera/</link><atom:link href="https://willfaught.com/2011/10/30/my-camera/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 06:30:23 -0700</pubDate><title>My Camera</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I decided to post my camera pictures to Facebook instead of Flickr. You can view them here:</p><ul><li><a href="https://www.facebook.com/media/set/?set=a.10100160570432425.2508932.6400273&amp;type=1&amp;l=a98a2ee818" rel=external>Set 1</a></li><li><a href="https://www.facebook.com/media/set/?set=a.10100160585776675.2508934.6400273&amp;type=1&amp;l=91440a352f" rel=external>Set 2</a></li><li><a href="https://www.facebook.com/media/set/?set=a.10100160611450225.2508939.6400273&amp;type=1&amp;l=c46d1bbb13" rel=external>Set 3</a></li><li><a href="https://www.facebook.com/media/set/?set=a.10100160656065815.2508954.6400273&amp;type=1&amp;l=43ed3ef599" rel=external>Set 4</a></li></ul><p>Of course, if you&rsquo;re friend or family, you can friend me on Facebook and be up to date on all my pictures.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-pictures/</guid><link>https://willfaught.com/2011/10/30/south-korea-pictures/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-pictures/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 02:56:37 -0700</pubDate><title>South Korea Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Monday, October 24, 2011</em></p><p><strong>Busan</strong></p><p>I packed my things and chatted for a few minutes with the beautiful Mina, the Korean girl who worked the front desk. Her English was really good. She had taken the job there to practice speaking English because she was engaged to a Welsh man who was teaching English in Busan. I was flying to Japan the next day, so I had bought a train ticket the day before from Busan to Seoul, and had booked a hostel in <a href=https://g.co/maps/sxsq2 rel=external>Incheon</a>
, since I was flying out of the airport there. To kill time until my train ride, I walked along Haeundae beach and explored a park at one end of it. I ate a quick lunch at a nearby Burger King. Fast food hamburgers are put together much better here than in the United States. It actually looks close to the picture on the menu! I had decided to save half the price of a bullet train and take the slower, five hour train. I listened to my music and some podcasts and ate a Snickers to last until I arrived in Seoul. It was a nice ride. I got to see some of the countryside as well. Mostly verdant hills covered in trees and other vegetation.</p><p><strong>Seoul</strong></p><p>When I arrived at Seoul Station, I mistakenly assumed that the airport express train that I needed to take to Incheon would be in the subway station, so I exited Seoul Station, entered the subway station there, bought a ticket to Incheon, and got on. After a few stops, I realized that the stop I needed wasn&rsquo;t on that line because I was on the actual subway, not the express train, so I had to backtrack to the first subway station, exit it, reenter Seoul Station, and take the express train to the Unseo stop. I lost about two hours and arrived super late at about 11:30 PM.</p><p><strong>Incheon</strong></p><p>I had a woman at the information booth in the train station call my hostel, <a href="https://www.hostelworld.com/hosteldetails.php/Lazy-Bird-Guest-House/Incheon/47579?sc_sau=prfs" rel=external>Lazy Bird Guest House</a>
, and the owner, Liz, picked me up. The weather had turned cold in Seoul, and the wind was blowing pretty hard. The hostel didn&rsquo;t seem to have heating, so I put on my long underwear. I needed an onward flight ticket from Japan before entering, so I bought one that night before going to sleep.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-seeing-the-countryside/</guid><link>https://willfaught.com/2011/10/30/south-korea-seeing-the-countryside/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-seeing-the-countryside/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 02:22:08 -0700</pubDate><title>South Korea: Seeing The Countryside</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Sunday, October 23, 2011</em></p><p><strong>Busan</strong></p><p>I walked to <a href="https://www.google.com/search?q=haeundae+beach" rel=external>Haeundae Beach</a>
, the most renowned beach in South Korea, with Jin to watch the Gumi Bears practice their frisbee throws and say goodbye. We got a spare frisbee and Aaron, Fenton, Jin, and I tossed it around on the beach for twenty minutes. Jin and I took the metro to the <a href="https://www.google.com/search?q=jagalchi+market" rel=external>Jagalchi Market</a>
, where we perused the various kinds of fresh (and live!) seafood sold there. Squid, octopus, eels, crabs, oysters, mussels, fish. You name it, they got it. We ate cooked eel and some sort of fish penis thing (I&rsquo;m told) at a hole in the wall restaurant. Jin said the pictures of my face were priceless. I&rsquo;m still waiting to get copies. From Jagalchi, we walked to the nearby <a href="https://www.google.com/search?q=yongdusan+park" rel=external>Yongdusan Park</a>
. We ascended the hill to the base of the tower, but decided not to pay to ride it to the top. Nearby was a chain link fence on which lovers had attached locks with their names written on them. From Yongdusan, we walked to Busan Station so Jin could buy her train ticket back to Gumi later that evening. We decided we had enough time to see one more thing, so we rode the metro and a bus to get to the <a href="https://www.google.com/search?q=songgwangsa+temple" rel=external>Songgwangsa Buddhist temple</a>
. Sadly, we didn&rsquo;t have much time to look around, so maybe it wasn&rsquo;t worth the effort to get there, but oh well. I don&rsquo;t know what it is about steps that Buddhist monks love, but they should look into escalators. You know, for the handicapped. We had to hurry back to Busan Station. Jin barely made it to her train in time. There wasn&rsquo;t even time to pause to face each other, she just kept running, and I had to stop at the gate. We were able to say a proper goodbye later over email, though. I rode the metro back to Haeundae and home.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-eating-eel/</guid><link>https://willfaught.com/2011/10/30/south-korea-eating-eel/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-eating-eel/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 01:55:55 -0700</pubDate><title>South Korea: Eating Eel</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Saturday, October 22, 2011</em></p><p><strong>Busan</strong></p><p>I rode the bus to see the <a href="https://www.google.com/search?q=haedong+yonggung+temple" rel=external>Haedong Yonggung Temple</a>
. Of course, I didn&rsquo;t hear the stop name clearly when it was announced on the bus, so I overshot by a kilometer or two, so I had to backtrack on foot. On the way, I saw a shrine on a rock in the sea by the shore, so I diverted down a side road to check it out. On my way back to the main road, I took another route and discovered a large Buddhist temple that had a spectacular interior. Sadly, I can&rsquo;t recall the name of it, nor can I find it on the tourist map I had. I made it to Yonggungsa on foot and spent about a half hour touring the complex. I was a little disappointed, as there wasn&rsquo;t much to see. I had liked the other temple more, actually. I rode the bus back to Haeundae, the city area where my hostel was. I was really hungry and wanted something quick, but couldn&rsquo;t find any fast food, so I ate a quick lunch of Pringles, Snickers, and Coke bought from a convenience store. I had planned to visit the Jagalchi fish market after lunch, but it started raining hard, so I decided to check out what was going on at the BEXCO expo building nearby. Nothing was happening there at all, even though it&rsquo;s huge, which was a bummer, so with it raining so hard and everything I wanted to do involving being outside, I returned to the hostel and read about Tokyo from the guidebook my parents had given me. While lounging at the hostel, I met a group of English teachers, Aaron, Alex, Fenton, Paul, Gloria, Allie, and Rita, and their friend Jin, who had come from Gumi in South Korea to play in an ultimate frisbee competition for English teachers. Their team name was the Gumi Bears. They invited me to join them for lamb galbi, which excited me because I had loved dak (chicken) galbi. After dinner, we walked to an expat bar called Billie Jean to listen to a band because the drummer was their ultimate frisbee team captain. The band was surprisingly good! I had a great time. We drank and danced and chatted until about 2 AM when I felt tired and parted ways. Rita caught up with me because she wanted to leave too, so we walked from the beach area where the bar was back to the tall buildings, and then I walked with her while she tried to remember the way back to her hotel. Then I got lost trying to get back to the hostel. After a few tries, I found my way home.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-gumi-bears-ftw/</guid><link>https://willfaught.com/2011/10/30/south-korea-gumi-bears-ftw/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-gumi-bears-ftw/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 01:41:24 -0700</pubDate><title>South Korea: Gumi Bears FTW</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Friday, October 21, 2011</em></p><p><strong>Busan</strong></p><p>I rode the bus to the Jeju airport and flew to <a href=https://g.co/maps/anssg rel=external>Busan</a>
. During take off, the cockpit door swung open, and the flight attendant tried several times to prop it closed. Finally, she had to hold it closed by hand until we leveled off. Terrorists: Here&rsquo;s your chance! I rode the bus from the Busan airport to the neighborhood of my hostel and spent the next hour walking around completely lost in a heavy rain. My umbrella is small to pack easily, so it doesn&rsquo;t cover me very well, especially when wearing my travel pack and carrying my day pack, so I got pretty wet. Finally, I found the hostel, <a href="https://www.hostelworld.com/hosteldetails.php/Busan-Pobi-Guesthouse-and-Hostel/Busan/51483?sc_sau=rt" rel=external>Busan Pobi Guesthouse and Hostel</a>
—which had been close by the whole time on another small street—no thanks to the directions they gave me. When I checked in, I was pretty pissed off. I crossed the street to grab a late lunch. I ordered some kind of beef stew thingy that came with a white powder that I couldn&rsquo;t figure out what to do with despite many attempts to communicate my question to the waitress. The waitresses found my ignorance quite funny. I couldn&rsquo;t blame them. Back in the hostel, I ran into another couple that had also been on the DMZ tour that I had done. They were also heading to Japan, but a few days sooner than me. I blogged while it rained very hard outside. For dinner, I crossed the street again and ate at a BBQ restaurant. I ordered thin strips of beef. Again I tried to upload my camera pictures to Flickr, but no success, because it was all in Korean.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-so-close-yet-so-far/</guid><link>https://willfaught.com/2011/10/30/south-korea-so-close-yet-so-far/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-so-close-yet-so-far/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 01:17:28 -0700</pubDate><title>South Korea: So Close, Yet So Far</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Wednesday, October 19, 2011</em></p><p><strong>Jeju City</strong></p><p>I rode the bus to <a href=https://g.co/maps/3g37a rel=external>Pyeoson</a>
in the southeast corner of Jeju island to visit the <a href="https://www.google.com/search?q=jeju+folk+village+museum" rel=external>Jeju Folk Village Museum</a>
. I wasn&rsquo;t sure if I had gotten off on the right stop, and after walking around for a half hour, I gave up and took a taxi straight there, which had been in the direction opposite that I had been walking. I spent a couple hours walking around the outdoor museum with a headset that spoke English descriptions. The only things I really found interesting were the ways the ancient islanders ground food and the photographs of the women islanders who dove and fished for food. I rode the bus back to Joseph Tree Guesthouse to pick up my pack, then headed on to Jeju City to my next hostel, <a href=https://www.hostelworld.com/hosteldetails.php/Backpackers-in-Jeju/Jeju-Island/55056 rel=external>Backpackers in Jeju</a>
. I checked in, then grabbed some hot chocolate and a few donuts at a nearby Dunkin Donuts and sat in the common room, snacking and trying to figure out how to upload my camera pictures using a computer that was all in Korean. I ended up giving up. I tried to go to bed early for my hike up <a href="https://www.google.com/search?q=hallasan" rel=external>Hallasan</a>
early the next morning.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-lost-and-found-in-pyeoson/</guid><link>https://willfaught.com/2011/10/30/south-korea-lost-and-found-in-pyeoson/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-lost-and-found-in-pyeoson/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 00:27:16 -0700</pubDate><title>South Korea: Lost And Found In Pyeoson</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Tuesday, October 18, 2011</em></p><p><strong>Jeju City</strong></p><p>I rode a bus from the bus station in downtown Seogwipo to <a href=https://www.hostelworld.com/hosteldetails.php/Joseph-Tree-Guesthouse/Jeju-Island/52510 rel=external>Joseph Tree Guesthouse</a>
in the northeastern part of the island, I think technically part of Jeju City. I met Joseph, a Korean, and check in, then talked with him about my plans and he helped me figure out how to get there and back. I rode a bus to <a href=https://en.wikipedia.org/wiki/Seongsan_Ilchulbong rel=external>Seongsan Ilchulbong</a>
on the east coast and hiked the short distance to the top of the crater. The crater is filled with short, green grass that is striking when seen in the early morning light. I was seeing it in the afternoon, so it wasn&rsquo;t as pretty, but I still got a great view of the area. Ilchubong is advertised a lot as a top attraction for Jeju. Jeju is lobbying to become one of the top sevent tourist destinations of the world, at least according to <a href="https://www.new7wonders.com/vote-2?lang=en" rel=external>new7wonders.com</a>
. I rode the bus back to the hostel and met another guest, Hambit, a Korean visiting Jeju for a job interview. Joseph, a very kind and helpful man, drove both of us a few minutes away to the <a href=https://en.wikipedia.org/wiki/Manjanggul rel=external>Manjanggul</a>
lava tube. It&rsquo;s seven kilometers long—the longest in the world, or so they said—the first kilometer of which visitors can walk. Hawaii, eat your heart out. Hambit and I walked it together and chatted about various things like Steve Jobs&rsquo;s death and Korean culture. There were spotlights of various colors arranged along the path that give the tunnel a surreal look. After the lava tube, Hambit and I walked five minutes to a nearby hedge maze and raced each other to ring the bell at the center. Hambit beat me by a couple minutes. I got stuck behind some slow people and had to trudge along behind them. I finally made it there. Joseph and his son picked us up at the maze and drove us to a nearby cafe for dinner. Hambit and I ordered the seafood pasta, which was pretty good considering how sketchy the decor was. We talked some more about Korean culture and electronics companies. When I returned to the hostel, Joseph helped me plan a hike of Hallasan, the tallest mountain in South Korea and at the center of Jeju island. Then I spoke with a friendly Indian man, Shyam, who was also staying there, about places he recommended seeing in his country, and about the prevalence of English across the world. Then I booked a hostel in Jeju City and called it a night.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-30:/2011/10/30/south-korea-hawaii-eat-your-heart-out/</guid><link>https://willfaught.com/2011/10/30/south-korea-hawaii-eat-your-heart-out/</link><atom:link href="https://willfaught.com/2011/10/30/south-korea-hawaii-eat-your-heart-out/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Oct 2011 00:15:17 -0700</pubDate><title>South Korea: Hawaii, Eat Your Heart Out</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Monday, October 17, 2011</em></p><p><strong>Seogwipo</strong></p><p>I walked to <a href="https://www.google.com/search?q=cheonjiyeon" rel=external>Cheonjiyeon falls</a>
, near my hostel, about a ten minute walk. I learned you can just look for bunches of tour buses to locate the good tourist attractions. The falls were beautiful. The water looked nice and cool, a deep greenish-blue color. Signs said that a freshwater eel could only be found in those waters, but I couldn&rsquo;t see any from the paths. I saw an older couple dressed very nicely taking pictures in front of the falls. Perhaps they were just married? I walked behind them back to the entrance after having my picture taken. Then I took a bus toward Jungmun Daepo to see the <a href="https://www.google.com/search?q=jusangjeollidae" rel=external>Jusangjeollidae</a>
(basalt cliffs) on the coast there. Then I took a taxi to the <a href="https://www.google.com/search?q=yeomiji+botanical+garden" rel=external>Yeomiji Botanical Garden</a>
and strolled around the trails and rooms, taking in the various gardens and vegetation growing there. I noticed a large bridge spanning a ravine adjacent to the garden and wanted to go there, so I exited the garden and walked next door and discovered that it was <a href="https://www.google.com/search?q=cheonjeyeon" rel=external>Cheonjeyeon falls</a>
, which I had seen on the map but hadn&rsquo;t planned on seeing. I entered the park and hiked to see the three different waterfalls. Sadly, the highest one was dried up. Being the island of romance for Korean couples, there are several &ldquo;love&rdquo; museums in Jeju, and I decided to stop at a couple in between the places I wanted to see and check them out. There were lots of statues, pottery, sculptures, carvings, paintings, and pictures illustrating various sexual acts, phallic symbolism, and the like from several Asian countries. All of the labels and information was in Korean, unfortunately (because I went there for the articles). Some of the carvings were surprisingly tiny. A lot of it was highly amusing. There were CCTV cameras all over (to prevent people from doing what, I don&rsquo;t want to guess), but I managed to snap a few pictures for the archives. I rode a bus back to my hostel and ate dinner at the same Korean restaurant across the street. My feet were very tired, having walked a long way that day. I decided to order some draft beer, but the sizes were 500, 1000, and 2000 cubic centimeters, and I didn&rsquo;t have a clue how much beer that would be. 500 cc sounded too small, so I went for <a href="https://www.google.com/search?q=1000+cc+in+oz" rel=external>1000 cc of beer</a>
, and they brought out a pitcher that had about four glasses&rsquo; worth of beer in it. While I worked on that, I entertained myself by eavesdropping on the conversation of about eight American girls about my age. They were very involved in a discussion about women&rsquo;s issues and sex. I tried to ignore it, but overhearing talk about sex is kind of distracting. I went to bed, and found that I had the room all to myself that night.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-23:/2011/10/23/south-korea-all-about-the-lovein/</guid><link>https://willfaught.com/2011/10/23/south-korea-all-about-the-lovein/</link><atom:link href="https://willfaught.com/2011/10/23/south-korea-all-about-the-lovein/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 23 Oct 2011 21:40:00 -0700</pubDate><title>South Korea: All About The Love(in)</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Sunday, October 16, 2011</em></p><p><strong>Seoul</strong></p><p>This day I had a flight to Jeju, a subtropical island off the southern coast of South Korea. I woke up at 9:30 AM, packed up my things, and was out the door by 10:30 AM, although I almost forgot my drying clothes and my toiletries. I just need a few more times to practice packing before it comes naturally. Keren (from Australia) was heading to Jeju as well, so we traveled to the airport together (we ended up on the same flight as well). Sadly, my very small pliers didn&rsquo;t make the security cut, and I had to leave them behind. At least I haven&rsquo;t needed them yet, so maybe I won&rsquo;t ever need them. We departed Gimpo airport and an hour later landed on Jeju.</p><p><strong>Seogwipo</strong></p><p>Keren and I parted ways, and I took a limousine bus to the hostel <a href=https://www.hostelworld.com/hosteldetails.php/Backpacker-s-Home/Jeju-Island/55604 rel=external>Backpacker&rsquo;s Home</a>
in <a href=https://www.google.com/maps/place/Seogwipo-si,+Jeju-do,+South+Korea rel=external>Seogwipo</a>
on the southern coast of the island, about an hour&rsquo;s drive. It&rsquo;s common on Jeju buses for there to be an announcement a minute or so before the next stop about the names of the next stop and the stop after that. However, the next stop is called &ldquo;this stop,&rdquo; and the one after is called &ldquo;the next stop.&rdquo; If you&rsquo;re not listening carefully to the sometimes fuzzy, barely audible loudspeaker voice, you&rsquo;ll hear, &ldquo;the next stop is <em>place you&rsquo;re going</em>,&rdquo; and you&rsquo;ll get off at the next stop, totally oblivious, and then your only ride leaves you behind. That&rsquo;s what happened to me one bus stop—and several kilometers—before my destination. The buses on Jeju have no English support whatsoever. All information about bus routes and stops are labeled in Korean. You have to know in advance the direction you need to go and the name of the stop you need. The drivers speak almost no English and could barely understand my pronunciation (which, admittedly, is terrible). Sometimes it almost seemed like willful ignorance, because I showed the address of my hostel written in Korean <em>by the hostel owner, a native Korean</em>, to several drivers, and they barely understood where I wanted to go. Maybe the address didn&rsquo;t indicate a clear bus stop or something. I would have paid dearly for an English translation of the bus routes and time tables, but there seemed to be none to be had. So I had to gesture and repeat and try different pronunciations to somehow get my meaning across, and it usually worked out, but with an occasional mistake or worry that I missed my stop. I didn&rsquo;t mind that there wasn&rsquo;t any English on the signs or the drivers didn&rsquo;t speak English, but I wished that the tourist information centers provided translations of bus information so I could have my own reference. If I had known all this in advance, I would have made my own reference. Anyway, fortunately, at that moment a Christian Korean was passing by and gave me some napkins wrapped in plastic adorned with Christian imagery. He helped me figure out how to get back on track, and I arrived only about twenty minutes late. I spent an hour or so reading the maps and other tourist papers I got at the airport and put together a plan for what to see when. By the time I was done, it was dark, so I asked a hostel employee to recommend a restaurant that had an English menu, and I had a delicious kimchi stew for dinner across the street from the hostel. Done with the meal, I crossed back to the cafe in front of the hostel and had a <a href="https://www.google.com/search?q=tsingtao" rel=external>Tsingtao</a>
beer and read until bed time. <em>Beoseu</em> is the <a href=https://en.wikipedia.org/wiki/Romanization rel=external>romanization</a>
for the Korean word for bus, pronounced something like <em>bo-soo</em> in English.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-21:/2011/10/21/south-korea-beoseu-hell/</guid><link>https://willfaught.com/2011/10/21/south-korea-beoseu-hell/</link><atom:link href="https://willfaught.com/2011/10/21/south-korea-beoseu-hell/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 21 Oct 2011 02:48:00 -0700</pubDate><title>South Korea: Beoseu Hell</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Friday, October 14, 2011</em></p><p><strong>Seoul</strong></p><p>I had heard good things about Jeju, an island off the southern shore, and Busan, a port city on the southern shore, so I decided to spend some time there. I had about ten days left, which would be enough time to do both, so I decided to spend part of the day planning those trips. I bought flights from Seoul to Jeju on Sunday, October 16, and Jeju to Busan on Friday, October 21. There&rsquo;s a bullet train that I can take from Busan back to Seoul for my flight to Tokyo on Tuesday, October 25. Then I called my parents for the first time since I left home and caught them up on my trip so far. It had rained earlier that morning, and it was still cloudy and cool, so I decided to go to a museum and avoid the bad weather. Mia recommended the <a href="https://www.google.com/search?q=leeum+samsung+museum+of+art" rel=external>Leeum Samsung Museum of Art</a>
, so I went there. Unfortunately, it was 5:45 PM when I arrived, so I only had 45 minutes to see stuff. I chose to see a special exhibit about the paintings of the ancient kings&rsquo; painters. The art varied from dull to exquisite, faded and torn to vibrant and crisp. There were also some ancient books about war craft and government. Near the end of the exhibit there was a dark room with an attendant at the entrance that seemed odd. Inside, paintings were displayed along each wall inside opaque boxes with viewing slots above them. The first one showed two women sitting on the floor of a room. It puzzled me why this art was displayed so differently from the others. I moved on to the next painting, which showed a woman lying naked on the floor on her stomach with one knee bent, and a man sitting next to her, bottomless. Each painting got progressively more erotic and explicit. It dawned on me that I could be perusing the king&rsquo;s porn collection. I was puzzled why the first painting had been part of the collection. Had I missed something? I went back to it, and then spotted it: the two women were looking at porn. Ah! Subtle. I returned to the hostel and met Ian (from the U.K.) and Sean (from Taiwan/South Korea). We went to dinner at a really good restaurant nearby with a couple of friends of Sean&rsquo;s, Kaie and Semi (not sure about the spelling). Keren (from Australia) and Charles (from Singapore) met us at the restaurant after we had finished eating and we stayed there for a while drinking rice wine. Then we went to a bar and had a beer (Cass, a Korean beer). Then we went to a club nearby called <a href=http://papagorilla.com/ rel=external>Papa Gorilla</a>
and danced and drank beer and shots (of what, I don&rsquo;t know). Ian was as relentless as ever approaching girls and dancing with them. People had started to split off and go their own way, and Charles and Keren (who were also staying at Miso Guesthouse) had already left, so I walked by myself back to the hostel. I got in around 4 AM.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-21:/2011/10/21/south-korea-the-kings-porn/</guid><link>https://willfaught.com/2011/10/21/south-korea-the-kings-porn/</link><atom:link href="https://willfaught.com/2011/10/21/south-korea-the-kings-porn/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 21 Oct 2011 01:26:00 -0700</pubDate><title>South Korea: The King’s Porn</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/cmSCpF2RPBU?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>A short video of the highlights from the Korean cultural event that I went to. There are shots of the crowd, but I didn&rsquo;t see myself. Maybe you can spot me? I was sitting center stage. The signs the people make with their thumb and forefinger or forefinger and middle finger are the letter &lsquo;V&rsquo; for victory (I presume from the Korean War). It&rsquo;s a common pose for pictures.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-21:/2011/10/21/korean-culture-event/</guid><link>https://willfaught.com/2011/10/21/korean-culture-event/</link><atom:link href="https://willfaught.com/2011/10/21/korean-culture-event/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 21 Oct 2011 01:03:00 -0700</pubDate><title>Korean Culture Event</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Saturday, October 15, 2011</em></p><p><strong>Seoul</strong></p><p>For several days prior, I had been approached by various people my age on the street and told about a cultural event for foreigners to learn about Korean culture. Mia (the hostel owner) had told all her guests about it as well, so I had decided to go. This day was the day, so I did some laundry and blogged until it was time to leave for the cultural event. I was supposed to meet Charles (from Singapore) there at 3 PM, but the subway trip was much longer than I had anticipated, so I was a half hour late, and couldn&rsquo;t find Charles at our meeting place, so I continued on to the event. It had begun raining really hard earlier that day, so I was using my umbrella. Stupidly, I had left my jacket at home, having been fine with just a long-sleeved shirt up to that point. I arrived and searched for Charles, but couldn&rsquo;t find him, so I resigned myself to going it alone and sat down to watch. Some girls from Argentina sat next to me, and we chatted a little bit. At the time I arrived, the performers were doing rehearsals and sound checks, which I didn&rsquo;t realize, so I was at first shocked when the announcer would cut them off in the middle of their performances. Later, it became clear that the real performances had yet to come. Sitting there in one spot without moving around, I became very cold, and did everything one does to try to stay warm when sitting down. I decided to tough it out and learn my lesson, even though it would mean sitting in freezing air for two hours. It became easier when the performances began and I was distracted. There were some great performances by people from other countries, but the true stars of the show were the Korean performers. There was a group of women who banged drums and hopped up and down in unison that was mesmerizing. Other groups moved about in interesting and beautiful ways. One group of men wore hats with ropes attached that they swung around in circles by motions of their heads. Afterward, Charles found me, and we and the Argentinian girls went for dinner at the nearby Lotte mall. The girls had saved up for a year to live in South Korea for three months, which I admired. They spoke very good English, and were fans of <a href=https://en.wikipedia.org/wiki/K-pop rel=external>K-pop</a>
(Korean pop music). Charles and I tried to help one of the girls, Sammy (not sure of the spelling, maybe Sami), find a friend in the Hongdae area, near our hostel, but we couldn&rsquo;t find the place, so she joined Charles and I for norebang (karaoke). We headed back to my hostel so I could get my jacket and dump my backpack, and Zara (who works at the hostel) decided to join us. All four of us went to norebang and sang for an hour (this one only served non-alcoholic drinks), then went dancing and drinking at Papa Gorilla, a nearby dance club. We left the club at 3 AM and got Charles a taxi back to his hotel, then returned to the hostel at about 3:30 AM. I would be leaving Seoul for Jeju island the next morning.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-21:/2011/10/21/south-korea-glimpse-of-korean-culture/</guid><link>https://willfaught.com/2011/10/21/south-korea-glimpse-of-korean-culture/</link><atom:link href="https://willfaught.com/2011/10/21/south-korea-glimpse-of-korean-culture/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 21 Oct 2011 00:58:00 -0700</pubDate><title>South Korea: Glimpse Of Korean Culture</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Thursday, October 13, 2011</em></p><p><strong>Seoul</strong></p><p>They told me so on the DMZ tour. I had asked Mia (the hostel owner) to book me a <a href="https://www.google.com/search?q=dmz+korea" rel=external>Korean DMZ</a>
tour. Keren (from Australia) was going as well, so we both left at about 8 AM and were picked up by the tour company. We met another couple along the way, Lexi (from New York) and Graeme (from England), whom we chatted with along the way. During the hour or so drive from Seoul to the DMZ, our tour guide explained how things would work, the places we would visit, the things we would see, and rattled off various factoids and information as well. At one point, she spoke about reunification with North Korea, that it would be happening soon, and that they were preparing for it. This took me by surprise, and I wondered if something had happened that I hadn&rsquo;t heard about. Common sense kicked in a few minutes later, and I laughed. We got a glimpse of North Korea along the highway, across barbed wire and a body of water, in the hazy distance. First we saw <a href="https://www.google.com/search?q=freedom+bridge+korea" rel=external>Freedom Bridge</a>
, used by South Korean prisoners of war to return from North Korea as part of a prisoner exchange some time ago. Then we went to a building with some South Korean soldiers that we all took pictures with. Then we went to an observation point from which one can usually see the two South and North Korean villages in the DMZ used for political contact. However, it was foggy that day, and the North side was obscured. There is a very tall flag pole in each DMZ village. The North and South Koreans tried to outdo each other by having the taller flag pole, and eventually the South gave up and let the North have it. Then they took us to the entrance to a <a href="https://www.google.com/search?q=north+korea+dmz+tunnel" rel=external>North Korean tunnel</a>
that was discovered some time ago. The North dug several tunnels across the DMZ to invade the South. Those sneaky northerners! In case you were wondering (Mom and Dad), the DMZ is quite safe. About five million people visited the DMZ in the past year. There were young schoolchildren there. After the DMZ tour, I had a late lunch with Lexi and Graeme in the Hongdae area near my hostel. They had been teaching English in Daejeon, South Korea, for the past eight months, and were in Seoul to do a little sightseeing before flying to Malaysia for a month, and then New Zealand for a year. I really enjoyed their company, and we agreed to meet for dinner that night. In the meantime, I decided to get some more sightseeing of my own done. I went to <a href="https://www.google.com/search?q=gwangjang+market" rel=external>Gwangjang market</a>
, which is a busy, colorful place, full of fresh seafood and vegetables, street food vendors, and shops for clothes and knickknacks. Some of the food there for sale was fascinating. What sticks in my mind even now were the pig heads and hooves (I guessed they were pig hooves, it was hard to tell). Striking, to say the least. Then I went to a Hanok village replica, which I think showed the kinds of buildings that were in villages a long time ago (possibly ancient, not sure). I found this only marginally interesting, so I took off after a little bit, but did stick around for a few minutes to enjoy some kind of live musical performance happening in the same park. Then I went to <a href="https://www.google.com/search?q=namdaemun+market" rel=external>Namdaemun market</a>
, similar to Gwangjang, except this was outdoors in an alley and sold many more non-food items. Everywhere I looked were throngs of people. Everywhere I looked there was something interesting to look at. That evening, Keren and I met Lexi and Graeme and we searched for a restaurant in the Hongdae area that served dalk galbi, a delicious chicken dish that I absolutely loved. I want to have it one more time before leaving South Korea. Afterward, we ran into Federico, someone from Lexi and Graeme&rsquo;s hostel, and we all went to <a href="https://www.google.com/search?q=norebang" rel=external>norebang</a>
(karaoke) and sang popular songs and drank beers for a couple hours. The manager kept giving us more singing time because we were ordering beers. Afterward, Keren went home, and I went with Lexi and Graeme back to their hostel to drink a little more and chat. I talked more with Lexi and Graeme, and also chatted with their hostel&rsquo;s temporary manager about traveling. Lexi was a philosophy major, so we talked a little philosophy, which I always enjoy, and of course I brought up The Matrix, which I love to discuss. It was something like 2 or 3 AM when I walked home alone.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-21:/2011/10/21/south-korea-reunification-with-north-korea-is-imminent/</guid><link>https://willfaught.com/2011/10/21/south-korea-reunification-with-north-korea-is-imminent/</link><atom:link href="https://willfaught.com/2011/10/21/south-korea-reunification-with-north-korea-is-imminent/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 21 Oct 2011 00:26:00 -0700</pubDate><title>South Korea: Reunification With North Korea Is Imminent!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Wednesday, October 12, 2011</em></p><p><strong>Seoul</strong></p><p>The night before I had planned to go to <a href="https://www.google.com/search?q=gyeongbokgung" rel=external>Gyeongbokgung</a>
palace the next day, since my last attempt hadn&rsquo;t worked out. As I was preparing for my day out, I met Henry from Australia, who was departing Seoul that afternoon and also wanted to see Gyeongbokgung. I asked him if he wanted to join me, and he did, so off we went. Gyeongbokgung is the most impressive palace that I&rsquo;ve seen. The grounds are quite extensive, and there are some striking structures and interiors, especially the building that overlooks the pond. There were lots of school children there, ranging from very young to early teens. There were lots of pre-teens who were eager to wave at me and practice their English. &ldquo;Hi!&rdquo; &ldquo;Hello!&rdquo; &ldquo;Hi!&rdquo; Lots of smiles and giggles. A few small groups asked me to take a picture with them. One girl gave me a couple fruit-flavored candies. It was such fun! Henry is Asian and wasn&rsquo;t getting the love that I was, so he stood by while I was taking pictures. Dark, thick-rimmed glasses seem to be fashionable among young people. I noticed a lot of them worn by the early teens. I&rsquo;ve been told that some who don&rsquo;t need glasses go so far as wearing rims without lenses. Henry and I parted ways in the middle of the palace grounds so he could catch his flight. I left Gyeongbokgung and took the subway to the <a href="https://www.google.com/search?q=jogyesa" rel=external>Jogyesa</a>
Buddhist temple. There were many people there praying for their children to be accepted into good schools. Yes, that day was for praying for your children to get into good schools, and that alone. Everyone took their shoes off to go inside (common in South Korea). There were three large Buddha statues inside, and along two walls were what looked to be small shrines for the dead. Outside, people burned incense and lit candles. I left the temple and walked a block to the entrance to <a href="https://www.google.com/search?q=insadong" rel=external>Insadong</a>
, a street known for its antiques and art. I walked down the entire street, perusing several shops and exploring a couple alleys. I don&rsquo;t have much room for souvenirs, so I wasn&rsquo;t interested in buying anything, unless I saw something I thought worth shipping home. Insadong opened onto a larger road, and I spotted a McDonald&rsquo;s. My stomach was growling, but I didn&rsquo;t want to spoil my appetite, so I just ordered some fries. Then I took a walk along the <a href="https://www.google.com/search?q=cheonggyecheon" rel=external>Cheonggyecheon</a>
stream. I passed a woman dancing what I assumed to be a traditional Korean dance; it was very beautiful to watch. Then I came upon a captivating light show that projected three dimensional objects through a cube of mist above the stream while music played. I would love to see things like these in American cities. I left the stream and took the subway to <a href="https://www.google.com/search?q=itaewon" rel=external>Itaewon</a>
, a long street filled with foreign stores and restaurants, like Sketchers, Dunkin Donuts, McDonald&rsquo;s, Burger King, Subway, and KFC. Foreign companies like these aren&rsquo;t restricted to just this street: you can find Dunkin Donuts, McDonald&rsquo;s, and KFCs all over Seoul. That&rsquo;s right: you can get a donut on any corner in Seoul, but good luck finding anything in Seattle. Go figure. I met Keren (from Australia), Nan (from Pleasanton), and Eric (from France/California) for Korean BBQ that evening. We went to the same place I had gone to with Mia (the hostel owner), Zara (her friend), Arthur (from Texas), and Charles (from Singapore). The food was, again, delicious. Afterward, we went to a <a href="https://www.google.com/search?q=ho+bar+seoul" rel=external>Ho Bar</a>
(it&rsquo;s not as sleazy as it sounds, it&rsquo;s just a regular bar) and had some drinks. They had put up some Halloween decorations, like spider webs and pumpkins. I wonder if it&rsquo;s a popular place for expats? Keren and I had to get up early the next day, so we didn&rsquo;t drink too much, and we went home at a respectable hour.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-18:/2011/10/18/south-korea-schoolchild-celebrity/</guid><link>https://willfaught.com/2011/10/18/south-korea-schoolchild-celebrity/</link><atom:link href="https://willfaught.com/2011/10/18/south-korea-schoolchild-celebrity/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 18 Oct 2011 07:36:00 -0700</pubDate><title>South Korea: Schoolchild Celebrity</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Tuesday, October 11, 2011</em></p><p><strong>Seoul</strong></p><p>I ran into Charles (from Singapore) in the morning at the hostel and he invited me to join him hiking the <a href="https://www.google.com/search?q=bukhansan" rel=external>Bukhansan</a>
mountain that borders Seoul. Not having a plan of my own yet, and since it sounded like something I wouldn&rsquo;t otherwise consider, I agreed, and we set out. Charles had researched the directions, so I was just tagging along mostly. We took the subway to the right station, exited at the right exit, but the bus we needed to take to Bukhansan wasn&rsquo;t listed at the nearby bus stop. A very helpful Korean gentleman stopped and tried to help us, but we were confused and unsure. It turned out later that he had given us good information, but at the time we didn&rsquo;t see it. Charles had noted a second bus we could take, so we backtracked to the subway station and took the subway to another place and found the right bus. We took the bus to the end of the route, which was where the bus terminal was and where Bukhansan began. The trail began gently enough, some dirt, but mostly covered in jagged stones that one had to negotiate a little carefully. This was just the preamble, however. In ten minutes or so the trail turned into a stone staircase that wound its way up the mountainside. I&rsquo;m out of shape, so take this with a grain of salt, but it was grueling. Charles had an easier time of it, but I had to take several breaks. There were several natural springs along the way that hikers could drink from, although I kept to my own water bottle. We saw several older hikers who seemed very spry, and many hikers used those ski pole hiking sticks. Finally, we reached the <a href="https://www.google.com/search?q=bukhansan+gate" rel=external>gate</a>
at the top of the trail, and we got a nice view of Seoul. Wow, is it <em>big</em>! It lay as far as the eye could see, and far to the left and right. It was worth the view. We snapped some pictures and then headed down. Going down the steep rocky stairs was treacherous and fast-going. I slipped a couple times, but neither of us had an accident. We took a bus at the bus terminal back toward downtown Seoul. We tried to get off at the right stop, but for some reason the doors didn&rsquo;t open, and the next stop was many blocks away. When we exited the bus, we had no idea where we were, and had no choice but to walk in the direction the bus had come from. Seoul has an extensive subway system. It has nine lines, numbered and colored, with many junctions and frequent rides. You can get pretty much anywhere in the city using the subway, or at least most of the tourist destinations. It&rsquo;s fantastic. You can pretty much walk ten minutes in any direction and eventually come across a subway station. Except where we were, for some reason. We walked about twenty minutes before coming to the subway station from where we had taken the bus to Bukhansan. My feet and legs were killing me. <em>Killing</em> me. I was so relieved to sit on the subway. We ate at a Japanese restaurant called <a href=https://obento.co.kr rel=external>Obento</a>
near our hostel on our way back. This trip is going to give me thighs of steel.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-18:/2011/10/18/south-korea-thighs-of-steel-to-come/</guid><link>https://willfaught.com/2011/10/18/south-korea-thighs-of-steel-to-come/</link><atom:link href="https://willfaught.com/2011/10/18/south-korea-thighs-of-steel-to-come/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 18 Oct 2011 06:38:00 -0700</pubDate><title>South Korea: Thighs Of Steel (to Come)</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Monday, October 10, 2011</em></p><p><strong>Seoul</strong></p><p>Having stayed up until 5 AM the night before, I got a late start in the morning. Mia was pretty hung over and stayed inside all day to recover. I left the hostel at 4:30 PM and headed for <a href="https://www.google.com/search?q=gyeongbokgung" rel=external>Gyeongbokgung Palace</a>
. I emerged from the subway station and couldn&rsquo;t see the palace. It could have been two blocks in any direction. For the second time since arriving in Seoul, I realized that my map wasn&rsquo;t up to the task of orienting me based on street names. I later noticed that subway stations have neighborhood maps near exits that orient you and show you what&rsquo;s nearby. I also invested in some subway and street map apps for my iPhone, which have been marginally helpful. Now that I fully understand things, I can get by just fine with the posted signs and maps. I found the long, tall wall that borders the palace on the south side, then noticed on my map that a tourist information center was nearby. I thought I might be able to get a more detailed map there, so I diverted from the palace and walked through <a href="https://www.google.com/search?q=gwanghwamun+square" rel=external>Gwanghwamun Square</a>
towards where my map said the tourist information center was. Some soldiers stationed at the U.S. embassy&rsquo;s gate told me that the center had moved. By that time it was early evening and I figured the palace had closed by then. I continued strolling down the square toward City Hall, then caught the subway back to the hostel. I rested for a bit and read on the couch there until two guys entered. One of them, Ian, was checking into the hostel, and he was accompanied by his South Korean friend Sean. They invited me to join them for dinner, and so I went. We ate meat and kimchi and drank beer and soju at a Korean BBQ a block away from the hostel, then walked into the same area I had been in last night to drink at a couple bars and then dance at the same Cocoon club as the night before. I made it home at about 4 AM. Ian went on the DMZ tour the next morning at 8 AM. I don&rsquo;t know how he did it. He said he was drunk for part of it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-18:/2011/10/18/south-korea-late-start/</guid><link>https://willfaught.com/2011/10/18/south-korea-late-start/</link><atom:link href="https://willfaught.com/2011/10/18/south-korea-late-start/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 18 Oct 2011 05:08:00 -0700</pubDate><title>South Korea: Late Start</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I forgot to say what my planned travel itinerary is:</p><ul><li>South Korea</li><li>Japan</li><li>Taiwan</li><li>Hong Kong</li><li>Vietnam</li><li>Laos</li><li>Cambodia</li><li>Thailand</li><li>Malaysia</li><li>Singapore</li><li>Indonesia</li><li>Philippines</li><li>India</li></ul><p>Basically, most of East, Southeast, and South Asia. I haven&rsquo;t done any research for any of these countries (except South Korea, where I am now), so I don&rsquo;t know which particular cities I&rsquo;ll go to, although I assume I&rsquo;ll at least visit the capital cities. I plan to buy a guidebook or read <a href=https://wikitravel.org/en/Main_Page rel=external>WikiTravel</a>
for each country just before or when I arrive there. Depending on when I get tired of travel or run out of money, or if my interests change, I may not make it to all of them. I&rsquo;m keeping my schedule flexible by buying flights as I go, although I have to have onward/return tickets before entering a lot of countries, which means I have to know my exit date ahead of time, which is annoying. I plan to visit these countries in this order. I&rsquo;ve heard there are problems along the Thailand-Cambodia border, and that it might be better to just fly to Thailand from another Southeast Asia country, or vice versa. Any information would be greatly appreciated!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-13:/2011/10/13/asia-travel-itinerary/</guid><link>https://willfaught.com/2011/10/13/asia-travel-itinerary/</link><atom:link href="https://willfaught.com/2011/10/13/asia-travel-itinerary/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 13 Oct 2011 03:45:00 -0700</pubDate><title>Asia Travel Itinerary</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Sunday, October 9, 2011</em></p><p><strong>Seoul</strong></p><p>At the start of my first full day in Seoul, I got some lunch at a restaurant down the street with another hostel guest, Charles. I ordered a very tasty kimchi and pork meal. Afterward, we split up, and I looked for a world ATM in the neighborhood and withdrew some more cash, since I had had to pay for my entire stay at the hostel up front in cash. Then I took the metro to the City Hall as a way to get familiar with the metro system. I ended up going the wrong way, so I got off and repaid for the same trip, and then got going in the right direction. I think I had missed the arrows that indicate the direction the metro goes. When I exited the City Hall metro station, I realized that my map was grossly inadequate to pinpoint my location or orient myself, because there was nothing within sight to indicate which direction I should take. It could have been two blocks in any direction, and it was hazy, so I couldn&rsquo;t see the sun, and of course I had forgotten my compass back at the hostel. But then I noticed a map on the sidewalk and figured out the way to go. In the City Hall area, there&rsquo;s a large grassy area with a stage in front of a very large structure that looked like an arena or concert hall. To the north of it is an old palace called <a href="https://www.google.com/search?q=deoksugung" rel=external>Deoksugung</a>
that I visited. There&rsquo;s an even bigger palace called <a href="https://www.google.com/search?q=gyeongbokgung" rel=external>Gyeongbokgung</a>
that I really want to see as well. At about 5:30 PM I decided to head back to the hostel to meet Mia, her friend Zara, Charles, and another guest, Arthur, for dinner. We walked a few blocks away to a Korean BBQ restaurant. I&rsquo;d never eaten Korean BBQ before, and I loved it. It was <em>delicious</em>! It&rsquo;s my new favorite food. I really enjoyed our conversations during dinner. Mia and Zara speak very good English, and Charles and Arthur are native English speakers, so conversation was easy. I was introduced to soju, a drink like Japanese sake. We had several bottles. Afterward, Mia, Arthur, and I went to a hof (a bar where drinks are cheap but you have to order expensive food), where they introduced me to rice wine, a cold, white, cloudy drink. Then we went to a dance club called Cocoon that had a small bar and a dance floor where they played electronica and had fog, lasers, and confetti. We all bought drinks, and Arthur bought us all shots, since it was his last night in South Korea. We danced for a couple hours and then went to a karaoke place and rented our own room and sang pop songs for who knows how long. When we finally stumbled home it was 5 AM and I was ready to pass out from jet lag and liquor. I was barely able to give Arthur my email address before falling asleep on my bed in my clothes. Mia and I woke up nine hours later at 2 PM. It was totally worth it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-11:/2011/10/11/south-korea-venturing-out-and-night-life/</guid><link>https://willfaught.com/2011/10/11/south-korea-venturing-out-and-night-life/</link><atom:link href="https://willfaught.com/2011/10/11/south-korea-venturing-out-and-night-life/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 11 Oct 2011 08:31:00 -0700</pubDate><title>South Korea: Venturing Out And Night Life</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><em>For Saturday, October 8, 2011</em></p><p><strong>Seoul</strong></p><p>I arrived in Seoul on Saturday at 5:40 PM. I got through customs and immigration without a problem. It took a few minutes of looking to find a world ATM to withdraw 200,000 in the local currency, the wan. (I love being a millionaire!) I had wanted to look at the options for renting a smart phone and get some touring information, but I was concerned about being late to check into my hostel, so I took the express train from the Incheon airport to Hongik University in Seoul. The hostel, <a href=https://www.hostelworld.com/st/hostels/p/48740/miso-guesthouse-and-hostel/ rel=external>Miso Guesthouse and Hostel</a>
, is only a couple blocks from the Hongik University train station. The directions were straightforward, but I managed to misunderstand the last part and ended up being one street off and lost. I asked someone on the street for help and he went to his apartment to get his mobile phone, then he called the hostel and we located it. The owner, Mia, was very friendly and helpful. The neighborhood is overwhelming to look at: lots of color, lights, signs, floors, restaurants, and shops. It&rsquo;s part of the Hongdae area, a young and trendy place full of university-age people and bars, clubs, shops, and restaurants that cater to them. It&rsquo;s a very happening place to be. After getting situated in my room (shared with six others), it was 7:30 PM and time to eat. I ventured out into the street and picked a restaurant at random, a Japanese fusion place, hoping for a menu with English or pictures, but it was 100% Korean text with no pictures. I was at a loss, and considering leaving without ordering, but an American named Alex seated a few tables away saw my plight and offered to help me order. I was grateful, and the chicken teriyaki dish I was served was piping hot and delicious. I noticed that the South Koreans dressed very nicely, lots of collared shirts and trousers and high heels. I felt tremendously under dressed. I was exhausted after three hours of sleep and an 11.5 hour flight, so I returned to the hostel and went to bed around 11 PM. Overall, it had been a good day, and I was pleased that I had had so little trouble getting there and settled in.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-10-11:/2011/10/11/south-korea-arrival/</guid><link>https://willfaught.com/2011/10/11/south-korea-arrival/</link><atom:link href="https://willfaught.com/2011/10/11/south-korea-arrival/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 11 Oct 2011 07:59:00 -0700</pubDate><title>South Korea: Arrival</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>On Friday, I embarked on a months-long journey across Asia. I&amp;rsquo;ll try posting about my experiences here as frequently as I can. Stay tuned.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-10-09:/2011/10/09/adventures-in-asia/</guid><link>https://willfaught.com/2011/10/09/adventures-in-asia/</link><atom:link href="https://willfaught.com/2011/10/09/adventures-in-asia/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 09 Oct 2011 02:12:04 -0700</pubDate><title>Adventures In Asia</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/_xVt3UCQjaU?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>A video interview of Dr. David Card. It&rsquo;s so fun finding stuff about people you know!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-09-09:/2011/09/09/interview-of-my-doctor/</guid><link>https://willfaught.com/2011/09/09/interview-of-my-doctor/</link><atom:link href="https://willfaught.com/2011/09/09/interview-of-my-doctor/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 09 Sep 2011 20:14:48 -0700</pubDate><title>Interview Of My Doctor</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I just stumbled across a seattlepi.com article about Dr. David Card, who was my primary care doctor in Seattle:</p><blockquote><p>On the first day of school at St. Francis University in Pennsylvania, where he would graduate third in his class on his way to med school at Nova Southeastern University in Florida, a crowd of students watched from a window as Card wheeled up to a staircase leading down to his classroom. There were no ramps, but that was no problem.</p></blockquote><blockquote><p>Card wheeled down the stairs like he&rsquo;d taught himself to do years before, when his parents announced they would make their home handicap accessible and Card &ndash; whose bedroom was on the second floor &ndash; wouldn&rsquo;t allow it.</p></blockquote><blockquote><p>&ldquo;Doing so would make me feel handicapped,&rdquo; he said. &ldquo;So I learned how to grab the handrails and pull myself up the stairs by myself.&rdquo;</p></blockquote><blockquote><p>These days, Card drives to work in a red Eclipse convertible. Parking at handicapped spaces still gets him dirty looks. &ldquo;I guess it&rsquo;s because I&rsquo;m not driving a minivan with a lift,&rdquo; he said.</p></blockquote><p>He&rsquo;s such a great doctor. I&rsquo;m so thankful that my chiropractor referred me to him. I didn&rsquo;t really think much about the wheelchair or the story behind it before this, but I think it&rsquo;s fascinating and inspiring. I was sorry I couldn&rsquo;t take him with me when I moved away.</p><p><a href=https://willfaught.com/2011/09/09/david-card-wheelchair-m.d./>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-09-09:/2011/09/09/david-card-wheelchair-m.d./</guid><link>https://www.seattlepi.com/local/article/Meet-David-Card-the-doctor-in-a-wheelchair-892535.php</link><atom:link href="https://www.seattlepi.com/local/article/Meet-David-Card-the-doctor-in-a-wheelchair-892535.php" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 09 Sep 2011 19:16:00 -0700</pubDate><title>David Card, Wheelchair M.D.</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/N6O2ncUKvlg?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Just a Dream</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-08-15:/2011/08/15/just-a-dream/</guid><link>https://willfaught.com/2011/08/15/just-a-dream/</link><atom:link href="https://willfaught.com/2011/08/15/just-a-dream/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 15 Aug 2011 00:22:52 -0700</pubDate><title>Just A Dream</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>This really resonated with me. It reflects my own frustration with Obama and the Democratic Party.</p><p><a href=https://willfaught.com/2011/08/12/what-happened-to-obama/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-08-12:/2011/08/12/what-happened-to-obama/</guid><link>https://www.nytimes.com/2011/08/07/opinion/sunday/what-happened-to-obamas-passion.html</link><atom:link href="https://www.nytimes.com/2011/08/07/opinion/sunday/what-happened-to-obamas-passion.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 12 Aug 2011 21:51:00 -0700</pubDate><title>What Happened To Obama</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Made from the original molds by the original artist. About $500 for helmets and about $1000 for armor. I wonder how comfortable it is?</p><p><a href=https://willfaught.com/2011/07/28/original-stormtrooper-costumes/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-28:/2011/07/28/original-stormtrooper-costumes/</guid><link>https://www.sdsprops.com/</link><atom:link href="https://www.sdsprops.com/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 28 Jul 2011 01:13:50 -0700</pubDate><title>Original Stormtrooper Costumes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>James Surowiecki:</p><blockquote><p>The truth is that the United States doesn&rsquo;t need, and shouldn&rsquo;t have, a debt ceiling. Every other democratic country, with the exception of Denmark, does fine without one. There&rsquo;s no debt limit in the Constitution. And, if Congress really wants to hold down government debt, it already has a way to do so that doesn&rsquo;t risk economic chaos—namely, the annual budgeting process. The only reason we need to lift the debt ceiling, after all, is to pay for spending that Congress has already authorized. If the debt ceiling isn&rsquo;t raised, we&rsquo;ll face an absurd scenario in which Congress will have ordered the President to execute two laws that are flatly at odds with each other. If he obeys the debt ceiling, he cannot spend the money that Congress has told him to spend, which is why most government functions will be shut down. Yet if he spends the money as Congress has authorized him to he&rsquo;ll end up violating the debt ceiling.</p></blockquote><p>Great insights into the debt ceiling. I totally agree. It&rsquo;s worth reading the entire article.</p><p><a href=https://willfaught.com/2011/07/26/smash-the-ceiling/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-26:/2011/07/26/smash-the-ceiling/</guid><link>https://www.newyorker.com/talk/financial/2011/08/01/110801ta_talk_surowiecki</link><atom:link href="https://www.newyorker.com/talk/financial/2011/08/01/110801ta_talk_surowiecki" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 Jul 2011 08:40:18 -0700</pubDate><title>Smash The Ceiling</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Are you in between jobs and looking for basic health insurance? The kind of insurance that you&amp;rsquo;re looking for is short term health insurance. Just had to get some myself.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-07-19:/2011/07/19/short-term-health-insurance/</guid><link>https://willfaught.com/2011/07/19/short-term-health-insurance/</link><atom:link href="https://willfaught.com/2011/07/19/short-term-health-insurance/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 19 Jul 2011 00:48:44 -0700</pubDate><title>Short Term Health Insurance</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve been learning some Ruby the past week or so. Some thoughts:</p><ul><li>Arrays seem to be lists.</li><li>Ranges are needed because of eager evaluation.</li><li>I like that anything defined can be changed later, even visibility or constants.</li><li>I haven&rsquo;t found a good explanation of blocks yet, but they appear to be first-class functions with some kind of iterator functionality grafted on.</li><li>No homoiconic syntax.</li><li>Abbreviated keywords (def). Yuck.</li><li>No exposed class variables is a great idea. Methods only!</li><li>Attribute generators are great for saving time, but is this done through some kind of extensible macro system?</li><li>The + operator seems to do several things, depending on the operands&rsquo; types. Is this extensible, or baked in?</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-16:/2011/07/16/learning-ruby/</guid><link>https://willfaught.com/2011/07/16/learning-ruby/</link><atom:link href="https://willfaught.com/2011/07/16/learning-ruby/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 16 Jul 2011 22:55:17 -0700</pubDate><title>Learning Ruby</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Rings true to me:</p><blockquote><p>And, of course, only large companies and publishers can bear these [patent and copyright infringement] costs. My fear is that It&rsquo;s [sic] only a matter of time before developers find the risks and expenses prohibitive and retreat to the safety of a larger organization. We&rsquo;ll be going back to square one.</p></blockquote><blockquote><p>Over the years many of the top selling apps have been created by independent developers, starting with Steve Demeter and Trism at the App Store launch, and continuing to this day with titles like Tiny Wings by Andreas Illiger.</p></blockquote><blockquote><p>Losing that kind of talent and innovation to a legal system is the real crime.</p></blockquote><p><a href=https://willfaught.com/2011/07/15/the-rise-and-fall-of-the-independent-developer/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-15:/2011/07/15/the-rise-and-fall-of-the-independent-developer/</guid><link>https://furbo.org/2011/07/13/the-rise-and-fall-of-the-independent-developer/</link><atom:link href="https://furbo.org/2011/07/13/the-rise-and-fall-of-the-independent-developer/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 15 Jul 2011 16:12:46 -0700</pubDate><title>The Rise And Fall Of The Independent Developer</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The problem is that too much stuff is thrown into the mix. Everyone has two weapons, a grenade, power ups, boosters, enhancements, experience points, dollars, and all this other random shit that results in a confusing maelstrom that you can only survive for a minute or two at a time. I don&rsquo;t like dying so often. It&rsquo;s a jarring experience. I make a plan, and before I can get a quarter way through it, I end up getting shot in the head through a wall by some guy twenty yards away. WTF. It&rsquo;s just so <em>frantic</em>. I don&rsquo;t like it. Give me the multiplayer of GoldenEye any day.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-11:/2011/07/11/uncharted-3-multiplayer-beta/</guid><link>https://willfaught.com/2011/07/11/uncharted-3-multiplayer-beta/</link><atom:link href="https://willfaught.com/2011/07/11/uncharted-3-multiplayer-beta/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 11 Jul 2011 23:00:05 -0700</pubDate><title>Uncharted 3 Multiplayer Beta</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Here is how I used to create new passwords: I picked a starting idea, free associated from that about five times until I had something suitably random and about the right length (8-10 characters), converted some of the letters to <a href=https://en.wikipedia.org/wiki/Leet rel=external>leet</a>
, capitalized a letter, and reversed the characters. For example, I could start with &ldquo;pillow&rdquo;: &ldquo;pillow&rdquo; makes me think of &ldquo;bed&rdquo;, &ldquo;bed&rdquo; makes me think of &ldquo;sheet&rdquo;, and &ldquo;sheet&rdquo; makes me think of &ldquo;sunlight&rdquo;. I&rsquo;ll stop there because &ldquo;sunlight&rdquo; is about the right length. &ldquo;sunlight&rdquo; becomes &ldquo;5un716h7&rdquo;, then &ldquo;5uN716h7&rdquo;, and then &ldquo;7h617Nu5&rdquo;. It&rsquo;s utterly unrecognizable, but you can still sound it out if you read it backwards. If I forgot the password, I could recall the free associations I made to get the original word, then follow the same process to transform the word into the password, recalling the choices I made at each step. It&rsquo;s surprising how easy it is to recover a password this way. In a sense, the secret behind the password isn&rsquo;t the password itself, but the process to generate the password.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-10:/2011/07/10/password-scheme/</guid><link>https://willfaught.com/2011/07/10/password-scheme/</link><atom:link href="https://willfaught.com/2011/07/10/password-scheme/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 10 Jul 2011 23:00:05 -0700</pubDate><title>Password Scheme</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The Worse Is Better philosophy is simply iterative design: lay the foundation, erect some walls, and you&rsquo;ll worry about putting on the roof later. Apple is notorious for doing this. See the iPhone. The one thing I disagree with Richard about is the diamond-like jewel scenario: &ldquo;To implement it to run fast is either impossible or beyond the capabilities of most implementors.&rdquo; My intuition says that&rsquo;s wrong; at least, it&rsquo;s not right in some cases.</p><p><a href=https://willfaught.com/2011/07/09/the-rise-of-worse-is-better/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-09:/2011/07/09/the-rise-of-worse-is-better/</guid><link>https://www.jwz.org/doc/worse-is-better.html</link><atom:link href="https://www.jwz.org/doc/worse-is-better.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 09 Jul 2011 23:00:05 -0700</pubDate><title>The Rise Of Worse Is Better</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>The visual representation of the switch widget for iOS 1-4 was ambiguous because the width of the draggable knob was about half of the overall width of the widget. When you look at it, it isn&amp;rsquo;t immediately clear whether the blue part is meant to signify the knob. Its new design in iOS 5 appears to have resolved this ambiguity by making the knob much narrower, and circular rather than rectangular. I really like it. Plus, the rounded corners better conform to the overall look and feel of iOS.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-07-08:/2011/07/08/evolution-of-a-switch/</guid><link>https://willfaught.com/2011/07/08/evolution-of-a-switch/</link><atom:link href="https://willfaught.com/2011/07/08/evolution-of-a-switch/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 08 Jul 2011 23:00:05 -0700</pubDate><title>Evolution Of A Switch</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>They say you should use a strong password, one that is long, has uppercase and lowercase letters, digits, symbols, even spaces. You should have a unique password for everything in case the security for one of them is compromised. Until recently, I had used two passwords, one for important things like computer accounts, e-mail, banking, and electronic payments, and the other for everything else, like Facebook, Twitter, and Tumblr. They had uppercase and lowercase letters and digits only, and were about eight characters long. I resolved to strengthen my passwords and have unique passwords for everything after the recent hack of the PlayStation Network, in which my financial information might have been compromised. After that, my passwords were about sixteen to twenty characters long and had symbols. Each password had the name of the corresponding service encoded in it. It took about ten seconds to type in a password, whereas before it had taken only a couple seconds. Not a bad trade off for peace of mind. However, there was a major problem with using secure passwords: they were long, and lots of services imposed certain restrictions on what kinds of passwords I could use. Lots of places, for example, imposed a minimum and maximum password length. Since my passwords&rsquo; lengths were proportional to the length of the name of their corresponding service, passwords for services with long names often times wouldn&rsquo;t satisfy their maximum password length restrictions. So for these cases, I had to revert to using one of my old, shorter, less secure passwords, which negated whatever security benefits my password system had. Strong passwords are a nice thing to have, but until it&rsquo;s common practice to allow arbitrary passwords, it&rsquo;s not practical to expect people to use them. So everyone should just shut up about them already.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-07:/2011/07/07/password-strength/</guid><link>https://willfaught.com/2011/07/07/password-strength/</link><atom:link href="https://willfaught.com/2011/07/07/password-strength/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 07 Jul 2011 23:01:06 -0700</pubDate><title>Password Strength</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>During the past several years, I experienced a variety of symptoms caused by stress, anxiety, and depression caused by my academic studies and thesis.</p><p><strong>Physical symptoms:</strong></p><ul><li>Blurred vision</li><li>Heart palpitations</li><li>Chest pain</li><li>Numbness</li><li>Twitches</li><li>Teeth grinding</li><li>Ear pain (<a href=https://en.wikipedia.org/wiki/Temporomandibular_joint_disorder rel=external>temporomandibular joint disorder</a>
)</li><li>Weight loss</li><li>Dizziness</li><li>Exhaustion</li><li>Panic attacks</li></ul><p><strong>Mental symptoms:</strong></p><ul><li>Insomnia</li><li>Irritability</li><li>Moodiness</li><li>Agitation</li><li>Loneliness</li><li>Detachment</li><li>Introversion</li><li>Impaired memory</li><li>Impaired focus</li><li>Impaired cognition</li><li>Bad judgment</li></ul><p><strong>Behavioral symptoms:</strong></p><ul><li>Procrastination</li><li>Nervous habits</li><li>Excessive sleeping</li></ul><p>There are others that I won&rsquo;t mention. God help you if this ever happens to you, because the symptoms are numerous, often subtle, and can be construed as symptoms of other, more serious problems (like multiple sclerosis). MRIs of my head and neck and a visit to a neurologist gave me a clean bill of health. I would not wish this upon anyone.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-07-07:/2011/07/07/symptoms-of-stress-anxiety-and-depression/</guid><link>https://willfaught.com/2011/07/07/symptoms-of-stress-anxiety-and-depression/</link><atom:link href="https://willfaught.com/2011/07/07/symptoms-of-stress-anxiety-and-depression/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 07 Jul 2011 02:33:25 -0700</pubDate><title>Symptoms Of Stress, Anxiety, And Depression</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Good interview. Interesting thoughts on the future of gaming.</p><p><a href=https://willfaught.com/2011/06/28/phil-harrison-on-the-future/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-28:/2011/06/28/phil-harrison-on-the-future/</guid><link>https://www.next-gen.biz/features/phil-harrison-future</link><atom:link href="https://www.next-gen.biz/features/phil-harrison-future" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 28 Jun 2011 16:36:20 -0700</pubDate><title>Phil Harrison On The Future</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I concluded my Master of Science in Computer Science dissertation with the following words, which in retrospect seems remarkable: &ldquo;Yada, yada, yada — everything I just said.&rdquo;</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-15:/2011/06/15/thats-all-folks/</guid><link>https://willfaught.com/2011/06/15/thats-all-folks/</link><atom:link href="https://willfaught.com/2011/06/15/thats-all-folks/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 15 Jun 2011 23:00:00 -0700</pubDate><title>That’s All, Folks!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Gross! I had no idea it could be this bad. Makes me shiver thinking about sleeping in that bed.</p><p><a href=https://willfaught.com/2011/06/14/bed-bugs-in-a-wooden-bed-frame-head-board-and-box-spring/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-14:/2011/06/14/bed-bugs-in-a-wooden-bed-frame-head-board-and-box-spring/</guid><link>https://bedbugger.com/2009/02/21/more-bed-bug-photos-by-dr-louis-sorkin/</link><atom:link href="https://bedbugger.com/2009/02/21/more-bed-bug-photos-by-dr-louis-sorkin/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 14 Jun 2011 23:00:06 -0700</pubDate><title>Bed Bugs In A Wooden Bed Frame, Head Board, And Box Spring</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Have you ever wondered, &ldquo;What kind of thing is that?&rdquo; I use Wikipedia to answer that question all the time. You can even use Wikipedia to find similar things that share the same category. What kind of thing is a <a href=https://en.wikipedia.org/wiki/Senate rel=external>senate</a>
? Well, apparently it&rsquo;s a <a href=https://en.wikipedia.org/wiki/Category:Legislatures rel=external>legislature</a>
. Did you know that a <a href=https://en.wikipedia.org/wiki/Category:Tricameral_legislatures rel=external>tricameral legislature</a>
is also a kind of legislature, and that there was a <a href=https://en.wikipedia.org/wiki/Tricameral_Parliament rel=external>Tricameral Parliament</a>
in South Africa until 1994? You could spend all day exploring the order of things.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-13:/2011/06/13/what-kind-of-thing-is-that/</guid><link>https://willfaught.com/2011/06/13/what-kind-of-thing-is-that/</link><atom:link href="https://willfaught.com/2011/06/13/what-kind-of-thing-is-that/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 13 Jun 2011 23:00:06 -0700</pubDate><title>What Kind Of Thing Is That?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>iTunes just charged me $6 because I presumably elected to subscribe to The New Yorker magazine. (I didn&rsquo;t.) iTunes says all charges are final, and provides no obvious way to dispute charges or request refunds. So I&rsquo;ll dispute the credit card charge as soon as it appears on my statement. Let&rsquo;s see how iTunes wriggles its way out of that one. What does iTunes do if you abuse credit card disputes and just dispute everything you buy? Do they deactivate your account if you dispute even a single charge (and hence break their precious purchase policy)?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-13:/2011/06/13/itunes-charge-dispute/</guid><link>https://willfaught.com/2011/06/13/itunes-charge-dispute/</link><atom:link href="https://willfaught.com/2011/06/13/itunes-charge-dispute/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 13 Jun 2011 22:09:23 -0700</pubDate><title>ITunes Charge Dispute</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Why do movies and TV shows use custom graphical user interfaces instead of Windows or Mac OS X? To make it look cool? To avoid paying a fee to Microsoft or Apple? You would think it would be easier to convey what&rsquo;s happening if they used something with which people are likely to be familiar. Tip to the people designing these things: Computers don&rsquo;t make sounds when they do stuff. There isn&rsquo;t a little beep every time the cursor moves, and text isn&rsquo;t typed out like a typewriter. I know you know this, because you used Windows or Mac OS X to make those effects.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-12:/2011/06/12/uis-in-movies-and-tv-shows/</guid><link>https://willfaught.com/2011/06/12/uis-in-movies-and-tv-shows/</link><atom:link href="https://willfaught.com/2011/06/12/uis-in-movies-and-tv-shows/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 12 Jun 2011 23:00:06 -0700</pubDate><title>UIs In Movies And TV Shows</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Apple announced a lot of new things on Monday: <a href=https://www.apple.com/macosx/ rel=external>their next Mac OS</a>
, <a href=https://www.apple.com/ios/ios5/ rel=external>their next iOS</a>
, and <a href=https://www.apple.com/icloud/ rel=external>their new cloud service</a>
. I&rsquo;m really excited about iOS and iCloud. The new feature I like the best is that iOS devices no longer need to synchronize with a computer. This necessitated a lot of additional functionality in the built-in apps and settings to make iOS self-sufficient. It really is the post-PC era! I can&rsquo;t wait to get them all.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-11:/2011/06/11/lion-icloud-ios-5-oh-my/</guid><link>https://willfaught.com/2011/06/11/lion-icloud-ios-5-oh-my/</link><atom:link href="https://willfaught.com/2011/06/11/lion-icloud-ios-5-oh-my/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 11 Jun 2011 23:00:06 -0700</pubDate><title>Lion, ICloud, IOS 5, Oh My!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Apparently, I&rsquo;ve been tying my shoes incorrectly all my life. I&rsquo;ve been tying the granny knot, which comes untied easily and tends to be oriented toe-to-heel instead of side-to-side. I tie my shoelaces right over left, then right loop over left loop. Fortunately, it&rsquo;s easy to correct: reverse the first step. For me, I have to do left over right, then right loop over left loop. Do they take away your kindergarten diploma for this?</p><p><a href=https://willfaught.com/2011/06/10/slipping-shoelaces-crooked-bows/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-10:/2011/06/10/slipping-shoelaces-crooked-bows/</guid><link>https://www.fieggen.com/shoelace/slipping.htm</link><atom:link href="https://www.fieggen.com/shoelace/slipping.htm" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 10 Jun 2011 23:00:06 -0700</pubDate><title>Slipping Shoelaces? Crooked Bows?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/gtuz5OmOh_M?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Steve Jobs humbly presents to the Cupertino City Council Apple&rsquo;s plans to build a new Cupertino campus. The campus would be just a few blocks away from their current one. There would be only one large, ring-shaped building (the new infinite loop), four or five stories tall. Lots of parking would be provided underground and in a nearby parking structure. 80% of the area, including the circular area inside the loop, would be landscaped, and the number of trees would double from about 3,000 to about 6,000. The building would hold about 12,000 employees. Apple would continue to use the old Cupertino campus as well. I like the design. The only downside I can see to working in the new loop would be the lunch lines at the cafe and getting from the parking structure to the building. Maybe they&rsquo;ll have trams or buses or something.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-08:/2011/06/08/steve-jobs-presents-ring-campus/</guid><link>https://willfaught.com/2011/06/08/steve-jobs-presents-ring-campus/</link><atom:link href="https://willfaught.com/2011/06/08/steve-jobs-presents-ring-campus/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 08 Jun 2011 00:23:50 -0700</pubDate><title>Steve Jobs Presents Ring Campus</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>So what steps is Crystal Dynamics [the game maker] taking to reinvent Tomb Raider?</p><p>&mldr;</p><p>Sprinkle Some RPG Elements: Tomb Raider will use a base camp system as Lara&rsquo;s home base or hub world. Here she can upgrade and build new gear, as well as purchase new survival skills (although I&rsquo;m not yet sure what she&rsquo;ll use for currency). From her base camp, she can revisit previous levels to look for items and reach areas previously inaccessible, much like Metroidvania games.</p></blockquote><p>Why does this sound so familiar?</p><p>If you find yourself sprinkling RPG elements into your video game, you&rsquo;ve run out of good ideas and tacitly admit the core game play isn&rsquo;t compelling enough to carry the narrative as far as you want.</p><p>If you&rsquo;re going to take the low road, at least don&rsquo;t make it contrived. Buying upgrades when marooned on a small island with hostile natives? With what? From whom? It doesn&rsquo;t matter, because I don&rsquo;t (and won&rsquo;t) buy it.</p><p><a href=https://willfaught.com/2011/06/07/recipe-for-rebooting-tomb-raider/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-07:/2011/06/07/recipe-for-rebooting-tomb-raider/</guid><link>https://ps3.ign.com/articles/117/1173370p1.html</link><atom:link href="https://ps3.ign.com/articles/117/1173370p1.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 07 Jun 2011 01:14:00 -0700</pubDate><title>Recipe For Rebooting Tomb Raider</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Impressive tech. Check out the scale and rendering parts. The landscapes jumped out at me, especially where you&rsquo;re in a tank driving over desert. There aren&rsquo;t many expansive landscapes in games, but I enjoy exploring them. Exploring Hyrule Field is what sucked me into Ocarina of Time.</p><p><a href=https://willfaught.com/2011/06/07/battlefield-3-frostbite-trailer/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-06-07:/2011/06/07/battlefield-3-frostbite-trailer/</guid><link>https://www.ign.com/videos/2011/06/06/battlefield-3-e3-2011-frostbite-trailer?objectid=82317</link><atom:link href="https://www.ign.com/videos/2011/06/06/battlefield-3-e3-2011-frostbite-trailer?objectid=82317" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 07 Jun 2011 00:58:00 -0700</pubDate><title>Battlefield 3: Frostbite Trailer</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Insidious and hilarious stuff:</p><blockquote><p>Randomly capitalize the first letter of a syllable in the middle of a word. For example ComputeRasterHistoGram().</p></blockquote><blockquote><p>Wherever the rules of the language permit, give classes, constructors, methods, member variables, parameters and local variables the same names. For extra points, reuse local variable names inside {} blocks. The goal is to force the maintenance programmer to carefully examine the scope of every instance. In particular, in Java, make ordinary methods masquerade as constructors.</p></blockquote><blockquote><p>Choose variable names that masquerade as mathematical operators, e.g.:
openParen = (slash + asterix) / equals;</p></blockquote><blockquote><p>Choose variable names with irrelevant emotional connotation. e.g.:
marypoppins = (superman + starship) / god;
This confuses the reader because they have difficulty disassociating the emotional connotations of the words from the logic they&rsquo;re trying to think about.</p></blockquote><blockquote><p>Ignore the Sun Java Coding Conventions, after all, Sun does. Fortunately, the compiler won&rsquo;t tattle when you violate them. The goal is to come up with names that differ subtlely only in case. If you are forced to use the capitalisation conventions, you can still subvert wherever the choice is ambigous, e.g. use both inputFilename and inputfileName. Invent your own hopelessly complex naming conventions, then berate everyone else for not following them.</p></blockquote><blockquote><p>Use lower case l to indicate long constants. e.g. 10l is more likely to be mistaken for 101 that 10L is.</p></blockquote><blockquote><p>Declare a global array in module A, and a private one of the same name in the header file for module B, so that it appears that it&rsquo;s the global array you are using in module B, but it isn&rsquo;t. Make no reference in the comments to this duplication.</p></blockquote><blockquote><p>Hungarian Notation is the tactical nuclear weapon of source code obfuscation techniques; use it! Due to the sheer volume of source code contaminated by this idiom nothing can kill a maintenance engineer faster than a well planned Hungarian Notation attack.</p></blockquote><blockquote><p>Compiler directives were designed with the express purpose of making the same code behave completely differently. Turn the boolean short-circuiting directive on and off repeatedly and vigourously</p></blockquote><p><a href=https://willfaught.com/2011/05/31/how-to-write-unmaintainable-code/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-31:/2011/05/31/how-to-write-unmaintainable-code/</guid><link>https://www.thc.org/root/phun/unmaintain.html</link><atom:link href="https://www.thc.org/root/phun/unmaintain.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 31 May 2011 23:00:06 -0700</pubDate><title>How To Write Unmaintainable Code</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/OP30F3ZxTmw?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>New features for Windows Phone, codenamed Mango. Impressive. It would make a great iPhone app.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-30:/2011/05/30/new-windows-phone-features/</guid><link>https://willfaught.com/2011/05/30/new-windows-phone-features/</link><atom:link href="https://willfaught.com/2011/05/30/new-windows-phone-features/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 30 May 2011 23:00:00 -0700</pubDate><title>New Windows Phone Features</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/vnuwKmzkAU4?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Star Wars Weekend 2011: Star Wars characters dancing to classic rock and techno. It&rsquo;s really well done, and really funny. Check out C-3PO and R2-D2 doing the robot at the end.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-29:/2011/05/29/star-wars-dance/</guid><link>https://willfaught.com/2011/05/29/star-wars-dance/</link><atom:link href="https://willfaught.com/2011/05/29/star-wars-dance/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 29 May 2011 21:25:00 -0700</pubDate><title>Star Wars Dance</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Paul Graham:</p><blockquote><p>Good people can fix bad ideas, but good ideas can&rsquo;t save bad people.</p></blockquote><blockquote><p>It&rsquo;s very dangerous to let anyone fly under you. If you have the cheapest, easiest product, you&rsquo;ll own the low end. And if you don&rsquo;t, you&rsquo;re in the crosshairs of whoever does.</p></blockquote><blockquote><p>But negative lessons are just as valuable as positive ones. Perhaps even more valuable: it&rsquo;s hard to repeat a brilliant performance, but it&rsquo;s straightforward to avoid errors.</p></blockquote><blockquote><p>If you want to do it, do it. Starting a startup is not the great mystery it seems from outside. It&rsquo;s not something you have to know about &ldquo;business&rdquo; to do. Build something users love, and spend less than you make. How hard is that?</p></blockquote><p><a href=https://willfaught.com/2011/05/26/how-to-start-a-startup/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-26:/2011/05/26/how-to-start-a-startup/</guid><link>http://paulgraham.com/start.html</link><atom:link href="http://paulgraham.com/start.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 26 May 2011 12:17:36 -0700</pubDate><title>How To Start A Startup</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>By <a href=https://en.wikipedia.org/wiki/Edsger_W._Dijkstra rel=external>Edsger W. Dijkstra</a>
. I&rsquo;ve never seen shit talking in scholarly criticism before:</p><blockquote><p>If that indication is correct, his objection is less against von Neumann programs than against his own clumsy way of trying to understand them.</p></blockquote><p>Some of that classic Dijkstra charm.</p><p><a href=https://willfaught.com/2011/05/25/a-review-of-the-1977-turing-award-lecture-by-john-backus/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-25:/2011/05/25/a-review-of-the-1977-turing-award-lecture-by-john-backus/</guid><link>https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD692.html</link><atom:link href="https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD692.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 May 2011 16:31:32 -0700</pubDate><title>A Review Of The 1977 Turing Award Lecture By John Backus</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My thoughts exactly. Fear of a plane crash isn&rsquo;t irrational; it&rsquo;s fearing the lack of control, which you <em>don&rsquo;t</em> have in a plane crash.</p><p><a href=https://willfaught.com/2011/05/23/142-plane-crash-victims-were-statistically-more-likely-to-have-died-in-a-car-crash/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-23:/2011/05/23/142-plane-crash-victims-were-statistically-more-likely-to-have-died-in-a-car-crash/</guid><link>https://feeds.theonion.com/~r/theonion/daily/~3/A_os60jrdOA/</link><atom:link href="https://feeds.theonion.com/~r/theonion/daily/~3/A_os60jrdOA/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 May 2011 12:00:06 -0700</pubDate><title>142 Plane Crash Victims Were Statistically More Likely To Have Died In A Car Crash</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>United tickets: $506. Travelodge room: $226. Enterprise car: $226. University publishing fee: $56. Master of Science in Computer Science: Priceless.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-05-22:/2011/05/22/priceless/</guid><link>https://willfaught.com/2011/05/22/priceless/</link><atom:link href="https://willfaught.com/2011/05/22/priceless/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 22 May 2011 12:00:06 -0700</pubDate><title>Priceless</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I have Facebook and Twitter configured to copy everything I publish on my blog. Occasionally, I want to edit a post, but it&rsquo;s already been copied, so I have to edit the same content in multiple places. The phrase &ldquo;social surgery&rdquo; popped into my head, and I thought I was very clever for thinking it up, but it turns out that <a href="https://www.google.com/search?q=social+surgery" rel=external>I was beaten to it</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-21:/2011/05/21/social-surgery/</guid><link>https://willfaught.com/2011/05/21/social-surgery/</link><atom:link href="https://willfaught.com/2011/05/21/social-surgery/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 21 May 2011 12:00:06 -0700</pubDate><title>Social Surgery</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I watched <em>Inside Job</em> a few weeks ago. The visuals used to explain collateralized debt obligations and credit default swaps were excellent. I actually hadn&rsquo;t understood what credit default swaps were until I watched this movie. I thought the interviews of Satyajit Pas and Eliot Spitzer were wonderfully insightful. Be sure to watch their extra scenes, which alone are worth renting the movie. It was refreshing to get the Icelandic narrative and perspective of the financial disaster. Actually, I&rsquo;d say the weakest part of the movie is the narration of the U.S. story. I highly recommend watching it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-20:/2011/05/20/inside-job/</guid><link>https://willfaught.com/2011/05/20/inside-job/</link><atom:link href="https://willfaught.com/2011/05/20/inside-job/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 20 May 2011 12:00:05 -0700</pubDate><title>Inside Job</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I finally bought Apple&rsquo;s wireless track pad and keyboard for my iMac. No more awkward wires! Free at last! At first I didn&rsquo;t like the idea of a track pad for a desktop, but it grew on me in the store. I like the two-finger scrolling too much to do without it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-19:/2011/05/19/went-wireless/</guid><link>https://willfaught.com/2011/05/19/went-wireless/</link><atom:link href="https://willfaught.com/2011/05/19/went-wireless/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 19 May 2011 12:00:06 -0700</pubDate><title>Went Wireless</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My dissertation for Master of Science in Computer Science was just approved and published by California Polytechnic State University, San Luis Obispo, CA.</p><p><a href=https://willfaught.com/2011/05/18/interoperation-for-lazy-and-eager-evaluation/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-18:/2011/05/18/interoperation-for-lazy-and-eager-evaluation/</guid><link>https://digitalcommons.calpoly.edu/theses/496/</link><atom:link href="https://digitalcommons.calpoly.edu/theses/496/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 18 May 2011 12:00:06 -0700</pubDate><title>Interoperation For Lazy And Eager Evaluation</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve had a Blu-ray player for a couple years now, and I&rsquo;ve yet to see BD-Live content I like. Usually, it&rsquo;s just ads for other movies. One time I saw a small ad in the corner of a Blu-ray interface for a movie ad in the BD-Live content. Somehow the movie studios have found yet another way to market to us, and have convinced us to pay for the privilege.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-16:/2011/05/16/bd-live/</guid><link>https://willfaught.com/2011/05/16/bd-live/</link><atom:link href="https://willfaught.com/2011/05/16/bd-live/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 16 May 2011 21:40:35 -0700</pubDate><title>BD-Live</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Busy little bees.</p><p><a href=https://willfaught.com/2011/05/06/how-software-companies-die/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-06:/2011/05/06/how-software-companies-die/</guid><link>https://fuzz-box.blogspot.com/2011/05/how-software-companies-die.html</link><atom:link href="https://fuzz-box.blogspot.com/2011/05/how-software-companies-die.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 06 May 2011 18:58:45 -0700</pubDate><title>How Software Companies Die</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-05-05:/2011/05/05/violent-death-of-human-being-terrific-news-for-once/</guid><link>https://www.theonion.com/violent-death-of-human-being-terrific-news-for-once-1819590288</link><atom:link href="https://www.theonion.com/violent-death-of-human-being-terrific-news-for-once-1819590288" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 05 May 2011 19:31:34 -0700</pubDate><title>Violent Death Of Human Being Terrific News For Once</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-05-05:/2011/05/05/osama-bin-laden-death-of-a-mother-fucker/</guid><link>https://www.theonion.com/osama-bin-laden-death-of-a-mother-fucker-1819580602</link><atom:link href="https://www.theonion.com/osama-bin-laden-death-of-a-mother-fucker-1819580602" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 05 May 2011 19:31:00 -0700</pubDate><title>Osama Bin Laden: Death Of A Mother Fucker</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<div class=paige-shortcode-youtube><div class="paige-video ratio ratio-16x9"><iframe allowfullscreen referrerpolicy=no-referrer-when-downgrade src="https://www.youtube.com/embed/cS5II_LavsQ?hl=en-us&amp;modestbranding=1" title="YouTube video"></iframe></div></div><p>Secret passages for your modern home. I love the chess lock.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-05-01:/2011/05/01/secret-passages/</guid><link>https://willfaught.com/2011/05/01/secret-passages/</link><atom:link href="https://willfaught.com/2011/05/01/secret-passages/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 01 May 2011 02:39:00 -0700</pubDate><title>Secret Passages</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>George Bush was a bad president. <em>Disclaimer: <a href=https://tvtropes.org/pmwiki/pmwiki.php/Main/ThisIsAWorkOfFiction rel=external>This story is fictional. No actual person or event is depicted.</a></em></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-29:/2011/04/29/disclaimer/</guid><link>https://willfaught.com/2011/04/29/disclaimer/</link><atom:link href="https://willfaught.com/2011/04/29/disclaimer/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 29 Apr 2011 01:58:53 -0700</pubDate><title>Disclaimer</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I watched Aliens today. In the scene where the ship is dropping to the planet below, the pilot says over the radio, &ldquo;In the pipe. Five by five.&rdquo; I realized that despite having seen this film several times, I had no idea what she meant, other than some general notion of well-being. My curiosity was piqued, so I looked around online and discovered that by &ldquo;in the pipe,&rdquo; she meant the ship was following the correct course, and by &ldquo;five by five,&rdquo; she meant her radio transmission quality was perfect. It turns out that &ldquo;<a href=https://en.wikipedia.org/wiki/Five_by_five rel=external>five by five</a>
&rdquo; is a phrase commonly used by radio stations to report each others&rsquo; transmission quality, where the first number (1-5, 5 being the best) is the signal strength and the second number is the signal clarity. I learned other interesting things, too. Police, firefighters, and other emergency responders use <a href=https://en.wikipedia.org/wiki/Ten-code rel=external>radio codes with &ldquo;10-&rdquo; prefixes</a>
(e.g. 10-20) because, due to the nature of radio, the first syllable of a transmission tends to be garbled. By prefixing everything you say with &ldquo;ten,&rdquo; it will be that useless prefix that&rsquo;s garbled and not the actual code. Moreover, old radios needed a second to &ldquo;warm up&rdquo; before anything spoken into them would be transmitted. The &ldquo;ten&rdquo; prefix helped people who forgot this. Military personnel obviously use <a href=https://en.wikipedia.org/wiki/Procedure_word rel=external>procedure words</a>
like &ldquo;over&rdquo; and &ldquo;out&rdquo; to keep transmissions short. It can sound pretty cool, professional-like. You hear soldier characters in movies and TV shows say these things all the time, even when not transmitting over radio. It turns out that these words are only used for radio transmissions, and not when speaking in person. Some procedure words like &ldquo;affirmative&rdquo; and &ldquo;negative&rdquo; are designed to have multiple syllables so that the meaning is clear if one of the syllables is garbled, although the U.S. Navy is phasing out these two in particular because their last two syllables are the same. &ldquo;Over and out&rdquo; is never proper because &ldquo;over&rdquo; and &ldquo;out&rdquo; are mutually exclusive; &ldquo;over&rdquo; requires a response, and &ldquo;out&rdquo; does not.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-25:/2011/04/25/radio-jargon/</guid><link>https://willfaught.com/2011/04/25/radio-jargon/</link><atom:link href="https://willfaught.com/2011/04/25/radio-jargon/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 25 Apr 2011 00:07:00 -0700</pubDate><title>Radio Jargon</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Donald Knuth:</p><blockquote><p>Asking an artist to become enough of a mathematician to understand how to write a font with 60 parameters is too much.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-24:/2011/04/24/60-parameters-is-too-far/</guid><link>https://willfaught.com/2011/04/24/60-parameters-is-too-far/</link><atom:link href="https://willfaught.com/2011/04/24/60-parameters-is-too-far/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 24 Apr 2011 23:06:00 -0700</pubDate><title>60 Parameters Is Too Far</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I wholeheartedly agree with <a href=https://brooksreview.net/2010/09/sucky-calendars/ rel=external>Ben Brooks</a>
and <a href=https://www.marco.org/2010/03/28/more-ideas-than-time-logarithmic-calendar-view rel=external>Marco Arment</a>
: we need a new calendar view that presents the next three days like in a week view and then puts events for the following week or two in a list, all visible at once. Using landscape orientation would be perfect for this. At least give us a week view. Event repetition needs the flexibility that Google Calendar provides: I want events that can repeat every Tuesday <em>and</em> Thursday. Event details need to be in a bigger font. It would be nice if you could choose the color for each calendar.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-24:/2011/04/24/iphone-calendar-needs-improvement/</guid><link>https://willfaught.com/2011/04/24/iphone-calendar-needs-improvement/</link><atom:link href="https://willfaught.com/2011/04/24/iphone-calendar-needs-improvement/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 24 Apr 2011 19:43:00 -0700</pubDate><title>IPhone Calendar Needs Improvement</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I tapped to look at the subscription information in the NYTimes iPad app. Apparently, one can save either $19 or $34 <em>at the same time</em> when paying $0.99 for either digital access plan. What is this, non-deterministic saving? Neither digital access plan interests me. I have no problem paying $5 per week for quality news coverage, but not letting me use their apps on all my devices is a deal breaker. It&rsquo;s on them to pay the up-front cost of making those apps. After that initial investment is made, all they have to do is write the articles and let the weekly bills roll in. Dividing access to their content across multiple devices into separate plans is a pathetic attempt to create artificial value. We see though it, NYT, we&rsquo;re not idiots. There needs to be two plans: one for print, and one for digital, and you can subscribe to both if you want. The digital content shouldn&rsquo;t have ads if I&rsquo;m paying for it. Welcome to the digital age: we like it cheap and straight up. No more paying thrice for our content: money for the content, eyeballs for the ads, and our personal information for yourselves and your advertisers. Apple, lead us to salvation!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-23:/2011/04/23/new-york-times-pay-wall/</guid><link>https://willfaught.com/2011/04/23/new-york-times-pay-wall/</link><atom:link href="https://willfaught.com/2011/04/23/new-york-times-pay-wall/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 23 Apr 2011 02:19:00 -0700</pubDate><title>New York Times Pay Wall</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s like an iPhone from an alternate, yet similar, universe. Ars nailed the image comparison.</p><p><a href=https://willfaught.com/2011/04/19/samsung-clones-iphone-apple-sues/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-19:/2011/04/19/samsung-clones-iphone-apple-sues/</guid><link>https://arstechnica.com/apple/news/2011/04/bad-touchwiz-apple-sues-samsung-for-patent-violations.ars</link><atom:link href="https://arstechnica.com/apple/news/2011/04/bad-touchwiz-apple-sues-samsung-for-patent-violations.ars" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 19 Apr 2011 00:13:00 -0700</pubDate><title>Samsung Clones IPhone, Apple Sues</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Rated an effusive 9.5/10 by Charles Onyett.</p><p><a href=https://willfaught.com/2011/04/18/portal-2-review-at-ign/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-18:/2011/04/18/portal-2-review-at-ign/</guid><link>https://pc.ign.com/articles/116/1162215p1.html</link><atom:link href="https://pc.ign.com/articles/116/1162215p1.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 18 Apr 2011 22:54:12 -0700</pubDate><title>Portal 2 Review At IGN</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Fascinating. Ironically, this confirms what I thought about conservatives.</p><p><a href=https://willfaught.com/2011/04/18/the-science-of-why-we-dont-believe-science/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-18:/2011/04/18/the-science-of-why-we-dont-believe-science/</guid><link>https://www.motherjones.com/politics/2011/04/denial-science-chris-mooney/</link><atom:link href="https://www.motherjones.com/politics/2011/04/denial-science-chris-mooney/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 18 Apr 2011 19:45:00 -0700</pubDate><title>The Science Of Why We Don’t Believe Science</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The Minotaur one sounds like a steal!</p><p><a href=https://willfaught.com/2011/04/15/craigslist-apartments/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-15:/2011/04/15/craigslist-apartments/</guid><link>https://xkcd.com/886/</link><atom:link href="https://xkcd.com/886/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 15 Apr 2011 17:28:00 -0700</pubDate><title>Craigslist Apartments</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Eric D. Snider:</p><blockquote><p>Did you know that when she had her first meetings with the AOL staff, she brought them Greek cookies and regaled them with amusing personal anecdotes?? It&rsquo;s true! Then she taught them traditional Greek folk songs! Then they all danced a tsamiko, drank ouzo, and ate gyros and baklava! Then Huffington emitted a bone-chilling shriek, unhinged her jaw, threw over the conference room table, and devoured everyone present.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-14:/2011/04/14/quite-a-snack/</guid><link>https://willfaught.com/2011/04/14/quite-a-snack/</link><atom:link href="https://willfaught.com/2011/04/14/quite-a-snack/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 14 Apr 2011 19:46:00 -0700</pubDate><title>Quite A Snack</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Marco Arment:</p><blockquote><p>Comments have always been a dysfunctional medium. They solve a real problem: authors&rsquo; need for validation, criticism, and feedback. But they solve it in a way that discourages civility and following up, and encourages hatred and spam.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-14:/2011/04/14/comments-suck/</guid><link>https://willfaught.com/2011/04/14/comments-suck/</link><atom:link href="https://willfaught.com/2011/04/14/comments-suck/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 14 Apr 2011 19:17:33 -0700</pubDate><title>Comments Suck</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Kevin Drum:</p><blockquote><p>&mldr;I&rsquo;d say it&rsquo;s a well deserved flip of the bird. Republicans, as you can imagine, are less enthusiastic, and this bit of the speech undoubtedly accounts for most of the bile being tossed around on Fox and elsewhere today. But hey — sometimes the truth hurts. And all Obama did was speak the simple truth. In the past decade, Republicans slashed taxes, started two wars, approved a big unfunded entitlement, and presided over an economic collapse that cratered tax revenues and required massive government spending to counteract. That&rsquo;s pretty much 100% of our existing deficit problem right there. All we&rsquo;re doing now is trying to clean up the mess the GOP has left us.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-14:/2011/04/14/cleaning-up-the-mess/</guid><link>https://willfaught.com/2011/04/14/cleaning-up-the-mess/</link><atom:link href="https://willfaught.com/2011/04/14/cleaning-up-the-mess/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 14 Apr 2011 14:04:00 -0700</pubDate><title>Cleaning Up The Mess</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Philip C. Plait, Bad Astronomy:</p><blockquote><p>With luck&mldr;we can plug up the drain of knowledge and topple the egg of ignorance.</p></blockquote><p>I love that there&rsquo;s an egg-of-something.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-13:/2011/04/13/the-egg-of-ignorance/</guid><link>https://willfaught.com/2011/04/13/the-egg-of-ignorance/</link><atom:link href="https://willfaught.com/2011/04/13/the-egg-of-ignorance/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 13 Apr 2011 00:47:00 -0700</pubDate><title>The Egg Of Ignorance</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s been a while since I&rsquo;ve run across a full-blown Flash web site. I ran across this one while shopping. This one has got to take the cake for gratuitous, gaudy presentation. Not only is it showy, but it&rsquo;s slower because of it. Someone needs to bring them out of the late &rsquo;90s.</p><p><a href=https://willfaught.com/2011/04/09/seriously-they-still-make-you/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-09:/2011/04/09/seriously-they-still-make-you/</guid><link>https://www.baldessarini.com/</link><atom:link href="https://www.baldessarini.com/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 09 Apr 2011 19:20:00 -0700</pubDate><title>Seriously, They Still Make You?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>How to deal with business contracts as a small business owner.</p><p><a href=https://willfaught.com/2011/04/08/getting-comfortable-with-contracts/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-08:/2011/04/08/getting-comfortable-with-contracts/</guid><link>https://weblog.muledesign.com/2011/04/getting_comfortable_with_contr.php</link><atom:link href="https://weblog.muledesign.com/2011/04/getting_comfortable_with_contr.php" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 08 Apr 2011 13:54:14 -0700</pubDate><title>Getting Comfortable With Contracts</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Some no-brainer improvements to Pinboard would be to fill in the URL title automatically like Delicious and display a large colored button to add new bookmarks so I don&amp;rsquo;t have to hunt for it in the links at the top of the page.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-04-07:/2011/04/07/no-brainer-pinboard-improvements/</guid><link>https://willfaught.com/2011/04/07/no-brainer-pinboard-improvements/</link><atom:link href="https://willfaught.com/2011/04/07/no-brainer-pinboard-improvements/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 07 Apr 2011 12:01:00 -0700</pubDate><title>No-Brainer Pinboard Improvements</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I just tried to FaceTime someone for the first time, but I couldn&rsquo;t find the button for it in the Contacts app. It turns out that there&rsquo;s a FaceTime option in the phone settings you have to turn on to enable it and see the buttons.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-07:/2011/04/07/you-have-to-enable-facetime/</guid><link>https://willfaught.com/2011/04/07/you-have-to-enable-facetime/</link><atom:link href="https://willfaught.com/2011/04/07/you-have-to-enable-facetime/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 07 Apr 2011 00:17:42 -0700</pubDate><title>You Have To Enable FaceTime</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-04-06:/2011/04/06/the-star-wars-fans-burden/</guid><link>https://www.penny-arcade.com/comic/2011/04/06/another-round</link><atom:link href="https://www.penny-arcade.com/comic/2011/04/06/another-round" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 06 Apr 2011 13:53:00 -0700</pubDate><title>The Star Wars Fan’s Burden</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I recently bought a MacBook Air (13", 256 GB SSD, 4 GB RAM, 2.13 GHz) and a Canon S95. My prior digital camera was several years old and was showing its age. It was very difficult to get low-light shots to turn out right, and most of my pictures were low-light. The S95 is a godsend. I&rsquo;ve only tried it out a little bit in my apartment so far, but even using the flash in near darkness (in my bathroom), the pictures look like they were taken with all the lights on. Well done, Canon! The thinness of the 13" MacBook Air is quite astonishing. It&rsquo;s so light in your hands, so wafer thin. The battery life is amazing compared to the three hours of my prior laptop, a MacBook from several years ago that has served me faithfully all this time. I bought the Air because I see myself living a more unpredictable life in the near future, so I see it becoming my main computer soon. I think a 27" Apple display and wireless keyboard and mouse would go well with it. It having an SSD, I immediately turned on FileVault, since you can&rsquo;t shred a file system on them. So far I&rsquo;m loving them both!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-04-03:/2011/04/03/new-goodies/</guid><link>https://willfaught.com/2011/04/03/new-goodies/</link><atom:link href="https://willfaught.com/2011/04/03/new-goodies/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 03 Apr 2011 03:54:00 -0700</pubDate><title>New Goodies</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Joel Spolsky:</p><blockquote><p>It turns out that nobody wrote the automated test to check if Vista provided users with a compelling reason to upgrade from XP.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-30:/2011/03/30/automated-compelling-reason-testing/</guid><link>https://willfaught.com/2011/03/30/automated-compelling-reason-testing/</link><atom:link href="https://willfaught.com/2011/03/30/automated-compelling-reason-testing/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 30 Mar 2011 16:51:00 -0700</pubDate><title>Automated Compelling Reason Testing</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-03-28:/2011/03/28/something-wrong-with-literally-everything-in-apartment/</guid><link>https://www.theonion.com/something-wrong-with-literally-everything-in-apartment-1819572469</link><atom:link href="https://www.theonion.com/something-wrong-with-literally-everything-in-apartment-1819572469" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 28 Mar 2011 01:28:00 -0700</pubDate><title>Something Wrong With Literally Everything In Apartment</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I tried out Minecraft today. All I did was mine blocks and build stuff. Didn&rsquo;t see nighttime or zombies or spiders or anything else I&rsquo;ve heard about. I was playing the free version, so maybe that stuff is paid only. The mining was surprisingly addictive, although it finally did get tiring after putting the finishing touches on my masterpiece. I ended up with a bridge and a staircase-turret-fire-pit thingy that was quite a lot of work to make.</p><p>By the way, I discovered (the hard way) that there&rsquo;s a limit on how high you can stack blocks.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-27:/2011/03/27/minecraft/</guid><link>https://willfaught.com/2011/03/27/minecraft/</link><atom:link href="https://willfaught.com/2011/03/27/minecraft/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 27 Mar 2011 22:44:00 -0700</pubDate><title>Minecraft</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Fox.com and other web sites that stream TV episodes purposely use buggy video software so that it will crash and I&amp;rsquo;ll have to reload the page and watch the ads all over again.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-03-27:/2011/03/27/web-video-ad-conspiracy-theory/</guid><link>https://willfaught.com/2011/03/27/web-video-ad-conspiracy-theory/</link><atom:link href="https://willfaught.com/2011/03/27/web-video-ad-conspiracy-theory/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 27 Mar 2011 22:06:00 -0700</pubDate><title>Web Video Ad Conspiracy Theory</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A few nights ago while lying in bed I put together a list of things that I don&rsquo;t like about C:</p><ul><li>Side effects</li><li>Weak typing</li><li>Breakable semantics</li><li>Simple types</li><li>Design tends to put many cases into one struct</li><li>No first-class functions</li><li>No overflow/sign checks</li><li>No homoiconicity or metacircular evaluation</li><li>Weak macros</li><li>Numerous code styles and conventions</li><li>No namespaces</li><li>Memory management</li><li>Incorrect arithmetic</li><li>Compiler-driven development</li><li>Implementation-defined behavior</li><li>No inherent or safe concurrency</li><li>Multiple character sets</li><li>Eager evaluation</li><li>Encourages monolithic design</li><li>Separate declarations and definitions</li><li>No cheap container types like lists or tuples built in</li><li>Difficult to reason about</li><li>Debugging is necessary and primitive</li><li>Declaration order matters</li></ul><p>I began to think about what I would change to improve it while keeping it attractive to current users. Despite this list, I gained a newfound respect for C&rsquo;s design. It really is quite elegant for being so low level.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-24:/2011/03/24/cs-faults/</guid><link>https://willfaught.com/2011/03/24/cs-faults/</link><atom:link href="https://willfaught.com/2011/03/24/cs-faults/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Mar 2011 23:12:00 -0700</pubDate><title>C’s Faults</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I &lt;em>love&lt;/em> it! Way better than WYSIWYG formatting. Hats off to John Gruber.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-03-24:/2011/03/24/i-just-learned-markdown/</guid><link>https://willfaught.com/2011/03/24/i-just-learned-markdown/</link><atom:link href="https://willfaught.com/2011/03/24/i-just-learned-markdown/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Mar 2011 23:00:00 -0700</pubDate><title>I Just Learned Markdown</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It took me several hours to figure out how to enable a Silverlight custom control to be &ldquo;activated&rdquo; by the space bar or enter keys like <code>Button</code>. It turns out when a control gets input events, it isn&rsquo;t automatically given focus (i.e. <code>OnGotFocus</code> isn&rsquo;t called). You have to call <code>Focus()</code> yourself. Hope this saves someone else some time.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-24:/2011/03/24/focus-yourself/</guid><link>https://willfaught.com/2011/03/24/focus-yourself/</link><atom:link href="https://willfaught.com/2011/03/24/focus-yourself/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Mar 2011 15:19:00 -0700</pubDate><title>Focus Yourself</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was working on a Silverlight control template last night and wondered which dependency properties are inherited and which aren&rsquo;t. It&rsquo;s a good idea to bind those that aren&rsquo;t in the template so the dependency properties for UIElement, FrameworkElement, and Control work as expected for your control. However, I couldn&rsquo;t find a list of inherited dependency properties in the documentation or elsewhere online. I discovered a somewhat reliable way to determine such a list: Look at the documentation for counterparts in WPF. The WPF documentation indicates whether a dependency property is inherited in the <em>Dependency Property Information</em> section. If it&rsquo;s inherited in WPF, then it&rsquo;s likely that it&rsquo;s inherited in Silverlight too, since they try to keep things as compatible as possible.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-24:/2011/03/24/silverlight-inherited-properties/</guid><link>https://willfaught.com/2011/03/24/silverlight-inherited-properties/</link><atom:link href="https://willfaught.com/2011/03/24/silverlight-inherited-properties/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Mar 2011 11:34:00 -0700</pubDate><title>Silverlight Inherited Properties</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ken Tindell:</p><blockquote><p>For embedded processors, it&rsquo;s a problem: again, it&rsquo;s CPU time and power consumption that makes things run sluggishly and runs the battery down. And the bigger the screen, the more data to be handled. The solution is again to get Flash to use specially-designed hardware for doing all this work: to have dedicated hardware pathways for converting video, for layering graphics and for scaling the outputs so that the huge amount of data being handled doesn&rsquo;t hit the CPU and soak up memory bandwidth. Unfortunately, we are only just now seeing embedded processors with this kind of video handling hardware coming to market and Flash needs to be adapted to use this hardware.</p></blockquote><p><a href=https://willfaught.com/2011/03/15/dedicated-hardware-needed-for-flash/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-15:/2011/03/15/dedicated-hardware-needed-for-flash/</guid><link>https://www.businessinsider.com/flash-video-on-tablets-the-real-reason-why-its-not-happened-2011-3</link><atom:link href="https://www.businessinsider.com/flash-video-on-tablets-the-real-reason-why-its-not-happened-2011-3" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 15 Mar 2011 23:32:42 -0700</pubDate><title>Dedicated Hardware Needed For Flash</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A moving account of a Japanese Apple store sheltering people made homeless by the tsunami and helping them contact loved ones via their wifi network and computers.</p><p><a href=https://willfaught.com/2011/03/15/apple-tsunami-fallout-haven/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-15:/2011/03/15/apple-tsunami-fallout-haven/</guid><link>https://kevinrose.com/blogg/2011/3/14/apples-role-in-japan-during-the-tohoku-earthquake.html</link><atom:link href="https://kevinrose.com/blogg/2011/3/14/apples-role-in-japan-during-the-tohoku-earthquake.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 15 Mar 2011 00:55:57 -0700</pubDate><title>Apple, Tsunami Fallout Haven</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Dilbert:</p><blockquote><p>Teamwork means you can&rsquo;t pick the side that&rsquo;s right.</p></blockquote><p><a href=https://willfaught.com/2011/03/14/teamwork/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-14:/2011/03/14/teamwork/</guid><link>https://dilbert.com/strips/comic/2011-03-13/</link><atom:link href="https://dilbert.com/strips/comic/2011-03-13/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 14 Mar 2011 00:44:00 -0700</pubDate><title>Teamwork</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Swim parallel to the shore until you&rsquo;re out of the current, which is usually narrow. I&rsquo;ve often heard how dangerous riptides are, but never how to save yourself from one.</p><p><a href=https://willfaught.com/2011/03/12/how-do-you-survive-a-riptide/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-12:/2011/03/12/how-do-you-survive-a-riptide/</guid><link>https://www.rd.com/health/how-to-save-your-own-life-12-emergency-situations/3/</link><atom:link href="https://www.rd.com/health/how-to-save-your-own-life-12-emergency-situations/3/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 12 Mar 2011 12:00:08 -0800</pubDate><title>How Do You Survive A Riptide?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>How well would the late Nobel-Prize-winning physicist Dr. Richard P. Feynman do in a technical interview at a software company?</p><p><a href=https://willfaught.com/2011/03/11/what-would-feynman-do/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-11:/2011/03/11/what-would-feynman-do/</guid><link>https://blogs.msdn.com/b/ericlippert/archive/2011/02/14/what-would-feynman-do.aspx?PageIndex=1</link><atom:link href="https://blogs.msdn.com/b/ericlippert/archive/2011/02/14/what-would-feynman-do.aspx?PageIndex=1" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 11 Mar 2011 12:00:08 -0800</pubDate><title>What Would Feynman Do?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Only $5! Next to that, Microsoft&rsquo;s prices are exorbitant. I love the Git support and the integration of Interface Builder into a single window.</p><p><a href=https://willfaught.com/2011/03/09/xcode-4-released/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-09:/2011/03/09/xcode-4-released/</guid><link>https://itunes.apple.com/us/app/xcode/id422352214</link><atom:link href="https://itunes.apple.com/us/app/xcode/id422352214" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 09 Mar 2011 13:23:42 -0800</pubDate><title>Xcode 4 Released</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Compares HTML and Silverlight development by a variety of criteria, and concludes that HTML is a better long term bet. I&rsquo;ve never seen it broken down like this before.</p><p><a href=https://willfaught.com/2011/03/09/going-with-html-instead-of-silverlight/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-03-09:/2011/03/09/going-with-html-instead-of-silverlight/</guid><link>https://davybrion.com/blog/2011/03/why-were-going-with-html5-instead-of-silverlight/</link><atom:link href="https://davybrion.com/blog/2011/03/why-were-going-with-html5-instead-of-silverlight/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 09 Mar 2011 12:00:07 -0800</pubDate><title>Going With HTML Instead Of Silverlight</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-03-08:/2011/03/08/no-secure-deletion-for-ssds/</guid><link>https://lifehacker.com/secure-erase-methods-probably-wont-work-on-your-solid-s-5767469</link><atom:link href="https://lifehacker.com/secure-erase-methods-probably-wont-work-on-your-solid-s-5767469" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 08 Mar 2011 12:00:08 -0800</pubDate><title>No Secure Deletion For SSDs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-03-07:/2011/03/07/the-helvetica-pretender/</guid><link>https://www.ms-studio.com/articles.html</link><atom:link href="https://www.ms-studio.com/articles.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 07 Mar 2011 00:42:11 -0800</pubDate><title>The Helvetica Pretender</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://www.apple.com/macosx/lion/ rel=external>Mac OS Lion</a>
looks promising:</p><ul><li>Choose and organize apps like iOS</li><li>Full screen apps</li><li>Better way to see running apps</li><li>File changes are saved automatically</li><li>File versions are stored and accessible like Time Machine</li><li>Restarting saves the state of running apps and restores them automatically</li><li>Easy file sharing with any Mac on your network</li><li>Server with wiki</li></ul><p>These are substantial new features that I would love to have. This is the kind of innovation I admire.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-25:/2011/02/25/mac-os-lion/</guid><link>https://willfaught.com/2011/02/25/mac-os-lion/</link><atom:link href="https://willfaught.com/2011/02/25/mac-os-lion/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 25 Feb 2011 12:00:07 -0800</pubDate><title>Mac OS Lion</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-02-24:/2011/02/24/stunning-new-zealand-earthquake-pictures/</guid><link>https://www.boston.com/bigpicture/2011/02/christchurch_earthquake.html</link><atom:link href="https://www.boston.com/bigpicture/2011/02/christchurch_earthquake.html" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Feb 2011 15:06:15 -0800</pubDate><title>Stunning New Zealand Earthquake Pictures</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I just started experimenting with builds in Keynote. I&amp;rsquo;m amazed at how simple it is to make fairly complex animations. Everything is attractive and slick. $20 on the Apple App Store is a steal. PowerPoint 2010 is $139. Microsoft: Where is the app store already?&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-02-24:/2011/02/24/apple-keynote/</guid><link>https://willfaught.com/2011/02/24/apple-keynote/</link><atom:link href="https://willfaught.com/2011/02/24/apple-keynote/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Feb 2011 12:00:07 -0800</pubDate><title>Apple Keynote</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>A stranger who leaves their dog in their car parks near me at work sometimes. I know this because I can hear it yapping incessantly in the morning as I get out of my car and walk past. What terribly boring and cramped days it must have. I hope it shits all over their back seat.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-02-23:/2011/02/23/poor-dog/</guid><link>https://willfaught.com/2011/02/23/poor-dog/</link><atom:link href="https://willfaught.com/2011/02/23/poor-dog/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 23 Feb 2011 12:00:06 -0800</pubDate><title>Poor Dog</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><guid isPermaLink="false">tag:willfaught.com,2011-02-20:/2011/02/20/it-could-save-your-life-one-day/</guid><link>https://www.wikihow.com/Survive-a-Long-Fall</link><atom:link href="https://www.wikihow.com/Survive-a-Long-Fall" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 20 Feb 2011 12:00:07 -0800</pubDate><title>It Could Save Your Life One Day</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I woke up early this morning and found myself propped up on my elbow and spitting repeatedly on my pillow. I then realized that I had just been doing this in a dream. As far as I know, I&rsquo;ve only sleepwalked once, but I&rsquo;ve never heard of sleepspitting. Gross.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-19:/2011/02/19/sleepspitting/</guid><link>https://willfaught.com/2011/02/19/sleepspitting/</link><atom:link href="https://willfaught.com/2011/02/19/sleepspitting/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 19 Feb 2011 12:00:07 -0800</pubDate><title>Sleepspitting</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>At one point Rachel (the replicant that Deckard hooks up with) asks Deckard if he&rsquo;s ever taken the Voight-Kampff test (which determines whether someone is a replicant) himself. I&rsquo;m surprised the story didn&rsquo;t do more with this potential plot twist. Deckard&rsquo;s character would have been more interesting had he wrestled with the suspicion that he too is a replicant.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-18:/2011/02/18/missed-blade-runner-opportunity/</guid><link>https://willfaught.com/2011/02/18/missed-blade-runner-opportunity/</link><atom:link href="https://willfaught.com/2011/02/18/missed-blade-runner-opportunity/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 18 Feb 2011 12:00:06 -0800</pubDate><title>Missed Blade Runner Opportunity</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m surprised Facebook doesn&rsquo;t offer a blog service. What better way to create a new source of information for advertisers and improve the attractiveness of the Facebook community? Ditch the notes, give us blogs.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-16:/2011/02/16/blogs-on-facebook/</guid><link>https://willfaught.com/2011/02/16/blogs-on-facebook/</link><atom:link href="https://willfaught.com/2011/02/16/blogs-on-facebook/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 16 Feb 2011 00:09:14 -0800</pubDate><title>Blogs On Facebook</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I used C quite a bit in college. Now I use C++ at work, and now I can really appreciate the relative simplicity and elegance of C. C++ just &lt;em>smells&lt;/em>. C# seems to be a synthesis of the best qualities of C and Java. One of the great absurdities of computation is how widespread C++ is.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-02-08:/2011/02/08/c/</guid><link>https://willfaught.com/2011/02/08/c/</link><atom:link href="https://willfaught.com/2011/02/08/c/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 08 Feb 2011 12:00:06 -0800</pubDate><title>C</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The Cross Media Bar is the sleekest UI I&rsquo;ve seen. Everything is ordered in a very structured, hierarchical way. You navigate it by doing up, down, left, and right movements that feel like drilling down into a tree, but look like a mix of scrolling a list and moving between pages. It has a very simple, minimal aesthetic, which pleases my own taste. I was disappointed to see that it won&rsquo;t also be used in Sony&rsquo;s NGP (PSP 2), but I can see that it wouldn&rsquo;t make for a good touch interface as-is.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-07:/2011/02/07/xmb/</guid><link>https://willfaught.com/2011/02/07/xmb/</link><atom:link href="https://willfaught.com/2011/02/07/xmb/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 07 Feb 2011 12:02:07 -0800</pubDate><title>XMB</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s been fascinating following the political unrest in Egypt the past couple weeks. I&rsquo;m very excited for the Egyptian people and hope Mubarak will be ousted. I was struck when looking at pictures of the protests at how westernized their clothing was. I&rsquo;d say that most of the people were dressed that way, although most of them are probably young. I hope this is all sorted out in time for me to tour there.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-06:/2011/02/06/egyptian-protests/</guid><link>https://willfaught.com/2011/02/06/egyptian-protests/</link><atom:link href="https://willfaught.com/2011/02/06/egyptian-protests/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Feb 2011 12:00:07 -0800</pubDate><title>Egyptian Protests</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>This is the most useless documentation I&rsquo;ve ever seen. Every Boolean property &ldquo;gets a value that indicates&rdquo; something. Inherited methods are mixed with the others. You have to drill down one page to see the list of overrides for a method name. I&rsquo;ve seen some class docs explain what they do by restating the class name in sentence form. I pine for the Javadocs of yore.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-05:/2011/02/05/msdn-documentation/</guid><link>https://willfaught.com/2011/02/05/msdn-documentation/</link><atom:link href="https://willfaught.com/2011/02/05/msdn-documentation/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Feb 2011 08:00:07 -0800</pubDate><title>MSDN Documentation</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I hate it when text isn&rsquo;t selectable in a dialog box or window. Gee, maybe I&rsquo;d <em>like</em> to look up exception 0x00000035 without having to squint and count zeroes.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-05:/2011/02/05/ui-pet-peeve/</guid><link>https://willfaught.com/2011/02/05/ui-pet-peeve/</link><atom:link href="https://willfaught.com/2011/02/05/ui-pet-peeve/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Feb 2011 01:41:12 -0800</pubDate><title>UI Pet Peeve</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://web.archive.org/web/20170825143412/https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html>Structure and Interpretation of Computer Programs:</a></p><blockquote><p>In a similar way, we can regard the evaluator as a very special machine that takes as input a description of a machine. Given this input, the evaluator configures itself to emulate the machine described&mldr; From this perspective, our evaluator is seen to be a universal machine. It mimics other machines when these are described as Lisp programs. This is striking. Try to imagine an analogous evaluator for electrical circuits. This would be a circuit that takes as input a signal encoding the plans for some other circuit, such as a filter. Given this input, the circuit evaluator would then behave like a filter with the same description. Such a universal electrical circuit is almost unimaginably complex. It is remarkable that the program evaluator is a rather simple program.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-04:/2011/02/04/the-zen-of-lisp/</guid><link>https://willfaught.com/2011/02/04/the-zen-of-lisp/</link><atom:link href="https://willfaught.com/2011/02/04/the-zen-of-lisp/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 04 Feb 2011 08:00:07 -0800</pubDate><title>The Zen Of Lisp</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was given <a href=https://www.amazon.com/Quadrivium-Classical-Liberal-Geometry-Cosmology/dp/0802778135/ rel=external>Quadrivium</a>
as a gift for Christmas and have been reading it on and off since then. It illustrates many of the ideas of the four classic liberal arts developed by Euclid, Archimedes, and many others: number, geometry, music, and cosmology. It&rsquo;s not a particularly deep book, but it covers a wonderful array of topics, and has quite exquisite and detailed illustrations. When reading it, I was struck by the sheer lack of exposure I had had to a lot of these core ideas. Reflecting on my early to middle education, I&rsquo;ve realized that the way these topics were taught made them boring and tedious, and what&rsquo;s worse, hid the interconnectedness of many different ideas. I would have loved learning this stuff. It seems we learned more by rote than by building ideas in our heads from the ground up; we learn the steps to compute an angle, but we don&rsquo;t know <em>why</em> it works, nor do we care. It&rsquo;s really a shame.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-03:/2011/02/03/quadrivium/</guid><link>https://willfaught.com/2011/02/03/quadrivium/</link><atom:link href="https://willfaught.com/2011/02/03/quadrivium/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 03 Feb 2011 16:01:07 -0800</pubDate><title>Quadrivium</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s kinda crazy how high Apple&rsquo;s stock is right now (currently $339). I wish I had invested more in it when it was only $90. I only considered buying their stock at the time because I believed in what they were doing, and didn&rsquo;t really care about dividends or stock price fluctuations.</p><p>I recently took stock of what I spend my money on and realized that Netflix is another company that I believe in, and would consider investing in without doing any research. For a while, I was using Netflix almost every day to stream video to my Apple TV, and I was getting three discs at a time. Netflix has gone on record stating that they consider themselves a streaming company now more than a movie rental company. Personally, I hate watching ads or paying outrageous prices per episode, so it&rsquo;s a great fit for me. I haven&rsquo;t even had live TV (cable or satellite) for over two years now.</p><p>Nintendo is another company I&rsquo;d invest in without question. They have their failings, but they can make stellar games, and they&rsquo;re the only company that sells video game consoles at a profit from day one. The Wii and DS were hits, and I think 3DS will continue that success. Does Nintendo even trade on an American stock market, or do you have to go through a Japanese one? If I weren&rsquo;t so wrapped up right now, I&rsquo;d look into it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-03:/2011/02/03/apple-netflix-and-nintendo/</guid><link>https://willfaught.com/2011/02/03/apple-netflix-and-nintendo/</link><atom:link href="https://willfaught.com/2011/02/03/apple-netflix-and-nintendo/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 03 Feb 2011 08:00:07 -0800</pubDate><title>Apple, Netflix, And Nintendo</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>OmniFocus for iPhone is a pretty great task organizer. You can even view a map of your surrounding area to see which tasks you can accomplish near your location. What confuses me is why they haven&rsquo;t added what seems to me to be an obvious extension of this: location-based notifications. When I&rsquo;m in the neighborhood of a QFC, I&rsquo;d like my iPhone to notify me that I can get an errand done. I looked a little at the Apple web site, and I think there&rsquo;s a way to do this. That OmniGroup hasn&rsquo;t added it boggles my mind. It would easily double the value of the app. OmniFocus costs $20, and without location notifications, it&rsquo;s way overpriced.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-02:/2011/02/02/omnifocus-is-missing-location-notifications/</guid><link>https://willfaught.com/2011/02/02/omnifocus-is-missing-location-notifications/</link><atom:link href="https://willfaught.com/2011/02/02/omnifocus-is-missing-location-notifications/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 02 Feb 2011 16:00:06 -0800</pubDate><title>OmniFocus Is Missing Location Notifications</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve been reading this Haskell tutorial, and I&rsquo;m almost finished with it. Most of it was review for me, but the sections on functors, applicative functors, monoids, monads, and zippers are very thorough and invaluable references. I love the tone of the writing and the artwork. It&rsquo;s so fanciful. I would totally buy this book if it were for sale. Check it out.</p><p><a href=https://willfaught.com/2011/02/02/learn-you-a-haskell-for-great-good/>✓</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-02:/2011/02/02/learn-you-a-haskell-for-great-good/</guid><link>http://www.learnyouahaskell.com/</link><atom:link href="http://www.learnyouahaskell.com/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 02 Feb 2011 08:00:00 -0800</pubDate><title>Learn You A Haskell For Great Good!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I really like my Tumblr theme. It&rsquo;s called Easy Reader, and it&rsquo;s free. In the past, I&rsquo;ve left blog services because I wasn&rsquo;t satisfied with the blog themes they had available for free. I&rsquo;m a big fan of simplicity. There&rsquo;s just something satisfying about good presentation. Hopefully this will entice me to stick around and blog more.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-01:/2011/02/01/tumblr-theme/</guid><link>https://willfaught.com/2011/02/01/tumblr-theme/</link><atom:link href="https://willfaught.com/2011/02/01/tumblr-theme/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 01 Feb 2011 16:00:07 -0800</pubDate><title>Tumblr Theme</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href="https://www.wolframalpha.com/input/?i=percentage+of+households+with+internet+access+in+the+united+states" rel=external>What is the percentage of households with internet access in the United States?</a>
75%, estimated as of 2008.</p><p>Wolfram Alpha is really cool.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-01:/2011/02/01/household-internet-access/</guid><link>https://willfaught.com/2011/02/01/household-internet-access/</link><atom:link href="https://willfaught.com/2011/02/01/household-internet-access/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 01 Feb 2011 12:37:00 -0800</pubDate><title>Household Internet Access</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>That&rsquo;s when I woke up this morning. I went to bed around 12:30 AM. My body is dumb. The upside is that I got quite a bit done this morning before work. I want to try getting up regularly two or three hours earlier than usual to see if that makes any lasting impact on my productivity. I&rsquo;ve never been a morning person, so I won&rsquo;t hold my breath.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-02-01:/2011/02/01/5-am/</guid><link>https://willfaught.com/2011/02/01/5-am/</link><atom:link href="https://willfaught.com/2011/02/01/5-am/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 01 Feb 2011 08:00:00 -0800</pubDate><title>5 AM</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I think the next home computer setup I&amp;rsquo;ll have will be a MacBook Air combined with a wireless keyboard and mouse and an Apple 27" display. I like the idea of being able to take my whole digital presence on the go with me, but be able to plug in for some extra screen space if I need it. Having a dedicated computer for the desktop seems like overkill these days.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2011-01-31:/2011/01/31/macbook-air/</guid><link>https://willfaught.com/2011/01/31/macbook-air/</link><atom:link href="https://willfaught.com/2011/01/31/macbook-air/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 31 Jan 2011 00:10:18 -0800</pubDate><title>MacBook Air</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Once again I&rsquo;ve moved from Blogger to another blogging service, and once again Blogger has screwed me. I seem to be the only one who can&rsquo;t export their posts from Blogger without getting an error. So, once again I&rsquo;m starting a blog from scratch. I&rsquo;m hoping I can write more regularly this time around. We&rsquo;ll see.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2011-01-30:/2011/01/30/moving-to-tumblr/</guid><link>https://willfaught.com/2011/01/30/moving-to-tumblr/</link><atom:link href="https://willfaught.com/2011/01/30/moving-to-tumblr/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Jan 2011 18:18:00 -0800</pubDate><title>Moving To Tumblr</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Most of these are characters from Shakespeare plays.</p><ul><li>Pinch</li><li>Nym</li><li>Bottom</li><li>Bumble</li><li>Duncan</li><li>Beadle</li><li>Lennox</li><li>Snare</li><li>Cato</li><li>Blunt</li><li>Cinna</li><li>Mortimer</li><li>Juno</li><li>Rook</li><li>Percy</li><li>Leonine</li><li>Page</li><li>Pander</li><li>Porter</li><li>Prium</li><li>Snug</li><li>Sprite</li><li>Surrey</li><li>Taurus</li><li>Verges</li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-11-24:/2010/11/24/cool-cat-names/</guid><link>https://willfaught.com/2010/11/24/cool-cat-names/</link><atom:link href="https://willfaught.com/2010/11/24/cool-cat-names/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 24 Nov 2010 18:27:00 -0800</pubDate><title>Cool Cat Names</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I haven&rsquo;t much enjoyed playing Red Dead Redemption.</p><h2 id=controls>Controls</h2><p>Despite using an analog stick to direct movement, your character, John, can only move on foot at four speeds. The two slowest are controlled alone by the analog stick. You hold a button to run and tap it to sprint. It&rsquo;s mind boggling that you don&rsquo;t have full analog control of John&rsquo;s speed. Any speed slower than sprinting when on foot or riding a horse is intolerable. I constantly tapped the run button to sprint. Tap tap tap. Tap tap tap. I think this game halved the life of that button on my controller. John has too much inertia, so when you want him go from a walk to a run or vice versa, there&rsquo;s a noticeable delay.</p><p>Riding a horse is a chore. Horses have no sense of sticking to the beaten path, following another horse, or avoiding trivial obstacles. You get hung up on rocks and cacti constantly if you&rsquo;re not vigilantly steering it around the next bend in the trail. God help you if you run it head-first into an obstacle or a steep slope and have to turn around sharply. There&rsquo;s a way to follow someone on a horse by holding a button, but if they turn too suddenly your horse blunders off the path. You&rsquo;d like to be able to run at a gallop and enjoy the sights, but you have to choose between going slow or seeing the sights, which is a shame since it takes forever to get places.</p><p>Auto aim is enabled by default and is too easy. You simply press the target button, then the shoot button, and repeat ad infinitum until all the enemies are dead. That&rsquo;s most of the gunplay. You can disable auto aim, but typically you&rsquo;re shooting from a moving horse or vehicle at tiny targets with a tiny reticule, which isn&rsquo;t reliably doable unless they&rsquo;re at point-blank range (which the dumb AI will do sometimes). Since the gunplay is so repetitive, I didn&rsquo;t find the challenge of manual aim very compelling, so I just left it as auto. There&rsquo;s bullet time, which is called Dead Eye, that you can briefly use for showdowns and hitting multiple targets in fights. Using Dead Eye circumvents any need to become good at gunplay and would feel like cheating if it weren&rsquo;t so ingrained in the objectives and narrative. There&rsquo;s inexplicably no button to reload, so sometimes I found myself shooting at nothing to force a reload before taking on more enemies. Crouching and taking cover are two different buttons for some reason, instead of having John do the right thing. They combined crouching with moving stealthily, but they could have just made stealth part of walking slowly.</p><h2 id=mechanics>Mechanics</h2><p>There&rsquo;s a store and money system, but there isn&rsquo;t much worth buying. I bought a lucky rabbit&rsquo;s foot near the beginning of the game that increases the money you find on dead bodies. That&rsquo;s about it. The guns you start out with are good enough, and you pick up the other weapons you need along the way for free. There&rsquo;s a ton of horses for sale for a moderate, identical price, but aside from looks, they all go the same, normal speed. There are doctors you can visit and medicines you can buy, but your health regenerates, so there&rsquo;s no need to ever use these things except for side quests where you heal other characters.</p><p>There&rsquo;s a morality system that has no real impact on the course of the game. I played mostly good and it was boring; evil seems to be the way to go. There&rsquo;s a notoriety system that defers posses and bounty hunters from pursuing you as you grow more famous, but this doesn&rsquo;t affect you if you play as good.</p><p>John can travel quickly to across the map by &ldquo;using&rdquo; a &ldquo;camp site&rdquo; item from his inventory. Every time you want to do this, you have to run out of town, away from any beaten trail, into the middle of nowhere, and strike camp. This can take anywhere from ten seconds to a minute. Then John packs it all up and magically appears at the destination on foot without a horse. Rockstar obviously had a checklist of western things to include in their game, and this was the only way to shoehorn in campfires.</p><p>There are several uninteresting side quests to increase John&rsquo;s skill that involve shooting wildlife and collecting herbs. The wildlife are dumb and not challenging. You can skin dead animals by pressing a button. It cuts to an upward shot of John as he skins them for about five seconds, but it doesn&rsquo;t show anything (the cowards) and the sound effects don&rsquo;t sound realistic. Also, I&rsquo;m pretty sure it takes longer than five seconds to skin an entire horse. The only one of these skill side quests worth a damn is the treasure hunting. You find vague, hand-drawn maps that illustrate landscape features you&rsquo;ll see throughout the land.</p><p>The AI is primitive and not challenging. During battles, enemies stay in one place and don&rsquo;t flank me or move to better cover as I move up. Heads pop up in the same places at regular intervals. These guys are idiots. The only way to die in this game is to be surprised by a new weapon (bombs), make a dumb mistake, or being overwhelmed by superior numbers. In the largest engagements, the game will face you off against ten or so, but even this is unfair for them if you&rsquo;ve played for a while.</p><h2 id=story>Story</h2><p>John&rsquo;s backstory is somewhat interesting, but it&rsquo;s lamely developed as awkward, rambling, shouted conversations between characters as they travel to destinations. The distances traveled are so large that the dialogue expands to fill a lot of the time, and in doing so becomes vapid and (confusingly) contradictory. It gets repetitive after having the same kind of long, drawn-out conversations with one character after another.</p><h2 id=effects>Effects</h2><p>The only reason to play this game is to see and hear what it has to offer, which is quite stellar. I&rsquo;ve never seen a landscape so lifelike. Despite there being many low-resolution textures, everything blends together well into a seamless vista. Cacti and shrubs cast ground shadows and lend a sense of depth. Rolling hills add imperfections and visual detail to a vast area that can be largely explored on a whim. Rain puddles accumulate in flat areas and reflect the light. America is somewhat bland and uniform, a mostly flat desert with some hills and valleys. Mexico is far more lush and colorful, with those tall, narrow, red columns of rock. There are some problems with scenery popping in. The voice acting is superb, especially for the character Landon Ricketts. Animations and lip sync are top notch. It&rsquo;s a visceral experience.</p><h2 id=closing-comments>Closing comments</h2><p>It&rsquo;s obvious what Rockstar has done here. They took their beloved Grand Theft Auto game play and slapped a western look on it. Rockstar really makes just a family of nearly identical games called Grand Theft Blah. In Red Dead Redemption&rsquo;s case, it&rsquo;s Grand Theft Horse. I haven&rsquo;t played much of Grand Theft Auto, but I recognize the same formula: the same map, the same third-person perspective, the same kind of side quests. In truth there isn&rsquo;t any game mechanic innovation here to see. It&rsquo;s just a different skin, albeit a pretty one.</p><p>Regardless of whether the game mechanics are innovative, they&rsquo;re bad in their own right, lacking compelling ideas and just seeming lazy. They took a couple core ideas, shooting guns and riding horses, and instead of making compelling experiences, they merely combined them together in obvious, boring, and repetitive ways. Most of the quests and side quests offer identical experiences. Once you&rsquo;ve played a few, you&rsquo;ve played them all. They artificially inflate the length of the game by making you repeat things over and over. What&rsquo;s sad is how amazing this game really could have been.</p><p>In summary, the game mechanics and narrative are terrible, but the game looks beautiful and sounds superb. Rent, don&rsquo;t buy.</p><p>6/10</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-11-13:/2010/11/13/red-dead-redemption/</guid><link>https://willfaught.com/2010/11/13/red-dead-redemption/</link><atom:link href="https://willfaught.com/2010/11/13/red-dead-redemption/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 13 Nov 2010 22:19:00 -0800</pubDate><title>Red Dead Redemption</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>A great introduction to Haskell: &lt;a href=http://learnyouahaskell.com/ rel=external>Learn You a Haskell for Great Good!&lt;/a>&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2010-10-31:/2010/10/31/free-online-haskell-book/</guid><link>https://willfaught.com/2010/10/31/free-online-haskell-book/</link><atom:link href="https://willfaught.com/2010/10/31/free-online-haskell-book/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 31 Oct 2010 11:10:00 -0700</pubDate><title>Free Online Haskell Book</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The big thing touted for Windows Phone 7 as the innovation over iPhone is hubs: information aggregated into one place and viewable at a glance. It seems to me that Apple could easily add such a feature to the home screen by letting you drag downward or upward to view a Dashboard like in Mac OS X that you can put widgets on that call out whatever information you care about—upcoming calendar events, missed calls, new messages, weather, whatever. They could do the same for the lock screen. If they do those things, I don&rsquo;t think Windows Phone 7 would have any advantage over iPhone. Microsoft is taking a big bet that Apple won&rsquo;t simply copy that one feature if it proves popular.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-10-31:/2010/10/31/iphone-hub/</guid><link>https://willfaught.com/2010/10/31/iphone-hub/</link><atom:link href="https://willfaught.com/2010/10/31/iphone-hub/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 31 Oct 2010 10:59:00 -0700</pubDate><title>IPhone Hub</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I recently bought a Kindle 3 to condense the space occupied by my book collection and to make it portable, searchable, annotatable, and replaceable. The average $10 per book isn&rsquo;t bad, especially now when I only read a couple books a month. It&rsquo;s light, slim, attractive, readable, and has long battery life. Reading the paper-like screen noticeably strains my eyes less than my iPad&rsquo;s LCD screen. It&rsquo;s somewhat astonishing that it can display images without using power. The UI is good and pretty discoverable, although screen refreshes are sluggish despite recent improvements, and the arrow buttons are hard to press with my thumb. I wish the books weren&rsquo;t protected by DRM, but this doesn&rsquo;t hinder me at the moment. At $139, it&rsquo;s tough to say no to trying it out, and I&rsquo;m glad I did. I plan to buy all my new books with it when possible from now on.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-18:/2010/09/18/kindle-3/</guid><link>https://willfaught.com/2010/09/18/kindle-3/</link><atom:link href="https://willfaught.com/2010/09/18/kindle-3/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 18 Sep 2010 00:27:00 -0700</pubDate><title>Kindle 3</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Microsoft recently released a <a href=https://windows.microsoft.com/en-US/internet-explorer/products/ie-9/home rel=external>beta of Internet Explorer 9</a>
. I&rsquo;ve used it a little and have some initial impressions. Overall, it&rsquo;s a much-needed improvement over 8. It&rsquo;s a cross between Firefox and Chrome, incorporating features from each, although there are some 8 leftovers. The look is simple and clean and comes off as much more lightweight. It&rsquo;s a pleasure to see and to use.</p><p>The address bar and tabs area were set horizontally adjacent to each other. This arrangement saves more space than Chrome, and looks good in a maximized window, but in an un-maximized window, the address bar is too narrow to see where you are beyond just the domain name, and the tabs get crammed together when you have about four or more.</p><p>I expected double-clicking in the empty part of the tabs area would maximize the window, like it does for the window title bar, but instead it opened a new tab despite there being a dedicated &ldquo;new tab&rdquo; button. The colors for related tabs are a little more subtle and look better. You still can&rsquo;t close a tab without selecting it; this should be possible by hovering over them.</p><p>There&rsquo;s no longer a bookmark bar separate from general bookmarks. I find bookmark bars useful and initially missed it, but to be fair, the favorites pane is a click away, and my bookmarks would be readily available there while saving me space when they aren&rsquo;t needed.</p><p>The status bar was removed. In its place appears a temporary pop-up when you hover over a link, like Chrome. This works well and saves space.</p><p>I&rsquo;m puzzled why they didn&rsquo;t combine the refresh and stop buttons into one, as Safari does. This would eliminate a button and save space, and in my opinion be even clearer, since the stop button doesn&rsquo;t do anything if the page is already loaded, and so forth.</p><p>The back button was made bigger than the foreword button, which I find distasteful and unpleasantly asymmetric. I realize Firefox does this too. I suppose somewhere, at some time, someone did a study and found that people who slam their mouse around and try to click things by approximation rather than deliberation would be more likely to hit a bigger back button. I say forget them. The aggregate ten seconds it&rsquo;ll save me in my lifetime isn&rsquo;t worth the eyesore.</p><p>The go button is a different story. I can actually see its presence doing real good for many users, since there is really no consistent paradigm for &ldquo;do something&rdquo; other than buttons. I wish there was an option to remove it, though. The same goes for the compatibility view button.</p><p>The page search highlights matches, but switching between them is hard to follow. There should be an emphasis animation to draw your eye like Safari does it. In addition, marking the location of matches in the scrollbar would be very helpful.</p><p>Aids for subscribing to syndications were inexplicably removed. This must be put back.</p><p>The source view pops a new window instead of a new tab. The links to stylesheets aren&rsquo;t made clickable like Chrome does it. Searching for text pops a dialog, unlike searching in a page.</p><p>The pop-up blocker still requires you to refresh the entire page.</p><p>A download manager was added as a separate window like other browsers, so downloads are no longer individual windows. I didn&rsquo;t test whether, like before, you can keep downloads going without browser windows open, but I would expect so.</p><p>Some things were broken for everyday use. The Acid3 test passed 95/100 with some lags. YouTube page titles were nonsensical (e.g. <em>#p/a/f/1/VpNzvP_j2NY</em>). The Flash UI text font was ugly and mis-sized. On a YouTube channel page, clicking the grid view button doesn&rsquo;t pause the player, and the player view button is below the grid view one, instead of beside it. In Blogger, I couldn&rsquo;t paste my notes for this post into the textbox, and the mouse icons for several buttons were the text selection one instead of the pointing hand one. Given these realities, I wouldn&rsquo;t switch from Chrome yet.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-18:/2010/09/18/internet-explorer-9-beta/</guid><link>https://willfaught.com/2010/09/18/internet-explorer-9-beta/</link><atom:link href="https://willfaught.com/2010/09/18/internet-explorer-9-beta/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 18 Sep 2010 00:06:00 -0700</pubDate><title>Internet Explorer 9 Beta</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m going to donate my old desktop computer. To be safe, I wanted to wipe the hard drive. I figured an <a href=https://www.ubuntu.com/desktop/get-ubuntu/download rel=external>Ubuntu Live CD</a>
would do the trick, and I almost got it to work by guessing the command, but I had mistakenly specified the partition (sda5) instead of the drive itself (sda). It worked like a charm. Here&rsquo;s how I did it:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sh data-lang=sh><span style=display:flex><span>sudo swapoff -a
</span></span><span style=display:flex><span>sudo shred -vfz /dev/sda</span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-17:/2010/09/17/wiping-my-old-hard-drive/</guid><link>https://willfaught.com/2010/09/17/wiping-my-old-hard-drive/</link><atom:link href="https://willfaught.com/2010/09/17/wiping-my-old-hard-drive/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 17 Sep 2010 23:04:00 -0700</pubDate><title>Wiping My Old Hard Drive</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was loathe to get a media center PC because:</p><ul><li>it would be a living room eyesore,</li><li>it would use a keyboard and a mouse instead of a remote,</li><li>it would cost as much as a regular computer,</li><li>and TV episode rentals would cost too much.</li></ul><p>I think Apple has finally solved these problems with their newest <a href=https://www.apple.com/appletv/ rel=external>Apple TV</a>
:</p><ul><li>It&rsquo;s tiny and black and can pull any media wirelessly from my desktop,</li><li>I can use my iPhone to control it,</li><li>it&rsquo;s $100,</li><li>and TV episode rentals are $1.</li></ul><p>In addition, I can live switch between viewing media on my iPhone or iPad and my TV and surround sound.</p><p>While working with my iPhone and iPad is cool, I think the real innovation is getting TV show rentals down to $1 like they did for music. I&rsquo;ve never wanted to own TV shows I bought online. I think this will actually incentivize me to spend more on videos. I don&rsquo;t have cable because I don&rsquo;t want to pay for things I don&rsquo;t use. Apple TV is another step in the direction of paying for TV shows à la carte, and goes even further by breaking it down by episode.</p><p>Apple appears to consistently deliver products that solve my problems. Bravo, Apple! Here, take my money.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-08:/2010/09/08/apple-tv/</guid><link>https://willfaught.com/2010/09/08/apple-tv/</link><atom:link href="https://willfaught.com/2010/09/08/apple-tv/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 08 Sep 2010 23:49:00 -0700</pubDate><title>Apple TV</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Despite wanting Firefox-like extensions for Safari, I only just tried <a href=https://extensions.apple.com rel=external>Safari extensions</a>
. <em>Gentle Status Bar</em> and <em>Middle-Click AutoScroll</em> add Chrome-like behavior. <em>AdBlock</em> is a necessity for any clean experience. <em>Delicous</em>, <em>Instapaper</em>, and <em>Add To Google Reader</em> are invaluable when finding things to go back to. <em>Add To Amazon Wish List</em> is a good idea, but I sense it&rsquo;s naively implemented.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-06:/2010/09/06/safari-extensions/</guid><link>https://willfaught.com/2010/09/06/safari-extensions/</link><atom:link href="https://willfaught.com/2010/09/06/safari-extensions/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 06 Sep 2010 16:28:00 -0700</pubDate><title>Safari Extensions</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My favorite computer science paper is <em>Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs</em> by <a href=https://en.wikipedia.org/wiki/John_Backus rel=external>John Backus</a>
. It struck me because it reflected my own thoughts on contemporary languages. I started to compile quotations from the paper, but found I was quoting more than not, so instead I&rsquo;ll just give you a taste by quoting the very beginning. If this piques your interest, I highly recommend <a href=https://www.stanford.edu/class/cs242/readings/backus.pdf rel=external>reading the paper</a>
; it&rsquo;s very readable, insightful, and prophetic. As I design languages, this will be one of my influences. I wish I had been able to meet him before he passed away.</p><blockquote><p>Programming languages appear to be in trouble. Each successive language incorporates, with a little cleaning up, all the features of its predecessors plus a few more. Some languages have manuals exceeding 500 pages; others cram a complex description into shorter manuals by using dense formalisms. The Department of Defense has current plans for a committee-designed language standard that could require a manual as long as 1,000 pages. Each new language claims new and fashionable features, such as strong typing or structured control statements, but the plain fact is that few languages make programming sufficiently cheaper or more reliable to justify the cost of producing and learning to use them.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-06:/2010/09/06/john-backus/</guid><link>https://willfaught.com/2010/09/06/john-backus/</link><atom:link href="https://willfaught.com/2010/09/06/john-backus/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 06 Sep 2010 00:45:00 -0700</pubDate><title>John Backus</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Just skimmed <a href=http://diveintohtml5.info rel=external>an overview of HTML5</a>
. Love the new canvas and the new input form elements, like colors, emails, URLs, and searches. I&rsquo;m glad they ditched the crufty stuff like <code>&lt;center></code>. I wish there was help for animations.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-04:/2010/09/04/html5/</guid><link>https://willfaught.com/2010/09/04/html5/</link><atom:link href="https://willfaught.com/2010/09/04/html5/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 Sep 2010 17:57:00 -0700</pubDate><title>HTML5</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you&rsquo;re a programmer and you&rsquo;re not using a distributed version control system, you&rsquo;re doing yourself a disservice. <a href=https://whygitisbetterthanx.com/ rel=external>Learn why Git is better than your version control system</a>
and then <a href=https://eagain.net/articles/git-for-computer-scientists/ rel=external>learn how it works</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-04:/2010/09/04/git/</guid><link>https://willfaught.com/2010/09/04/git/</link><atom:link href="https://willfaught.com/2010/09/04/git/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 Sep 2010 16:57:00 -0700</pubDate><title>Git</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was just looking at my film collection and realized that I never want to own another film. I&rsquo;ll eventually sell off most of them, except for my favorites that I can watch a hundred times and still love. If I want to watch a film, I can just queue it on Netflix and have it within days. If I have the urge to watch a film immediately, I can rent it on iTunes or Amazon for just a few dollars and start watching it immediately. Either way, I save money. Thank you, Internet.</p><p>We seem to be digitizing and transmitting media more and more. Ideally, none of my media would occupy any physical space and would be available on demand anywhere. Apple TV, Amazon Kindle, iPad, and iPhone together seem to offer a pretty comprehensive way to do this.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-09-04:/2010/09/04/owning-films/</guid><link>https://willfaught.com/2010/09/04/owning-films/</link><atom:link href="https://willfaught.com/2010/09/04/owning-films/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 Sep 2010 15:36:00 -0700</pubDate><title>Owning Films</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>&lt;a href=http://blog.jimmy.schementi.com/2010/03/pycon-2010-python-in-browser.html rel=external>This just blew my mind&lt;/a>
. The DLR is the shit.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2010-09-04:/2010/09/04/python-and-ruby-in-silverlight/</guid><link>https://willfaught.com/2010/09/04/python-and-ruby-in-silverlight/</link><atom:link href="https://willfaught.com/2010/09/04/python-and-ruby-in-silverlight/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 04 Sep 2010 15:04:00 -0700</pubDate><title>Python And Ruby In Silverlight</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve come to love reading essays by <a href=http://www.paulgraham.com/articles.html rel=external>Paul Graham</a>
and <a href=https://www.joelonsoftware.com/ rel=external>Joel Spolsky</a>
about programming and the business of programming. Their writing is excellent, their topics interesting and practical, their substance deep and intelligent, their style natural and accessible, their meaning clear and concise. I especially enjoy reading Graham because he demonstrates the practical advantages of functional programming, and Lisp in particular, through anecdotes of his own experience starting a software company and wiping the floor with his competitors. I&rsquo;ve almost come to appreciate the fact that most programmers are clueless about functional programming because of Graham. I say almost because it only helps you if you work for yourself, which I currently do not. If you&rsquo;re a programmer, I highly recommend grazing their essays on a lunch break.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-08-27:/2010/08/27/essays-for-programmers/</guid><link>https://willfaught.com/2010/08/27/essays-for-programmers/</link><atom:link href="https://willfaught.com/2010/08/27/essays-for-programmers/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 27 Aug 2010 23:20:00 -0700</pubDate><title>Essays For Programmers</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>There are lots of great quotations from <a href=http://paulgraham.com/articles.html rel=external>his essays</a>
. I&rsquo;ll update here as I find new ones.</p><p>From <em>The Other Road Ahead</em>:</p><p>In the desktop software business, doing a release is a huge trauma, in which the whole company sweats and strains to push out a single, giant piece of code. Obvious comparisons suggest themselves, both to the process and the resulting product.</p><p>and:</p><p>When you release only one new version a year, you tend to deal with bugs wholesale. Some time before the release date you assemble a new version in which half the code has been torn out and replaced, introducing countless bugs. Then a squad of QA people step in and start counting them, and the programmers work down the list, fixing them. They do not generally get to the end of the list, and indeed, no one is sure where the end is. It&rsquo;s like fishing rubble out of a pond. You never really know what&rsquo;s happening inside the software. At best you end up with a statistical sort of correctness.</p><p>From <em>Taste for Makers</em>:</p><p>Today&rsquo;s experimental error is tomorrow&rsquo;s new theory. If you want to discover great new things, then instead of turning a blind eye to the places where conventional wisdom and truth don&rsquo;t quite meet, you should pay particular attention to them.</p><p>From <em>Revenge of the Nerds</em>:</p><p>So here we have two pieces of information that I think are very valuable. In fact, I know it from my own experience. Number 1, languages vary in power. Number 2, most managers deliberately ignore this. Between them, these two facts are literally a recipe for making money. ITA is an example of this recipe in action. If you want to win in a software business, just take on the hardest problem you can find, use the most powerful language you can get, and wait for your competitors&rsquo; pointy-haired bosses to revert to the mean.</p><p>and:</p><p>If you try to solve a hard problem, the question is not whether you will use a powerful enough language, but whether you will (a) use a powerful language, (b) write a de facto interpreter for one, or (c) yourself become a human compiler for one. We see this already begining to happen in the Python example, where we are in effect simulating the code that a compiler would generate to implement a lexical variable.</p><p>This practice is not only common, but institutionalized. For example, in the OO world you hear a good deal about &ldquo;patterns&rdquo;. I wonder if these patterns are not sometimes evidence of case (c), the human compiler, at work. When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I&rsquo;m using abstractions that aren&rsquo;t powerful enough&ndash; often that I&rsquo;m generating by hand the expansions of some macro that I need to write.</p><p>From <em>A Plan for Spam</em>:</p><p>As a rule of thumb, the more qualifiers there are before the name of a country, the more corrupt the rulers. A country called The Socialist People&rsquo;s Democratic Republic of X is probably the last place in the world you&rsquo;d want to live.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-08-23:/2010/08/23/paul-graham/</guid><link>https://willfaught.com/2010/08/23/paul-graham/</link><atom:link href="https://willfaught.com/2010/08/23/paul-graham/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Aug 2010 13:07:00 -0700</pubDate><title>Paul Graham</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>If you use GoDaddy and have trouble using their Total DNS Control feature to configure your domains, try permitting all cookies, or permitting cookies from secureserver.net, or using another browser, like Firefox. I kept getting an error saying the feature was unavailable, so I couldn&amp;rsquo;t redirect my domain name to Blogger. I tried using Firefox instead of Safari and it magically worked.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2010-07-17:/2010/07/17/godaddy/</guid><link>https://willfaught.com/2010/07/17/godaddy/</link><atom:link href="https://willfaught.com/2010/07/17/godaddy/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 17 Jul 2010 22:17:00 -0700</pubDate><title>GoDaddy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I hiked Mailbox Peak with my friend Andrew and some of his friends a few weeks ago. I hadn&rsquo;t been hiking in a long time and was really out of shape. It was three miles long and 3900 feet up to the summit. I was so tired by the time I got to the bottom I was hobbling with the help of my walking stick. The trail didn&rsquo;t switch back and forth so much as plough straight up the mountainside with few places to rest. The sky was overcast for most of the morning, but burned off later. Sunbeams poked through the clouds and trees near the tree line, making a striking effect. I forgot to bring sunscreen, of course, having not done outdoorsy things in a great while, and got quite a burn on my forearms and neck. My arms just stopped peeling a couple days ago. My legs were sore for days, almost a week. It felt great to get out there and feel my heart thumping in my chest again.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-07-15:/2010/07/15/mailbox-peak/</guid><link>https://willfaught.com/2010/07/15/mailbox-peak/</link><atom:link href="https://willfaught.com/2010/07/15/mailbox-peak/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 15 Jul 2010 16:05:09 -0700</pubDate><title>Mailbox Peak</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>At some point Facebook decided to convert everyone&rsquo;s profile information like Favorite Movies or Interests from free-form text to lists of Facebook pages. Now my profile doesn&rsquo;t say I like the TV show Heroes, but instead says I like the TV show Official HEROES Page. Terrible.</p><p>When they switched, they automatically matched up your profile&rsquo;s text with existing pages and converted it for you. Unfortunately, the exact meaning of the text can be lost. For example, under Interests, I put Girls (in a dating sense), but if you go to the Girls page, it shows two adorable young girls, no more than eight years old. Great, now I&rsquo;m a pedophile.</p><p>Thank you, Facebook.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-06-27:/2010/06/27/facebook-changed-my-profile/</guid><link>https://willfaught.com/2010/06/27/facebook-changed-my-profile/</link><atom:link href="https://willfaught.com/2010/06/27/facebook-changed-my-profile/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 27 Jun 2010 08:43:22 -0700</pubDate><title>Facebook Changed My Profile</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>On one hand, my smartphone has a touch screen and fits in my pocket, and on the other, my laptop has a physical keyboard and a large screen. Apple&rsquo;s iPad brings together the strengths of both, except for the superior typing provided by laptops. Somewhere between these two lies Apple&rsquo;s iPad, which provides the immediacy, simplicity, and tactile interaction of a smartphone, and the size, complexity, and greater expressiveness of a laptop. With it, I can graze the Internet with little thought or preparation. Little tasks now take little effort. The immediacy and depth of apps and the powerful feeling of touch interaction is compelling and delightful. It enables a whole class of computer interactions that I wasn&rsquo;t using my laptop for because it was too inconvenient. It&rsquo;s great for consumption, like movies, music, books, and the Web. It&rsquo;s also great for certain kinds of creation, like painting and probably other typical mouse-driven things. I think it will completely replace my laptop on plane trips, in coffee shops, on the couch, and the like, which narrows my laptop&rsquo;s usefulness quite a bit. It&rsquo;s hard to quantify the value of these things, and if you compare the iPad to a laptop, it&rsquo;s going to lose in terms of features, independence, and typing. You can get by with a laptop cheaper than the iPad, and for that reason the iPad is a convenience, not a necessity. It delivers a subset of the laptop, but it opens new doors for how we use computers. It&rsquo;s just one of those things that you have to see and feel to believe.</p><p>I&rsquo;ve had my iPad for almost a week. It arrived packaged in the usual delightful Apple packaging that oozes style and elegance. It was a pleasure to unwrap and to hold for the first time. It feels good in your hands: solid, glossy, curved, and beveled. But it feels a little too heavy if you hold it in one hand for a couple of minutes. The screen is bright, sharp, and responsive, and interprets my finger touches and motions very accurately. It starts up and shuts down quickly, just like the iPhone, and opens onto a beautiful interface, like the iPhone. The operating system is practically the same, except for different settings that reflect the different hardware, and also revised built-in apps by Apple that take full advantage of the extra screen space, like Safari and Mail. Taking more into account user&rsquo;s inclinations to use the device in both orientations, most programs adapt to the device&rsquo;s orientation and display more or fewer things, or the same things in a different way, to best fit the orientation. Built-in apps for the iPhone, like weather and calculator, are strangely missing and are missed. I can only assume this was because they didn&rsquo;t have time to port them all, so they left out some. (It would be embarrassing to include jumbo-size versions of the iPhone counterparts and not take advantage of the iPad&rsquo;s larger size.) The videos part of the iPod app has been inexplicably pulled out into a separate Videos app. You still can&rsquo;t manage your podcasts on the device alone&ndash;deleting old episodes, downloading new ones&ndash;like you can with apps themselves. The interface for managing which apps you want on just the iPad is straightforward and natural, and iTunes nicely distinguishes between iPhone and iPad apps.</p><p>When I first used my iPad, I already had in mind a slew of apps I wanted to install, but the App Store kicks you out to the home screen when you install an app. You have to reopen the App Store and reload everything to search for the next app.</p><p>There are a few iPad app gems out there, among them iBooks, Tweetdeck, Dictionary, ABC Player, NYT Editor&rsquo;s Choice, Marvel Comics, and Bloomberg. Others have compelling content, but are terribly designed. I&rsquo;m afraid that the extra screen space has expanded software makers&rsquo; ability to screw up a good thing. With the iPhone, the screen is small, and a lot of apps follow Apple&rsquo;s design because there aren&rsquo;t a lot of choices for how to present things. With the iPad, I&rsquo;ve seen apps have controls (buttons, text boxes, etc.) with custom looks and feels that are confusing and don&rsquo;t work well. Apple has opened the floodgates to stylistic experimentation and differentiation that we see on PCs (especially Windows), and now we&rsquo;re stuck again with interface design being more of an art form than a straightforward process, and hence more frequently done wrong. The Netflix app jumps to mind here. If it weren&rsquo;t against the Apple Developer terms, I&rsquo;d say it was a direct, mechanical port (somehow) of its web site interface to an iPad one. It&rsquo;s slow, it hangs, it thinks I&rsquo;m clicking an item when I scroll my movie queue, and the horizontal four-at-a-time browsing controls don&rsquo;t follow my finger motions correctly. It&rsquo;s god awful. But it&rsquo;s a damn good video player, and it draws from a respectable pool of content, so at least it delivers what it promises.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-05-30:/2010/05/30/i-got-an-ipad/</guid><link>https://willfaught.com/2010/05/30/i-got-an-ipad/</link><atom:link href="https://willfaught.com/2010/05/30/i-got-an-ipad/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 May 2010 16:32:50 -0700</pubDate><title>I Got An IPad</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m rereading it again. Ah, so good.</p><blockquote><p>In fact, the squat franchise itself looks like nothing more than a low-slung base for the great aramid fiber pillars that thrust the billboard up into the trademark firmament. Marca Registrada, baby.</p></blockquote><blockquote><p>When Hiro first saw this place, ten years ago, the monorail hadn&rsquo;t been written yet; he and his buddies had to write car and motocycle software in order to get around. They would take their software out and race it in the black desert of the electronic night.</p></blockquote><blockquote><p>It&rsquo;s like, if you—people of a certain age—would make some effort to just stay in touch with sort of basic, modern-day events, then your kids wouldn&rsquo;t have to take these drastic measures.</p></blockquote><blockquote><p>After that—after Hiro gets onto his motorcycle, and the New South Africans get into their all-terrain pickups, and The Enforcers get into their slick black Enforcer mobiles, and they all go screaming out onto the highway—after that it&rsquo;s just a chase scene.</p></blockquote><blockquote><p>Jack the sound barrier. Bring the noise.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2010-05-08:/2010/05/08/my-favorite-snow-crash-quotations/</guid><link>https://willfaught.com/2010/05/08/my-favorite-snow-crash-quotations/</link><atom:link href="https://willfaught.com/2010/05/08/my-favorite-snow-crash-quotations/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 08 May 2010 02:47:35 -0700</pubDate><title>My Favorite Snow Crash Quotations</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I signed up for a LinkedIn account a while ago. I can&rsquo;t remember how it happened. I know it wasn&rsquo;t because all the cool kids were doing it. Maybe I did it just in case it turned into something big, and then I&rsquo;d already be registered. Anyways, I never use it, but I periodically get &lsquo;acquaintance&rsquo; requests (there&rsquo;s nothing fun or friendly about them; the lame default message that everyone uses is something like &ldquo;I would like to establish a connection with you&rdquo;) from people I know in person, and occasionally from people I&rsquo;ve never met. It&rsquo;s a chore. Sign in, accept, sign out. I don&rsquo;t look back. I don&rsquo;t know why I do it. I don&rsquo;t know why other people do it, either. I never hear anyone talk about being on LinkedIn. It&rsquo;s such a boring place to be. &lsquo;Connecting&rsquo; with connections just to network is so uninteresting. I&rsquo;m pretty sure my profile doesn&rsquo;t have any of my work information past my second or third year of college. I guess the point is that LinkedIn should just die and we can all stop feeling obligated to maintain our presence there. Good riddance.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-12-18:/2009/12/18/linkedin/</guid><link>https://willfaught.com/2009/12/18/linkedin/</link><atom:link href="https://willfaught.com/2009/12/18/linkedin/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 18 Dec 2009 00:01:43 -0800</pubDate><title>LinkedIn</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve sometimes observed the following meanings for religious sayings:</p><ul><li>It&rsquo;s god&rsquo;s will: I think it&rsquo;s fine; I want it to happen; leave things alone.</li><li>Amen: I agree; I&rsquo;m right.</li></ul><p>Apparently, when you have a personal thought, you can shroud it in divine invocations to make it sound more legitimate and unquestionable. It&rsquo;s really quite fascinating when you consider the complexity of what&rsquo;s being communicated and how it&rsquo;s being interpreted.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-09-29:/2009/09/29/translations/</guid><link>https://willfaught.com/2009/09/29/translations/</link><atom:link href="https://willfaught.com/2009/09/29/translations/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 29 Sep 2009 23:17:00 -0700</pubDate><title>Translations</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Just saw District 9 with Brian and Shay. It was great to see a sci-fi movie in the theaters (and I don&rsquo;t mean the kind of sci-fi that Transformers is). Although there wasn&rsquo;t much science in the movie. Still, fun to see aliens, and the parallels between how the humans treat the aliens and South Africa&rsquo;s racial history were interesting to see. There were a few plot holes, I think, but it was still fun to watch. I got creeped out by the mutation and mutilation scenes. Ugh. I was hoping they&rsquo;d show the guy being turned back again at the end, but oh well. The main character (I don&rsquo;t even remember his name, it was a foreign one) reminded me of the British TV show The Office&rsquo;s version of Michael Scott before he was told there was a way to save himself. All in all, good stuff. I&rsquo;d see it again sometime.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-09-26:/2009/09/26/district-9/</guid><link>https://willfaught.com/2009/09/26/district-9/</link><atom:link href="https://willfaught.com/2009/09/26/district-9/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 26 Sep 2009 23:10:00 -0700</pubDate><title>District 9</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I figured that it would be cheaper to fly from the SEA airport in Seattle to SFO in San Francisco than to SMF in Sacramento, since there would probably be more flights on that route. I just checked and found to my surprise that SFO tickets are significantly more expensive. Maybe there&rsquo;s more demand? Interesting.</p><p>I wish one of these flight booking web sites would create a feature that would find the best ticket deal for me for a given holiday. I could just say, &ldquo;I want to fly from Seattle to Sacramento for Christmas and be there about a week,&rdquo; and it would alert me when it found the best deal. Super sweet. <a href=https://bing.com rel=external>Bing</a>
has some new tools that help you figure that stuff out yourself, but it doesn&rsquo;t do it for you.</p><p>I just bought tickets for my flights home for Thanksgiving and Christmas. For the first time, I bought tickets directly from the airline instead of through sites like Priceline or Travelocity. The last time I bought through one of those sites I got sick just before the flight and had to eat the cost because the tickets were non-refundable. Never again.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-09-24:/2009/09/24/bought-my-holiday-flight-tickets/</guid><link>https://willfaught.com/2009/09/24/bought-my-holiday-flight-tickets/</link><atom:link href="https://willfaught.com/2009/09/24/bought-my-holiday-flight-tickets/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 24 Sep 2009 23:33:00 -0700</pubDate><title>Bought My Holiday Flight Tickets</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I just know Herbal Essences is scamming me. The shampoo bottle empties faster than the conditioner bottle, but both are the same size. So I get more of the same shampoo, but then the conditioner runs out, so then I get more of the same conditioner. Around and around. Curse you, evil cleansing company! Must you torment me so?&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2009-08-31:/2009/08/31/around-and-around/</guid><link>https://willfaught.com/2009/08/31/around-and-around/</link><atom:link href="https://willfaught.com/2009/08/31/around-and-around/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 31 Aug 2009 21:02:00 -0700</pubDate><title>Around And Around</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>There was a gunshot about a block from my building after midnight about a week ago. A few minutes afterward, several police cruisers arrived with lights flashing. It seemed to happen in front of some kind of bar or restaurant that I could see from my bedroom window.</p><p>What the hell&rsquo;s going on? Chill out, people!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-08-30:/2009/08/30/bang/</guid><link>https://willfaught.com/2009/08/30/bang/</link><atom:link href="https://willfaught.com/2009/08/30/bang/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Aug 2009 15:02:00 -0700</pubDate><title>Bang</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I discovered a web site that&rsquo;s great for learning how to shop for products I&rsquo;ve never bought before in a short period of time. When I shop, I want to buy something I know will satisfy my needs for the foreseeable future. I don&rsquo;t want to have to buy another one because it broke or a newer one came out that I want instead. I want to do the comparison shopping and deal seeking just once.</p><p>This web site helps me do that. It covers a variety of products, from electronics to kitchen. For each kind of product, they tell you what to look for, how to make comparisons, and then list several products they&rsquo;ve concluded to be the best in several categories according to a variety of sources like Consumer Reports and the Amazon.com customer reviews. It&rsquo;s a great way to get to the bottom of it all and come out feeling like you&rsquo;re making the right choice. I&rsquo;ve used it for buying my television, my mattress, and my paper shredder.</p><p>For example, here are my notes from this web site about down comforters:</p><ul><li>Egyptian cotton and white goose down. Feathers and synthetic are bad.</li><li>Fill power is the space occupied by one ounce of down. It provides warmth, insulation, loft, and overall quality. More is better. High quality: 700+. Excellent quality: 600-700. Good quality: 525-600.</li><li>Thread count determines softness and durability. Higher is better. A high thread count keeps fill in and impurities out. Examples: 325, 400, 600, and 700.</li><li>Baffle box construction (&ldquo;baffled&rdquo;) has vertical cloth walls sewn in to spread out the fill. Not all have it, so check.</li><li>The warranty can indicate its quality. It can range from one year to lifetime.</li><li>Must get a duvet. It should be 100% cotton and have a high thread count.</li><li>The size should be specific. For example, &ldquo;Queen&rdquo;, not &ldquo;Full/Queen&rdquo;.</li><li>Measure your bed to ensure it will fit properly. It should drape down the sides of the bed.</li><li>Gusset edges surround the outer edge and maximize loft.</li></ul><p>I have a problem with my current down comforter. The down pokes through the comforter and duvet, and looks like a mess on the duvet cover. After reading this web site, I learned this was because the thread count of my comforter and duvet are too low. Who knew? Not me.</p><p>The web site is <a href=https://www.consumersearch.com/ rel=external>consumersearch.com</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-08-23:/2009/08/23/fleeting-expertise/</guid><link>https://willfaught.com/2009/08/23/fleeting-expertise/</link><atom:link href="https://willfaught.com/2009/08/23/fleeting-expertise/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 23 Aug 2009 18:20:00 -0700</pubDate><title>Fleeting Expertise</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I met my friend Chris from work at a piano bar in the Pioneer Square neighborhood of Seattle a few weeks ago. It was around 9 or 10 p.m. and I had never been to that part of town at night before. Let me tell you, that is one shady place. There are a lot of homeless people there. It doesn&rsquo;t feel comfortable to linger outside.</p><p>I parked my car a few blocks from the bar. I crossed a street, and saw an ATM nearby. I needed more cash, but it didn&rsquo;t seem safe to use it. I debated whether to risk it. No one was close by at the moment. I waited another minute, then hesitantly approached the ATM. I noticed out of the corner of my eye someone crossing the street as I had and coming toward me. I slowed and diverted a little from the ATM, pretending that I had just been meandering. It was a man a little older than me. He was muscular, tattooed, and he wore a white wife beater. He approached me and rambled about getting out of jail and trying to get somewhere and needing money. I was alarmed and wanted extricate myself immediately, but he had already been talking for half a minute, and I couldn&rsquo;t figure out how to disengage him. Finally, out of desperation, I gave in and handed him my only twenty-dollar bill. The relief was almost palpable as I walked away. Fortunately, there was an ATM at the bar.</p><p>While I was listening to him, I wondered whether it was true, and I realized that I had no way to verify his story, and that I didn&rsquo;t know whether prisoners were given some means of using transportation when discharged. If he was honest, he sure picked the worst possible time and place to ask someone for help. Since so many alarm bells were going off in my head, I should have followed my instincts and walked away. Now I know that if I stop walking in those areas, I open myself up to experiences like this one. I want to be kind to strangers, but not when I feel uncomfortable about it, and not when I suspect I&rsquo;m being scammed.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-08-09:/2009/08/09/scammed/</guid><link>https://willfaught.com/2009/08/09/scammed/</link><atom:link href="https://willfaught.com/2009/08/09/scammed/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 09 Aug 2009 12:42:00 -0700</pubDate><title>Scammed</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It was 105 degrees today in Seattle! It&rsquo;s almost midnight, and it&rsquo;s eighty-three degrees now. No one in Washington has air conditioning. These people are completely unprepared for the elements. This place is known for a single element—rain—and people don&rsquo;t use umbrellas. I&rsquo;m sitting on my bed, under my only ceiling fan, with my only desk fan two feet away and pointed straight at me. I meant to actually do something with my time tonight, but it was just too hot. Better to sip juice and watch a movie under a fan. Hamburgers weren&rsquo;t the best hot weather food, but that meat was on the verge of going bad. I&rsquo;ve observed several times that a chill runs down my back and I get goose-bumps when I listen to Stairway To Heaven by Led Zeppelin. Maybe I can keep that going.</p><p>I learned today that &rsquo;epitamy&rsquo; isn&rsquo;t a word, and that &rsquo;epitome&rsquo; isn&rsquo;t pronounced how I thought it was. I didn&rsquo;t learn until a friend corrected me at college that &lsquo;inventory&rsquo; is pronounced <em><strong>I</strong></em>nventory, not inv<em><strong>E</strong></em>ntory.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-07-29:/2009/07/29/keeping-cool/</guid><link>https://willfaught.com/2009/07/29/keeping-cool/</link><atom:link href="https://willfaught.com/2009/07/29/keeping-cool/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 29 Jul 2009 16:49:00 -0700</pubDate><title>Keeping Cool</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I just realized my shirt was inside out all day today. The tag is plain as day, and highlighted with a colored border. Kind of like a target, so people could conclude from a distance that I&rsquo;m an idiot. The seams were also inside out. I don&rsquo;t know how I could miss all that. Come on, Will!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-07-27:/2009/07/27/inside-out/</guid><link>https://willfaught.com/2009/07/27/inside-out/</link><atom:link href="https://willfaught.com/2009/07/27/inside-out/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Jul 2009 16:12:00 -0700</pubDate><title>Inside Out</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I went on a vacation in Nicaragua in May with my friend Heather. I began writing about it a while ago, but then moved on to other things. I&rsquo;ll post what I have, but won&rsquo;t write more.</p><p>Nicaragua, in case you don&rsquo;t know, is in Central America, south of Honduras and north of Costa Rica, sandwiched between the Pacific and the Caribbean. Heather invited me to go with her about a month and a half before we went. I was excited to go because it would be my last chance to do something with her before she moved to Connecticut for law school. (Apparently I never learned how to spell Connecticut, because I had no idea it had a &lsquo;c&rsquo; in the middle. Connect-i-cut? Really? God, that&rsquo;s awful. English strikes again.) I gathered she chose Nicaragua because it best fit her schedule, budget, and interests.</p><p>I had never traveled to a country like Nicaragua before, where health and safety issues were so different from the U.S. I did my best to research everything I could think of beforehand: passports, vaccinations, medicine, insurance, crime, health and safety tips, weather, climate, insects, etc. After reading the State Department&rsquo;s report on crime and rape, political unrest, and medical facilities, and the CDC&rsquo;s report on diseases, I was very concerned about perishing there. Of course, they were only discussing the bad things to be aware of, and didn&rsquo;t put it in context, so it was hard to keep things in perspective. For example, it turns out that despite occurrences of tourists being robbed, Nicaragua has less crime than the U.S. Most of it boiled down to exercising common sense, watching what you eat and drink, and being cognizant of your surroundings. And getting lots of injections before you leave. I had to get vaccinations for tetanus, typhoid, Hepatitis A, and malaria (which I&rsquo;m still taking).</p><p>We started out planning to spend two days on the Corn Islands, small tropical islands in the Caribbean, to hit the beach and soak up the rays, then spend the other four days in Granada, an old city on the shore of a large lake on the Pacific side of the mainland. We took a taxi from the airport on Big Corn Island to our hotel, which was situated on a small beach and run by a friendly Italian couple, and we passed through several neighborhoods along the way. The sky was an overcast gray. Most buildings were made of metal sheets, windows were barred, and properties were partitioned by chain link fences. It was the weekend, so a lot of people were near the homes we passed, standing or sitting or doing things on their porches and yards. We passed a game of baseball being played by a group of men on a small, uneven dirt field. To reach our hotel, our taxi had to cross part of a beach littered with trash. Our room was plain, constructed of local stone, concrete, and paint, and decorated with small beach shells. The shower stall was hideous, constructed by hand with the aforementioned materials, and only had cold water from a nearby water tank tower.</p><p>Heather and I were shocked. I had known what the weather was going to be (May is the start of the wet season there). I had seen pictures of our bedroom and bathroom, and I had known there wouldn&rsquo;t be hot water. But I (and the Internet) had pictured pristine white beaches and lush jungle, disturbed only by the occasional hotel guest. Not so. People lived there. The lot our hotel was on was one of many that ran along a dirt road, and had a chain link fence around it. Houses lined the beach in the direction opposite that from which our taxi had come. Their pets had defecated in the sand and rocks at various points on the beach. You didn&rsquo;t want to walk barefoot, even if you weren&rsquo;t already worried about parasites in the sand. The beach was scattered with leaf and wood detritus. I think Heather had a harder time adjusting to these things than I did. We sat in the chairs in our room for a few minutes to let it all sink in and figure out how we felt about things.</p><p>We took a walk along the beach, and around a bend, the beach grew wider, flatter, and cleaner, and the water took on more of that tropical light blue that looks so inviting. And then things didn&rsquo;t seem so bad. When we got back to our room, we decided to see how things went the next day, Sunday. If we didn&rsquo;t want to stay, we&rsquo;d try to leave early. The weather stayed overcast the next day, and since that wasn&rsquo;t good beach weather, we decided to depart the following day, Monday, for Granada. We spent the rest of Sunday lounging on the beach reading our books and watching the surf a couple dozen feet in front of us. By this point, I had discovered that Nicaragua had the good Coca Cola (real sugar), so I was sucking them down as much as possible.</p><p>We flew back to the mainland on Monday, and spent the rest of the week sightseeing in Granada and the surrounding area. Parts of Granada are quite lovely, especially near the central park. The country as a whole is poor, which can mar an otherwise beautiful landscape. But there are many beautiful places well worth visiting. I would go back again someday.</p><p><a href=https://faught.shutterfly.com/383 rel=external>Pictures</a>
, <a href=https://faught.shutterfly.com/592 rel=external>more pictures</a>
, and <a href=https://faught.shutterfly.com/600 rel=external>the rest of the pictures</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-07-25:/2009/07/25/nicaragua/</guid><link>https://willfaught.com/2009/07/25/nicaragua/</link><atom:link href="https://willfaught.com/2009/07/25/nicaragua/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 25 Jul 2009 17:53:00 -0700</pubDate><title>Nicaragua</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>About a month ago, I participated in six sessions with a personal trainer at a gym in Bellevue. It had been a long time since I had seriously exercised, and so I had didn&rsquo;t have good running shoes or workout clothes. My trainer recommended I go to an athletic store in the Green Lake neighborhood to get some shoes. I found some great ones there, and while I was there I decided to look for some new exercise shorts.</p><p>I didn&rsquo;t like the shorts I currently had because they were too loose, and would fall embarrassingly low when I would do leg exercises lying on my back. Think of it as the equivalent of a sidewalk vent blowing a woman&rsquo;s skirt up. Although it probably looks better for the woman than it does for me. So I perused the shorts they had on display and found a pair that looked good to me. I tried them on in the dressing booth, and they seemed to fit a little snug, but otherwise looked fine. I had noticed that the shorts my trainer wore had a second, inner layer that clung closely to his legs and wouldn&rsquo;t move at any angle, and these shorts seemed to have the same kind of layer. I bought them and wore them for my next training session.</p><p>Again, they felt a little snug—too snug. I got through the workout fine, but afterward, when I was taking them off, I looked closer, and noticed the inner layer closely resembled the shape of a bikini bottom. It dawned on me then that I had bought women&rsquo;s shorts, which explained why they had been so snug. Fortunately, this revelation occurred in private, and for all I know, neither my trainer, nor anyone else, had noticed.</p><p>What&rsquo;s strange is that since that time, I&rsquo;ve dreamed about those women&rsquo;s shorts twice. I don&rsquo;t remember what the dreams were about. I&rsquo;m sure I wasn&rsquo;t wearing them. They were just there, as unimportant things encountered, and then discarded. I wonder whether I&rsquo;ll dream about them again, and what it will be about.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-07-25:/2009/07/25/snug/</guid><link>https://willfaught.com/2009/07/25/snug/</link><atom:link href="https://willfaught.com/2009/07/25/snug/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 25 Jul 2009 17:06:00 -0700</pubDate><title>Snug</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I just finished watching the extended versions of the Lord Of The Rings films. I&rsquo;ve had these versions for several years now, and I thought I&rsquo;d seen them all, but watching them now, so many of the extended scenes felt new to me. Strange. I can&rsquo;t decide if it&rsquo;s because I forgot them, or because I hadn&rsquo;t watched them yet, which would be quite an oversight for a fan like me. I&rsquo;ve got to read those books again.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-07-25:/2009/07/25/lotr-extended/</guid><link>https://willfaught.com/2009/07/25/lotr-extended/</link><atom:link href="https://willfaught.com/2009/07/25/lotr-extended/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 25 Jul 2009 16:32:00 -0700</pubDate><title>LOTR Extended</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Apple redeemed itself with its awesome store in Bellevue. My MacBook&amp;rsquo;s hard drive went bad, and I took it into the store to see about getting it repaired. It turns out the hard drive model was known to have problems, and was covered under a special warranty. The tech at the Genius Bar replaced it for me for free in about ten minutes, and that was that. Nice.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2009-07-12:/2009/07/12/redeemed/</guid><link>https://willfaught.com/2009/07/12/redeemed/</link><atom:link href="https://willfaught.com/2009/07/12/redeemed/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 12 Jul 2009 13:18:00 -0700</pubDate><title>Redeemed</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I sent the following to <a href=mailto:sjobs@apple.com rel=external>sjobs@apple.com</a>
:</p><p>Mr. Jobs,</p><p>I am dissatisfied with my experience of activating my iPhone 3GS. Activation was delayed for four days. Then, iTunes gave me a vague error saying my phone couldn&rsquo;t be activated without explaining why. Then, I received an e-mail with a phone number to call. I tried calling it numerous times without being connected to a person in a reasonable amount of time. I once waited on hold for about twenty-five minutes. Then, I finally connected with someone, only to be told there was an existing balance on my AT&amp;T account that needed to be paid off first, the one thing that iTunes needed to explain to me, but didn&rsquo;t. I paid off the balance, and called the phone number again today, but the line was dead!</p><p>I tried looking for a phone number to call on the Apple web site, but there is no phone number for iPhone activation trouble. I finally clicked the refund link in the Apple e-mail, and saw a phone number there for general problems. After finally connecting with a human being on this number, they had to put me on hold to figure out how to connect me to someone who could figure this out. The next person didn&rsquo;t have any of the information that I had entered into iTunes, and I had to recollect my family&rsquo;s AT&amp;T account information—again—in order to activate the phone, as well as dig into the phone&rsquo;s settings and pop out the SIM card to read off various numbers. In all, it took <em>nine days</em> to activate my iPhone 3GS.</p><p>This experience was frustrating and piss-poor. After owning the first iPhone for two years, and after two iPhone releases, I thought Apple would be capable of working with a partner like AT&amp;T to deliver a quality experience. I am disappointed, and I will not expect the same quality experience for future iPhones that I did for this one.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-06-26:/2009/06/26/dear-steve/</guid><link>https://willfaught.com/2009/06/26/dear-steve/</link><atom:link href="https://willfaught.com/2009/06/26/dear-steve/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 26 Jun 2009 05:40:00 -0700</pubDate><title>Dear Steve</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I took my car into a Toyota dealership a couple weeks ago to have my left headlight&rsquo;s wiring replaced and my AC recharged. In their inspection, they found many other things that needed fixing, some large, some small, and quoted me a $4,000 price to do it all. I&rsquo;ve never dealt with car repairs before (having a father who&rsquo;s the best mechanic around), so I called my dad to see if they were overcharging. It turns out they were overselling me by as much as 200-300% for some things, so I took my car to a small repair shop in Seattle to have the major things repaired for more reasonable prices.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-06-22:/2009/06/22/johnson-rod-repair/</guid><link>https://willfaught.com/2009/06/22/johnson-rod-repair/</link><atom:link href="https://willfaught.com/2009/06/22/johnson-rod-repair/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 22 Jun 2009 14:13:00 -0700</pubDate><title>Johnson Rod Repair</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My sleep schedule was shifted back by about three hours for a couple weeks following my Nicaragua trip. I woke up wide awake at about 6 a.m. and I felt sleepy at about 11 p.m. I&rsquo;m now back to my regular night owl hours. I&rsquo;ve traveled to other time zones before, but this was unprecedented. I think my trip caused it, but I don&rsquo;t know how.</p><p>I was amazed at how easy it was to get out of bed when I woke up wide awake. It&rsquo;s usually very difficult for me. It&rsquo;s no wonder morning people—people who wake up wide awake—can do it so easily. There&rsquo;s nothing to it. Late risers should be lauded for the hardship they face at the crack of every dawn. I hereby retract all guilt and apologies for rising late over the years. Morning people: be content that you have it easy, and leave us late risers in peace.</p><p>It&rsquo;s not breakfast that&rsquo;s the most important meal of the day—it&rsquo;s the first.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-06-10:/2009/06/10/wake-up/</guid><link>https://willfaught.com/2009/06/10/wake-up/</link><atom:link href="https://willfaught.com/2009/06/10/wake-up/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 10 Jun 2009 17:29:00 -0700</pubDate><title>Wake Up</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I really like the song &ldquo;Poker Face&rdquo; by Lady Gaga. The sound grew on me, and now I love it. I especially enjoy the lyrics. The wording is colorful and rich and paints vivid pictures using few words. It&rsquo;s delightfully dark. Here&rsquo;s an excerpt:</p><blockquote><p>I want to hold them like they do in Texas plays
Fold them, let them hit me, raise it, baby, stay with me (I love it)
Luck and intuition play the cards with spades to start
And after he&rsquo;s been hooked I&rsquo;ll play the one that&rsquo;s on his heart</p></blockquote><p>I love the way her voice drops low for &ldquo;I love it.&rdquo; The delivery is a driving, robotic rhythm that reinforces her emotional distance and subtle perversion. It&rsquo;s fantastic. You can listen to it <a href="https://www.youtube.com/watch?v=cQ5uCfwK6qw" rel=external>here</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-06-01:/2009/06/01/poker-face/</guid><link>https://willfaught.com/2009/06/01/poker-face/</link><atom:link href="https://willfaught.com/2009/06/01/poker-face/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 01 Jun 2009 18:15:00 -0700</pubDate><title>Poker Face</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>What&rsquo;s the answer to the ultimate question of life, the universe, and everything? <a href="https://www.google.com/search?q=what+is+the+answer+to+life,+the+universe,+and+everything" rel=external>Google knows.</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-06-01:/2009/06/01/the-answer/</guid><link>https://willfaught.com/2009/06/01/the-answer/</link><atom:link href="https://willfaught.com/2009/06/01/the-answer/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 01 Jun 2009 07:13:00 -0700</pubDate><title>The Answer</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The cleverest title I&rsquo;ve ever seen was &ldquo;My Title Is Clever.&rdquo; I remember thinking, &ldquo;Huh, that&rsquo;s clever,&rdquo; and then, &ldquo;Whoa!&rdquo;</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-05-31:/2009/05/31/my-title-is-clever/</guid><link>https://willfaught.com/2009/05/31/my-title-is-clever/</link><atom:link href="https://willfaught.com/2009/05/31/my-title-is-clever/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 31 May 2009 15:39:00 -0700</pubDate><title>My Title Is Clever</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My place in Microsoft is within the Developer Division (DevDiv), which makes tools for programmers. Among various things, DevDiv produces a free set of tools called the .NET Framework, and the .NET Framework provides a technology called XAML (pronounced <em>zammel</em>). XAML is a software language that allows programmers to write down complex operations in simple text, and then it performs those operations for them. It&rsquo;s what I work on.</p><p>My division recently released a preview version of the next planned release of our Visual Studio product. My team has contributed a lot of changes to XAML that will be part of this next release, and two people I work closely with—Rob Relyea and Mike Shim—were <a href=https://channel9.msdn.com/shows/Continuum/XAMLinNET4/ rel=external>recently interviewed</a>
about the work we&rsquo;ve done. I thought it might be interesting to get a glimpse of what I work on and with whom I work.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-05-28:/2009/05/28/xaml/</guid><link>https://willfaught.com/2009/05/28/xaml/</link><atom:link href="https://willfaught.com/2009/05/28/xaml/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 28 May 2009 04:52:00 -0700</pubDate><title>XAML</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s amusing that Republican politicians throw around the word &ldquo;liberal&rdquo; like it&rsquo;s a dirty word, an unthinkable state of affairs, rather than the counterpart to their own extremism on the opposite end of the political spectrum. As if the word itself makes their argument for them. They&rsquo;re just so scandalized by it. I never hear the word &ldquo;conservative&rdquo; used this way.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-05-26:/2009/05/26/liberal/</guid><link>https://willfaught.com/2009/05/26/liberal/</link><atom:link href="https://willfaught.com/2009/05/26/liberal/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 May 2009 07:03:00 -0700</pubDate><title>Liberal</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I went to the Mariners vs. Giants game on Friday. I don&rsquo;t usually enjoy baseball games in person or on TV, but a friend invited me, and I thought I&rsquo;d give it another shot.</p><p>The innings went surprisingly fast. I missed a lot of the game because I was chatting or drinking my beer. There was a funny Giants fan wearing a bandana a few seats away from us who stood periodically to silently taunt the Mariners fans behind him. The big screen fixed for a whole minute on a man who was a really good dancer. He did the best he could with the three inches of foot room they give you, and even danced to the stair railing for a dance prop. A lot of short music clips would play in between batters. They would get people clapping, then cut off as the batter stepped up to the plate.</p><p>I couldn&rsquo;t believe that they interrupted the entire baseball game to show the last few seconds of a close basketball game happening live elsewhere. It was an exciting ending, though. I didn&rsquo;t catch who was playing, but it was tied, then one team scored two points, then, with one second left, the other team scored three points!</p><p>The score was 1 to 1 for most of the game, but the pieces fell into place, and at the bottom of the ninth with the bases loaded and two outs, the Mariners put Ken Griffey, Jr. to bat. The crowd got really excited and everyone stood up. It was a perfect set up for a grand slam to win the game, and I think everyone was hoping for it. He hit one pretty far into the outfield, but sadly it was caught. The game went downhill from there, although the Mariners did win by a few points.</p><p>I was really tired by the end. I&rsquo;m still on vacation time.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-05-24:/2009/05/24/mariners-game/</guid><link>https://willfaught.com/2009/05/24/mariners-game/</link><atom:link href="https://willfaught.com/2009/05/24/mariners-game/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 24 May 2009 03:20:00 -0700</pubDate><title>Mariners Game</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was driving in slow traffic in December when a driver wasn&rsquo;t watching where he was going, and his car hit the car in front of him, and it hit my car. My neck was jerked back from the impact, from which I have suffered and continue to suffer whiplash. I was in a similar accident a few years ago in San Luis Obispo, where a driver hit me from behind at a stop light on a rainy night. So I&rsquo;ve now twice had to deal with car damage and an injured neck.</p><p>Dealing with car damage is pretty straightforward, and it wasn&rsquo;t difficult to deal with this time. (It can be difficult if your car is totaled and the insurance company won&rsquo;t give you a fair offer.) However, the medical treatment is a pain in the neck (pun definitely intended). See, the insurance companies have figured out that if they just call you periodically and tell you (or even just suggest) that you should have finished treatment by now, they can make you feel guilty, even if only subconsciously, which leads to shorter treatments on average, because people stop treatment before they&rsquo;re ready.</p><p>From day one, my contact at Progressive (the other driver&rsquo;s insurance company, which has admitted it is at fault and thus is liable for paying my settlement) has been telling me, &ldquo;Well, given the type of accident, your age, and how long it took you to seek treatment after the accident, it just doesn&rsquo;t look like you warrant this much treatment.&rdquo; Again and again. See how they try to make you feel guilty? Hm, well, I did seek treatment five weeks after the accident, instead of right afterward, so maybe I don&rsquo;t deserve this treatment after all. A couple weeks ago he offered me a total settlement of a hundred bucks to cover the initial chiropractic appointment, and he knows I&rsquo;ve already racked up over $5,000 in treatment billings over about five months. Screw this guy.</p><p>So I got a lawyer. He won&rsquo;t get paid unless I win a settlement, and nothing gets hashed out until I finish treating. I met with him a couple weeks ago, and it was really simple to get started with him. I just signed a few forms, and he took care of the rest. He mailed me copies the other day, and the letter he sent to Progressive made me beam:</p><p>Please be advised that our office will only accept a settlement draft/check for the total amount of the settlement. Named on said draft or check should be our client&rsquo;s name as above and the name of our firm, The Blank Firm. Please be advised that under Informal Opinion 1736, our office will not sign a Hold Harmless Agreement.</p><p>All authorizations, medical or otherwise, are revoked. Feel free to contact our client directly concerning property damage issues, though all other communication with our client shall be directed through this office, except for orignal process.</p><p>Please be further advised you shall not communicate with my client&rsquo;s insurance carrier other than property damage issues and PIP paid.</p><p>Finally, someone on my side!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-05-05:/2009/05/05/talk-to-my-lawyer/</guid><link>https://willfaught.com/2009/05/05/talk-to-my-lawyer/</link><atom:link href="https://willfaught.com/2009/05/05/talk-to-my-lawyer/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 05 May 2009 17:07:00 -0700</pubDate><title>Talk To My Lawyer</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I had never tried to make a smart playlist in iTunes until I recently moved everything to my new iMac. I wanted to make a playlist of unrated songs, but it wasn&rsquo;t clear how to make a condition saying the rating must be zero stars. The iTunes help was useless, and so was everything I found online. &ldquo;Just make a condition saying the rating must equal zero stars. Easy.&rdquo; Not so! I don&rsquo;t know if this changed recently, but you can&rsquo;t specify a rating of zero stars. I forgot about it after a half hour of searching. I took a look at it again just now and saw that you can make a condition saying the rating must be <em>less than</em> one star, which is equivalent to what I wanted. As a programmer, I feel ashamed for not seeing it sooner. Feel my shame, Apple!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-04-22:/2009/04/22/itunes-smart-playlist-for-unrated-songs/</guid><link>https://willfaught.com/2009/04/22/itunes-smart-playlist-for-unrated-songs/</link><atom:link href="https://willfaught.com/2009/04/22/itunes-smart-playlist-for-unrated-songs/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 22 Apr 2009 16:43:00 -0700</pubDate><title>ITunes Smart Playlist For Unrated Songs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>During a speech made by President of Iran Mahmoud Ahmadinejad at the United Nations, <a href="https://www.nytimes.com/2009/04/21/world/21geneva.html?scp=4&amp;sq=israel%20racist&amp;st=cse" rel=external>in which he called Israel a racist nation</a>
, several national representatives walked out of the audience in protest. I imagined myself there, and feeling compelled to walk out to symbolize my repudiation of what was being said. However, I&rsquo;d actually want to hear the rest of the speech. Not because I agree with what was said, but you have to admit, it really grabs your attention: a whole country—racist! I&rsquo;d walk out, but then I&rsquo;d listen to the rest in another room. It&rsquo;s silly that I&rsquo;d have to leave when I really wanted to stay. Can&rsquo;t one just sit and listen to crazy things in peace?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-04-22:/2009/04/22/i-would-want-to-stay/</guid><link>https://willfaught.com/2009/04/22/i-would-want-to-stay/</link><atom:link href="https://willfaught.com/2009/04/22/i-would-want-to-stay/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 22 Apr 2009 16:16:00 -0700</pubDate><title>I Would Want To Stay</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<blockquote><p>Dear Mr. Faught,</p><p>Thank you for contacting AARP about our membership solicitations. Please accept our apology for any aggravation these mailings may have caused.  It&rsquo;s my pleasure to honor your request.</p><p>I&rsquo;ve removed your name from our solicitation lists, and regret that mailings prepared before today&rsquo;s date cannot be recalled.  It will take approximately 4-6 weeks for this process to take full effect. If you should receive solicitations after that time, please call us toll-free at 1-888-OUR-AARP (1-888-687-2277) and a Member Service Associate will be happy to assist you. Be sure to have the mailing available when you call, as each notice has specific codes that will help us suppress your name and address more effectively.</p><p>Mr. Faught, I hope this information is helpful.  If I can assist you further, please do not hesitate to contact me.</p><p>Sincerely,</p><p>Jenny</p><p>Member Communications</p></blockquote><hr><blockquote><p>Thank you for your prompt response!</p><p>I would like to know from whom AARP got my contact information.</p></blockquote><hr><blockquote><p>Dear Mr. Faught,</p><p>Thank you for contacting AARP.</p><p>We thought you would like to know that we do not have your information registered in our files.  However, we were able to remove your name and address from our mailing list using the information provided in your previous email message.</p><p>We hope this information is helpful.  If we can assist you further, please do not hesitate to contact us.</p><p>Sincerely,</p><p>Stacy Ann</p><p>Member Communications</p></blockquote><hr><blockquote><p>The last email did not address my question.  I would like to know from whom AARP learned the name and address used to send me mail.  Clearly, it came from a third party, and I would like to know who it was so I can stop doing business with them.</p></blockquote><hr><blockquote><p>Dear Mr. Faught:</p><p>Thank you for contacting AARP. Your concerns are important to us.</p><p>We have forwarded a copy of your message to the appropriate area. They will be better able to address your request.</p><p>A representative will respond to your inquiry in the near future.</p><p>Sincerely,</p><p>Brenda</p><p>Member Communications</p></blockquote><hr><blockquote><p>Hello? My question has not been answered. See below.</p></blockquote><hr><blockquote><p>Dear Mr. Faught:</p><p>Thank you for contacting us.  Please accept our apology for the AARP membership invitation you received in the mail.</p><p>The names for membership solicitation come from a variety of mailing lists.  AARP screens its lists carefully and requests that list suppliers provide only names of people age 50 and older.  However, the information on some lists may be inaccurate.  Your name may have also appeared on a special interest mailing list because you enjoy a particular hobby or pastime.  AARP looks at age as well as special interests to help identify prospective members.</p><p>I&rsquo;ve removed your name from our solicitation lists, and regret that mailings prepared before today&rsquo;s date cannot be recalled.  It will take approximately 4-6 weeks for this process to take full effect. If you should receive solicitations after that time, please call us toll-free at 1-888-OUR-AARP (1-888-687-2277) and a Member Service Associate will be happy to assist you. Be sure to have the mailing available when you call, as each notice has specific codes that will help us suppress your name and address more effectively.</p><p>Thank you for bringing this matter to our attention.  We apologize for any inconvenience this may have caused.</p><p>Sincerely,</p><p>Martha</p><p>Member Communications</p></blockquote><hr><blockquote><p>My point is that my information should not have been available to AARP at all, regardless of how relevant its services are to me.  I want to know who it was that gave AARP my contact information, so that I can determine how THEY got my information.</p><p>Is someone there going to tell me how AARP got my information, or not?</p></blockquote><hr><blockquote><p>Thank you for contacting AARP.  <em><strong>Please accept our condolences on the loss of your loved one as well as our apology for the solicitations you received in your name</strong></em> [emphasis mine]<em><strong>.</strong></em> We are sorry we did not answer you previous request.</p><p>You may be interested in registering your name with the Direct Marketing Association (DMA).  The DMA is the leading global trade association of business and nonprofit organizations using and supporting direct marketing tools and techniques.  Among other services, DMA helps promote industry standards for responsible marketing among its members. Register online at: <a href=https://preference.the-dma.org/cgi/ddnc.php rel=external>https://preference.the-dma.org/cgi/ddnc.php</a>
.</p><p>If you register for this Do Not Contact service, you should see a reduction in unsolicited mail.  However, please be aware that you may continue to receive mail from companies with which have done business in the past and from non-DMA member companies.  All DMA members are required to eliminate a registered name from their mailing lists. For more information about the DMA and its consumer services; visit their Consumer Assistance website at <a href=https://www.dmaconsumers.org/consumerassistance.html rel=external>www.dmaconsumers.org/consumerassistance.html</a>
.</p><p>I hope this information is helpful.</p><p>Sincerely,</p><p>Cynthia</p><p>Member Communications</p></blockquote><hr><p>The only useful information I got out of them was the link to the <a href=https://preference.the-dma.org/cgi/ddnc.php rel=external>Direct Marketing Assocation opt-out registration</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-04-18:/2009/04/18/pos-aarp/</guid><link>https://willfaught.com/2009/04/18/pos-aarp/</link><atom:link href="https://willfaught.com/2009/04/18/pos-aarp/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 18 Apr 2009 17:38:00 -0700</pubDate><title>POS AARP</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>A week ago I called Sam Bent, another software engineer at Microsoft, twice for help.  The first time went fine, but the second time I had his full name in my head when I dialed the phone, and I opened with, &ldquo;Hi, Sam Bent.&rdquo;  It didn&rsquo;t sound like, &ldquo;Hi, Sam Bent?&rdquo; as if I was checking if it was him.  It sounded like I had used his full name like a first name.  I realized what I had done as soon as I had spoken.  I sputtered for a second, then corrected myself and called him Sam.  I was embarrassed, but it was only a few seconds; barely enough time to think about it.  It would have been fine, except that my office mate, Varun, cracked up at his desk.  Leaning-into-his-desk-trying-to-be-muffled-but-can&rsquo;t-help-it laughing.  It was infectious and made me laugh.  I wasn&rsquo;t sure which was worse—using Sam&rsquo;s full name, or the way I corrected myself—but both were way funny.  I couldn&rsquo;t stop giggling with poor Sam on the line, which I was mortified about, so I shifted in my seat and whispered to Varun to stop laughing.  I managed to get my voice under control and struggled to remember what I had called about.  Even after Sam and I started talking, my mind would jump uncontrollably to what I was desperately trying not to think about, and my voice would quaver from trying not to break into laughter.  I felt so bad after the conversation ended—how unprofessional!—but I couldn&rsquo;t stop giggling for the next couple hours, and I still giggle when I think of it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-03-28:/2009/03/28/mortified-giggling/</guid><link>https://willfaught.com/2009/03/28/mortified-giggling/</link><atom:link href="https://willfaught.com/2009/03/28/mortified-giggling/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 28 Mar 2009 08:26:00 -0700</pubDate><title>Mortified Giggling</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I feel alive!</p><p>Take that, <a href=https://www.wefeelfine.org/ rel=external>Jonathan Harris</a>
.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-03-17:/2009/03/17/i-feel-alive/</guid><link>https://willfaught.com/2009/03/17/i-feel-alive/</link><atom:link href="https://willfaught.com/2009/03/17/i-feel-alive/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 17 Mar 2009 15:55:00 -0700</pubDate><title>I Feel Alive</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I was anchoring my bookcase to the wall when I heard these strange sounds coming from behind me. I walked a little toward the sounds, trying to pinpoint their source. I looked up at the window, saw streaks and dots, and realized that it was raining. I hadn&amp;rsquo;t realized it until then, but I had never heard the rain in my apartment before. Strange, since I live in Seattle.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2009-03-07:/2009/03/07/strange-sounds/</guid><link>https://willfaught.com/2009/03/07/strange-sounds/</link><atom:link href="https://willfaught.com/2009/03/07/strange-sounds/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 07 Mar 2009 19:50:00 -0800</pubDate><title>Strange Sounds</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>This <a href=https://seattle.craigslist.org/see/fuo/1065167316.html rel=external>recliner</a>
has been with my family for as long as I can remember. Sadly, I no longer have a place for it and it must go, finally passing from us to parts unknown. I&rsquo;m sad to see it go. It feels like a piece of my past will be lost. I wish we could all have museums of our lives, so we could keep all the things that mean something to us when we have no where else to put them. I could occasionally visit my museum and take a nap or watch a movie in my recliner for a taste of times past.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-03-07:/2009/03/07/a-piece-of-my-past/</guid><link>https://willfaught.com/2009/03/07/a-piece-of-my-past/</link><atom:link href="https://willfaught.com/2009/03/07/a-piece-of-my-past/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 07 Mar 2009 11:55:00 -0800</pubDate><title>A Piece Of My Past</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I had a wonderful birthday. Thank you to all who made me feel so special!</p><p>My parents and Nick flew to Seattle to be with me on the weekend before my birthday. I&rsquo;m afraid I wasn&rsquo;t a very good host, as I didn&rsquo;t know the area very well, and wasn&rsquo;t very prepared for them. Furthermore, I got lost driving the five blocks to their hotel and almost drove the wrong way down Mercer. But we figured out things to do and see, and it was a good time. I was very pleased to see them all again. I had been feeling homesick, so it was nice to have three pieces of it walk through my front door and lounge with me on my cool furniture.</p><p>I wanted to do something on my birthday with my Seattle friends. I settled on sushi in Belltown, a Seattle neighborhood near downtown, with drinks afterward at nearby bars. I invited my friend Hallie and a few of her friends that I&rsquo;ve met, my friends Dan and Tom from Cal Poly, and my friends Varun and Mike from work. I hadn&rsquo;t hung out with Varun or Mike outside of work, and I was happy to have a chance to relax with them a little and chat. Afterward, we walked next door and a couple people bought me some drinks. People kept peeling off until it was just Dan and Tom, and we moved on to another bar for more drinks. I had a good time and I was glad to kick off my new Seattle life like that.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-02-28:/2009/02/28/my-birthday/</guid><link>https://willfaught.com/2009/02/28/my-birthday/</link><atom:link href="https://willfaught.com/2009/02/28/my-birthday/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 28 Feb 2009 17:04:00 -0800</pubDate><title>My Birthday</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://www.theonion.com/content/amvo/former_ebay_ceo_running_for rel=external>Former eBay CEO Running For Governor</a></p><p>Best quotation: &ldquo;This would be a great idea if California were eBay.&rdquo;</p><p><a href=https://www.theonion.com/content/amvo/arizona_super_bowl_viewers_shown rel=external>Arizona Super Bowl Viewers Shown Pornography</a></p><p>Best quotation: &ldquo;That was the only part of the Super Bowl that I understood.&rdquo;</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-02-21:/2009/02/21/the-onion/</guid><link>https://willfaught.com/2009/02/21/the-onion/</link><atom:link href="https://willfaught.com/2009/02/21/the-onion/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 21 Feb 2009 13:09:00 -0800</pubDate><title>The Onion</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>On my flight home for Thanksgiving, I sat a seat over from a cute girl named Rae who was around my age. We eventually chatted, and I learned she studied art history at the University of Washington, she was from California, and she was going home for the holiday too. I was gauging our conversation and toying with the idea of asking for her number, but I chickened out and figured I could find her online later. We parted ways at the Sacramento airport, and I wondered whether I would regret not seizing the day right then and there.</p><p>Turns out I regretted it. I looked for her on Facebook, but I could only search the Seattle network and not the University of Washington one, since I wasn&rsquo;t a student there, and I came up with nothing. Not wanting to feel like a stalker, I gave up, and resigned myself to learning a lesson about missed opportunities.</p><p>A few weeks later, another Cal Poly student, Nate, interviewed at Microsoft here in Seattle for a summer internship. Nate and I have a mutual friend, Michelle, who reminded Nate I was here. Nate and I got together the Saturday morning after his Friday interview, and we went to Pike Place Market and the Space Needle. We said goodbye in the early afternoon, but he called me sometime later to say that his flight had been cancelled until the next morning. We arranged to meet for dinner that night and afterward meet at the Whiskey Bar some people he had met Friday night.</p><p>Nate introduced me to Hallie, a Microsoft concierge he met during his interview on Friday, and who had brought him along to a party she was going to that night. I kept in touch with Hallie, who works in a building close to mine, and I&rsquo;ve hung out with her and her friends several times since.</p><p>The night of the Superbowl, after it was all over and I had returned home, I looked at Hallie&rsquo;s Facebook profile, which I hadn&rsquo;t had a chance to do yet. And there, lo and behold, was a comment from a girl named Rae. I clicked on her profile link, thinking, What are the odds that this is the girl I met? And it <em>was</em>!</p><p>In case you lost track, to reconnect with Rae: Nate had to get an interview with Microsoft; Michelle had to remind Nate I was here; Nate had to meet Hallie; Hallie had to invite Nate, a total stranger, to a party; Nate and I had to connect; Nate&rsquo;s flight had to be cancelled; Nate, Hallie, and I had to reconnect; Hallie and I had to become friends; Rae had to comment on Hallie&rsquo;s profile; and I had to see her comment before it disappeared. Improbable.</p><p>Hallie sadly informed me Rae had a boyfriend, but I didn&rsquo;t mind that; I knew she was studying abroad soon anyway. More than anything else, I was excited to find her again after feeling regret for not pursuing her. I exchanged a few messages with her, and she ate sushi with me and my other friends on my birthday.</p><p>Also, through my friend Dan I met another cute girl who has a boyfriend and will soon be traveling abroad. One more girl like that and I&rsquo;ll start to think I&rsquo;m cursed.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-02-20:/2009/02/20/improbable/</guid><link>https://willfaught.com/2009/02/20/improbable/</link><atom:link href="https://willfaught.com/2009/02/20/improbable/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 20 Feb 2009 16:37:00 -0800</pubDate><title>Improbable</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>That&rsquo;s F.E. for Furniture Era, the period in which I finally have something to sit and eat on. It&rsquo;s been a long time coming. I recently went to the closest Ashley Furniture store and furnished almost my entire apartment: couch, love seat, chair, ottoman, end tables, coffee table, dining table, chairs, bed frame, dresser, and night stand. It&rsquo;s all going to be delivered tomorrow morning. I can&rsquo;t wait! I hope nothing is delivered damaged or otherwise has to be returned. I want to sit on all of it now. Yes, even the night stand. I&rsquo;ll post some pictures when I get a chance.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-01-29:/2009/01/29/year-0-f.e./</guid><link>https://willfaught.com/2009/01/29/year-0-f.e./</link><atom:link href="https://willfaught.com/2009/01/29/year-0-f.e./" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 29 Jan 2009 15:32:00 -0800</pubDate><title>Year 0 F.E.</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I finally posted online pictures of moving into my new apartment. When I took these, my boxes had just been delivered, so nothing was yet unpacked. My apartment looks sparse even now because I still don&rsquo;t have any new furniture, but it looks a little more lived in with the boxes unpacked.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/living-room-1.426bb4e8c99bdd5c1de10e6390a97547f70afc53a5120bfbdc4215b7be3c7773.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">My living room.</figcaption></figure></div></div><p>The entire apartment building is five years old, so everything feels new and seems in good condition. Everything was well-cleaned on the day I moved in. My windows look out on a courtyard formed by the U-shape of the building. I can see a tiny sliver of Lake Union from my living room windows. The building is <a href=https://en.wikipedia.org/wiki/Leadership_in_Energy_and_Environmental_Design rel=external>LEED</a>
-certified, so the windows are double-paned and the walls are well-insulated. The walls absorb a lot of sound; it&rsquo;s quite amazing to walk into the hallway and not hear any of the music I&rsquo;m playing inside. My entire apartment, except for the kitchen and bathroom, is carpeted light-tan, and it feels good on my feet.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/living-room-2.0b5c826413979a5efa4e514505a49a08ab73612908605f3bd3ba2d32ed0f04e8.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">My living room from the other side.</figcaption></figure></div></div><p>My apartment comes with two snazzy blue lights that hang from the ceiling over the counter, which the other apartment that I toured here didn&rsquo;t have. All my stuff is in the boxes on the left. The track lights overhead provide adequate lighting for now, but I&rsquo;ll have to get some lamps eventually to better light up the area for reading and whatnot. There&rsquo;s electric heating, but I&rsquo;ve only had to use it a couple times. My apartment stays room temperature on its own most of the time. It might have something to do with being on the top floor, or the LEED stuff.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/kitchen.b6de2319d501305c33cb80be1ddcd26dc3bb7f75d79360f6cab7431c5f75be9b.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">My kitchen.</figcaption></figure></div></div><p>The black counter tops that rim the kitchen are granite, but the regular kitchen counters aren&rsquo;t. There seems to be plenty of storage room for dishes, plates, pots, pans, utensils, devices, and so on, although the cabinets are only about a foot wide, which is too narrow to fit wide things like my crock pot, sadly. My crock pot rests comfortably atop the fridge. The appliances are still in great shape.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/office.5412f8a96efa84edd8eebad189dba43518538bb72c00bb311825f3e9b9b6cd37.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">My office area.</figcaption></figure></div></div><p>The den, or office area, is next to the kitchen. It&rsquo;s big enough to fit my desk and computer and a few other things. I plan to put a bookshelf in there at some point for all my books. There are two closets, not counting the one in my bedroom, so I have plenty of storage space. I still haven&rsquo;t filled it up.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/hallway.0743d1eab4aae5d762fd27f4da43eef9e43a839ea063fabb7d13dbe05090df4b.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">My hallway.</figcaption></figure></div></div><p>My short hallway connects the living room, the bedroom, and the bathroom. There are also doors for another closet and a small, square room that contains my stacked washer and dryer. Thankfully I won&rsquo;t have to run to a laundromat once per week, although the washer is pretty noisy and it always stops in the middle of the permanent press cycle.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/bedroom-1.49c4866bfc8d8c405f373da6b2a3f43065ac1ebdb4c9bd228b4720e7f2e66467.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Half of my bedroom. Not much of a view.</figcaption></figure></div></div><p>My bedroom is oddly shaped. It has six sides that roughly form a triangle. I moved my bed since I took this picture to sit against the right wall to open up more floor space after I put in a dresser and a night stand. The window looks out on the same view as the living room windows. The fire alarm in here is brutal on my ears, like a shrieking banshee straight out of hell—in my brain.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/bedroom-2.7c74c00e411bde4be6b8553b98a89951f15c1637b2958921df6ff599a6f74acf.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">The other half of my bedroom.</figcaption></figure></div></div><p>My bedroom closet is a walk-in, although it&rsquo;s not big for a walk-in, and it&rsquo;s curiously also roughly triangle-shaped. Notice the plastic bag just inside the closet door—I use lots of bags when moving.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/28/moving-in/bathroom.212892ca8132e291a6de34bab7fc5d0b0a864ac2b2fcf6cc60d72f3b1c48aefd.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Half of my bathroom.</figcaption></figure></div></div><p>My bathroom is pretty sweet, I like it a lot. The shower has lots of places to put things like shampoo or whatever, and there&rsquo;s lots of storage for bathroom and linen things under and next to the sink. The mirror is huge and spans almost the entire wall. I have a spiffy towel, rug, and shower curtain set that all match, but I somehow lost that picture. Go to Bed Bath & Beyond and you&rsquo;ll see it.</p><p><a href=https://faught.shutterfly.com/243 rel=external>More pictures.</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-01-28:/2009/01/28/moving-in/</guid><link>https://willfaught.com/2009/01/28/moving-in/</link><atom:link href="https://willfaught.com/2009/01/28/moving-in/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 28 Jan 2009 15:37:00 -0800</pubDate><title>Moving In</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I went shopping at the Costco in Seattle for the first time today. They didn&rsquo;t give me any bags or boxes in which to carry my stuff, so I had to carry a few items at a time from my car to my apartment. On my first trip, I put together an armload of provisions, and thought I could add to it a two-pack of Clearasil facial cleanser, but it was too much. I had already closed the trunk, so I set down the two-pack under my rear bumper and pushed it back a couple feet.</p><p>I was gone no more than two or three minutes, and returned for my second armload to find the two-pack gone. No one was in sight; it was just gone. I was shocked. I hadn&rsquo;t thought that anyone saw me hide it, nor that a passerby would see it, nor that anyone was likely to pass by in the short period that I would be gone. But I was more shocked that someone would rip off a $10 two-pack of Clearasil facial cleanser.</p><p>Really? Clearasil? If you&rsquo;re going to sully your dignity by stealing from a neighbor, I would think you&rsquo;d do it for something more valuable. I suppose this is a good lesson to learn early; thankfully it didn&rsquo;t cost me more than $10.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-01-25:/2009/01/25/neighborhood-thief/</guid><link>https://willfaught.com/2009/01/25/neighborhood-thief/</link><atom:link href="https://willfaught.com/2009/01/25/neighborhood-thief/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 25 Jan 2009 15:07:00 -0800</pubDate><title>Neighborhood Thief</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s been a while since I&rsquo;ve posted. Things have been busy and it&rsquo;s been hard to find the time to blog.</p><p>In case you haven&rsquo;t heard the news, <a href=https://www.nytimes.com/2009/01/23/technology/companies/23soft.html rel=external>Microsoft laid off 1,400 employees today</a>
, 800 of them in the Redmond area. The layoffs reflect the worsening economy and were announced in conjunction with the quarterly financial report released today, which showed that profits are down compared to the same quarter last year. 3,600 more employees will be laid off worldwide over the next eighteen months, for a total of 5,000 employees. Fortunately I wasn&rsquo;t among the 1,400 laid off today, but I was sweating it for a while after I got to work this morning and read the news and some internal e-mails. I&rsquo;m the newest member on my team, so I figured I&rsquo;d be the first to go if someone had to be cut. It seems that today&rsquo;s cuts have come from other teams and product areas, but it&rsquo;s not known where future cuts will be made. It may be that my department just hasn&rsquo;t yet figured out how it will reduce its costs, and will eventually find me. I&rsquo;m crossing my fingers and hoping for the best, but at the same time thinking about what I would do if it happened to me. My heart goes out to those who lost their jobs today. This job—my first—helps me appreciate how much a job can be a part of one&rsquo;s life and what a shock it would be to lose it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-01-22:/2009/01/22/still-here/</guid><link>https://willfaught.com/2009/01/22/still-here/</link><atom:link href="https://willfaught.com/2009/01/22/still-here/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 22 Jan 2009 14:50:00 -0800</pubDate><title>Still Here</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Since I moved to Seattle, I&rsquo;ve wanted to reduce my Coke consumption so that I could sleep better and earlier, and because it&rsquo;s not healthy. I broke down while at the store last night and bought some Coke. I drank three cans&rsquo; worth in a glass with ice—and it was good—starting at 9:30 PM, so I was hopped up on caffeine for the rest of the evening, and I didn&rsquo;t get ready for bed until about 2:30 AM. I was listening to my iPod when a shrill screech seemed to pierce my ear drums. I thought my iPod had malfunctioned and tore the ear buds from my head, but the sound wasn&rsquo;t coming from them, it was coming from my smoke alarm.</p><p>I was already in my pajamas, so I hurriedly redressed, grabbed my keys and jacket, and locked my door. I was startled to find that all the fire doors had closed automatically; it seemed real enough. I opened the closest fire door, then realized I should take the stairs and went the other way. The alarms were so loud I had to tilt my head as I passed the shrieking smoke alarms as if I were crossing a gale wind. I finally exited the building and stood around with other residents at the front entrance as a couple of fire engines arrived with sirens blaring and lights flashing.</p><p>It was a false alarm, of course. It took them only ten minutes to finish checking and turn off the alarm, shorter than I expected. The air was cold outside, but I had my jacket, so I was fine waiting. Many people were wearing just jackets over pajamas and flip flops. It was the first time I got a sense of the kind of people that lived there; younger than I had seen or assumed. We reentered the building, and as I passed a fire fighter I heard him say that they had temporarily disabled the elevators. I tramped up the stairs to my floor, but found they ended at a locked roof access door. It took me about ten minutes to wander around the floor below to find another staircase that opened onto my floor, and I happily changed clothes again and fell into bed. Surprisingly, the caffeine didn&rsquo;t keep me awake and I dreamed.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/11/wake-up-call/engine.b93feac27073b40d08aaee20665a95958a25c60981611a5afcab78227a161580.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">Unreal at such an ungodly hour.</figcaption></figure></div></div><p><a href=https://faught.shutterfly.com/236 rel=external>More pictures.</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-01-11:/2009/01/11/wake-up-call/</guid><link>https://willfaught.com/2009/01/11/wake-up-call/</link><atom:link href="https://willfaught.com/2009/01/11/wake-up-call/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 11 Jan 2009 07:41:00 -0800</pubDate><title>Wake Up Call</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My parents gave me a really good book of crock pot recipes for Christmas, and I thought I&rsquo;d try one out Wednesday night. I went to the store for the ingredients the night before, and woke up extra early the next morning to put it together. I didn&rsquo;t have a proper lid for my crock pot then, but I had a heavy metal one that was the right size, so I figured it&rsquo;d work just as well. When I got home from work, I was greeted by a lovely aroma, but found my dinner burned to a dry, black, simmering crisp. I had been worried about leaving the crock pot on while at work because I couldn&rsquo;t be home to turn it off on time, but I had hoped the juices would keep things moist like they do for other crock pot recipes. Not so. <em>Sigh</em>. Back to the drawing board.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2009/01/09/apricot-glazed-pork-roast-a-tragedy/burned.8ca2a93900d857c50ec612ea5a6ee1f5def996c66f8484ae7acd29c5b422ae99.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Burned to a crisp.</figcaption></figure></div></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-01-09:/2009/01/09/apricot-glazed-pork-roast-a-tragedy/</guid><link>https://willfaught.com/2009/01/09/apricot-glazed-pork-roast-a-tragedy/</link><atom:link href="https://willfaught.com/2009/01/09/apricot-glazed-pork-roast-a-tragedy/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 09 Jan 2009 12:49:00 -0800</pubDate><title>Apricot-Glazed Pork Roast: A Tragedy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I flew from Seattle to Sacramento on Saturday, December 20. I reserved a flat-rate taxi ride from my apartment to the airport, and it started to snow as I approached the airport terminal. When I later glanced out a terminal window, the tarmac was carpeted with snow, and more was still falling. Earlier flights were delayed, but fortunately my flight was delayed only thirty minutes, so I grabbed a beer. We boarded without further delays, but we didn&rsquo;t depart until hours later. It seemed like one problem after another conspired to keep us put. Deicing the plane took three tries because the fluid tank ran empty. Then other airlines hogged a vehicle they needed. Then the plane next to us backed away from the terminal just after we did, then parked in our way for several minutes, as if they saw us leaving and didn&rsquo;t want us to get in their way. We were delayed about three hours.</p><p>I was gone for two weeks, and I figured that by the time I got back, the worst of the weather would be past. My plane departed on time from Sacramento on Sunday, January 4, at 4:30 PM: plenty of time to get home and relax. As we left, it began to snow in Seattle, which no one had forecast. The snow reduced the rate at which the Seattle airport landed planes, and the geniuses at Southwest forgot to put extra fuel in our tank, so we couldn&rsquo;t have sustained a holding pattern while waiting for our turn to land. We diverted to Spokane, on the other side of Washington, to refuel. The Spokane tarmac was carpeted with snow too, but it wasn&rsquo;t snowing. We circled in the plane on the ground near the terminal for a half hour before a gate opened up. They refueled the plane, and we waited until 10 PM to confirm our place in line to land at Seattle. At 9 PM the crew suggested we deplane and eat something before we left. Most of us deplaned, but they held us standing at the terminal entrance for ten minutes while they wrung their hands and deliberated whether to actually let us leave since they might need to recall us early. They finally let us go, and I stood in the food court about a minute before they paged us to return to the plane. We departed Spokane and arrived in Seattle.</p><p>I got my bags and waited at least forty-five minutes outside in the cold for a taxi in a line that had about a hundred people in it. I had canceled my flat-rate taxi ride in Spokane, which would have cost me $30, and paid $45 to get home in a regular taxi. The taxi&rsquo;s credit card reader didn&rsquo;t work, so we had to stop at an ATM so I could get cash. The driver helped himself to a $5 tip without mentioning it.</p><p>I got home at 2 AM, making it a 9.5 hour trip. I&rsquo;m so glad I missed the worst of the weather.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2009-01-07:/2009/01/07/airing-of-grievances/</guid><link>https://willfaught.com/2009/01/07/airing-of-grievances/</link><atom:link href="https://willfaught.com/2009/01/07/airing-of-grievances/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 07 Jan 2009 15:21:00 -0800</pubDate><title>Airing Of Grievances</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My parents threw me a graduation party while I was home for Thanksgiving. It was either do it then or never. They invited lots of family friends in the area, and I invited Heather. My parents assembled lots of tasty hors d&rsquo;oeuvres and wines and played music and we all stood and sat and chatted and snacked and sipped away the evening. There must have been twenty people there at one point. There were a few people there I hadn&rsquo;t seen in a long time, and it was the first time I think I&rsquo;ve ever seen all of our neighbors in our house at once. I wish I had taken pictures, but I was caught up in it all. I didn&rsquo;t even think about getting something to eat until most people had left and the food was almost gone. It was quite a success and very fun.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/20/graduation-party/47b8cc07b3127cce98548acc031a00000046100AbOGTdm3cM2Tg.7e3793996aec611bb45c804a96751fb4554f8bc89e17fbe9f4eff05687bfbc65.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Heather and me.</figcaption></figure></div></div><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/20/graduation-party/47b8cc07b3127cce98548ac9822f00000046100AbOGTdm3cM2Tg.c0b799f2c526bb63c9f3fb91f4f1a1242ccdcdc83d497bf50f6ac9370275886a.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Gary and Juliette.</figcaption></figure></div></div><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/20/graduation-party/47b8cc07b3127cce98548ac8031e00000046100AbOGTdm3cM2Tg.6d7c290fd7acbc4b2a7bda68fd31249680da376e72cc14bc0d30ba45798c497e.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Ron and Debbie.</figcaption></figure></div></div><p><a href=https://faught.shutterfly.com/206 rel=external>More pictures.</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-12-20:/2008/12/20/graduation-party/</guid><link>https://willfaught.com/2008/12/20/graduation-party/</link><atom:link href="https://willfaught.com/2008/12/20/graduation-party/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 20 Dec 2008 19:34:00 -0800</pubDate><title>Graduation Party</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I started my holiday vacation this evening! Well, actually I started it around 1 PM since I couldn&rsquo;t drive to work or work remotely and I realized the latter about then. So I effectively had two extra days of vacation, yesterday and today, but they didn&rsquo;t really feel like vacation since I felt so bad for being an idiot and not setting up my work computers to accept remote connections in advance. Oh well, at least this won&rsquo;t happen again.</p><p>I&rsquo;ll be flying home at 5 PM tomorrow and won&rsquo;t be coming back until January 5, two full weeks at home. I&rsquo;m looking forward to seeing family and friends again, sleeping in, working on my thesis, and catching up on Bill Mahr. I finished the Hyperion books a couple days ago, so I may pick another favorite off my bookshelf while I&rsquo;m there.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-12-19:/2008/12/19/holiday-vacation/</guid><link>https://willfaught.com/2008/12/19/holiday-vacation/</link><atom:link href="https://willfaught.com/2008/12/19/holiday-vacation/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 19 Dec 2008 13:20:00 -0800</pubDate><title>Holiday Vacation</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It really came down today. I woke up bleary-eyed and tired, got up later than I meant to, and got ready. I didn&rsquo;t even glance outside until I was all set to go. I tried logging onto my Microsoft mail remotely to see if there was any mention of canceling work, but the mail servers were so impacted that the web pages wouldn&rsquo;t load. For a while I didn&rsquo;t know whether I should try to go or not, so I decided to try and see if I could even leave if I wanted to. There&rsquo;s two driveway exits for my building, and both lead onto steep hillsides that were caked with a couple inches of snow. Both ways I got a few feet out from the building and my car started to slide downhill, so I parked again and decided to work from home. It turns out I need to have a security certificate on my smart card changed, so I couldn&rsquo;t even work remotely today. It was nice to have a day to myself (I took a three-hour nap!), but I feel like an idiot for not trying to connect remotely before. It looks like I might not be able to drive tomorrow either, which either means going another day without working (not good) or trying to get to campus by bus to have my smart card fixed so I can work remotely from home. I&rsquo;ll have to wait until tomorrow morning to see how the roads are and whether the Microsoft shuttles are running.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-12-18:/2008/12/18/snow-day/</guid><link>https://willfaught.com/2008/12/18/snow-day/</link><atom:link href="https://willfaught.com/2008/12/18/snow-day/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 18 Dec 2008 17:07:00 -0800</pubDate><title>Snow Day</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The IKEA stuff I bought is so eager to become faulty that it started before I even finished setting it up. The dresser I bought was horribly damaged as it was delivered to my apartment, the screws for my dining table — despite my best efforts and aching hands — don&rsquo;t fit their holes, and a finished surface of my dining table is cracked. I&rsquo;ll have to return both items. I&rsquo;m questioning now whether I should let them keep their stuff and go elsewhere for furniture. Everyone says IKEA is cheap, but $300 for a dresser and $300 for a dining table don&rsquo;t sound like great deals when you have to assemble them and wait for them to be exchanged for new ones.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-12-15:/2008/12/15/ikea/</guid><link>https://willfaught.com/2008/12/15/ikea/</link><atom:link href="https://willfaught.com/2008/12/15/ikea/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 15 Dec 2008 14:35:00 -0800</pubDate><title>IKEA</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Microsoft put me in touch with Angela in Seattle, a rental provider, who helped me find an apartment. (Actually, Microsoft put me in touch with Susan on the east coast, who put me in touch with Angela. Every relocation service that Microsoft provides uses multiple levels of agents who contract the person beneath them, the last person contracted being the one I end up meeting face-to-face. When I was shipping my belongings from Grass Valley to Seattle, I met the driver Boe, who was contracted by Ronnie, who was contracted by Joey, who was contracted by Chanda, who was contracted by Microsoft. After a while it seems like Lord of the Rings, where everyone goes around declaring themselves as son of this or daughter of that.) She asked me a few questions about rent and location and sent me a link to a web page that profiled about twenty properties that matched my criteria. Since I didn&rsquo;t know what I wanted aside from price and location, the profiles helped me make my own lists of must-have and optional amenities and features. My friend Heather advised me to check for several things based on her own renting experience that I hadn&rsquo;t thought of. By the time Angela and I toured a handful of properties, I had a list of questions to ask and things to check.</p><p>I was really nervous about picking the wrong place when touring the properties. It would be my first apartment and, as I said, I had never evaluated apartments before. I was touring near the end of my corporate housing and I needed to find a place soon or start paying $115 per day to stay put temporarily. Since I only had about a week to search, I didn&rsquo;t have as many properties to choose from, and I was worried that I&rsquo;d get stuck with something I didn&rsquo;t like for a year.</p><p>Fortunately I really liked the last place we visited. The building was great and the apartment we toured was perfect. The apartment fit my needs exactly and I had a good feeling about it. I decided to put down a deposit, and Angela, the tour guide, and I headed to the office to fill out the paperwork. Halfway through writing my information down, my eyes focused on my pen tip, I hear the tour guide exclaim, &ldquo;Oh no! It looks like that property is already taken!&rdquo; My heart sank. I figured there wouldn&rsquo;t be any others like it available, so I tried to remember the other properties we had visited that day to decide the runner-up. I was lucky, and the tour guide found another property, identical to the first, situated two floors directly above the first and it was only $50 more per month. I thought I was getting the first apartment for a steal anyway, so I gladly took the second.</p><p><a href=https://www.dexterlakeunion.com/ rel=external>My apartment building.</a>
My apartment has one bedroom and floor plan M.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-12-14:/2008/12/14/finding-home/</guid><link>https://willfaught.com/2008/12/14/finding-home/</link><atom:link href="https://willfaught.com/2008/12/14/finding-home/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 14 Dec 2008 14:15:00 -0800</pubDate><title>Finding Home</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;d heard good things about the Capitol Hill neighborhood in Seattle as a place to live, especially for my first year here, so I decided to venture into the city to check it out. I read a little about it and decided to visit Volunteer Park first, which seems to be near the north end of the neighborhood.</p><p>The park was quite large and green and had an old water tower, a reservoir, an Asian history museum, and a conservatory. The museum closed about the time I got there, but I meandered by and into everything else. The water tower was made of mottled red and grey bricks and stands on a small knoll above a street that loops around its base. It looked like a castle turret, so I was excited to explore it. I climbed a metal staircase that wrapped around the water tank that lies inside the tower to look out from the open windows at the top level. From there, I had a wonderful view of some of the surrounding city all the way to Elliot Bay, the Sound, and the Space Needle. I didn&rsquo;t know until then how beautiful the sunsets here can be.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/13/capitol-hill/47b8cf04b3127cce98548aea3e0e00000046100AbOGTdm3cM2Tg.3269eab274cf966a5a5ccbf31a205d09328442dc9ccccaffcfbe5f300e158e92.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Water Tower View</figcaption></figure></div></div><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/13/capitol-hill/47b8cf04b3127cce98548ae9bf3d00000046100AbOGTdm3cM2Tg.5b4e57bd7a2566ef1445c5935498fc6020e4ce1be50a69bad3242ff5a2a489b6.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Another Water Tower View</figcaption></figure></div></div><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/13/capitol-hill/47b8cf04b3127cce98548aebbf3f00000046100AbOGTdm3cM2Tg.f5ea48c898374cfec6cb61ac1d9c468913f4905e9e89e56dd6836b814080edf2.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Yet Another Water Tower View</figcaption></figure></div></div><p>The conservatory closed shortly after I entered, but I saw several interesting plants and flowers. There were quite a few plants with leaves that had tasteful colors and patterns. It&rsquo;s surprising how much the humidity can change between rooms.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/13/capitol-hill/47b8cf04b3127cce98548ad3bf0700000046100AbOGTdm3cM2Tg.47a2efd9904ee2b1a875eb2c970ce3dddbb6d871452b750b17d9b1f4cf69df0c.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Purple Hearts</figcaption></figure></div></div><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/12/13/capitol-hill/47b8cf04b3127cce98548ad7bf0300000046100AbOGTdm3cM2Tg.16ae79ef8462d21dd764ae878e801e8b3e677c74cdc1c84d9cd6bf5a1318023b.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Petal Balls</figcaption></figure></div></div><p><a href=https://faught.shutterfly.com/166 rel=external>The rest of the pictures.</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-12-13:/2008/12/13/capitol-hill/</guid><link>https://willfaught.com/2008/12/13/capitol-hill/</link><atom:link href="https://willfaught.com/2008/12/13/capitol-hill/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 13 Dec 2008 14:08:00 -0800</pubDate><title>Capitol Hill</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I need to find a permanent place to live soon because Microsoft stops paying for my temporary housing on December 3. For a long time I thought I would look for a place to live in <a href=https://en.wikipedia.org/wiki/Eastside_%28King_County,_Washington%29 rel=external>Eastside</a>
, probably <a href="https://maps.google.com/maps?hl=en&amp;safe=off&amp;client=safari&amp;q=bellevue,+wa&amp;ie=UTF8&amp;z=11&amp;g=bellevue,+wa" rel=external>Bellevue</a>
, because I don&rsquo;t want to deal with the traffic crossing the Lake Washington bridges and I would be closer to work. Lately, after having worked for a couple weeks now, I realize that if I live in Eastside, it&rsquo;s not as likely that I&rsquo;ll have the energy or time to drive to Seattle to explore the city, which I really want to do. I figure I should just plant myself there and then I can&rsquo;t help but immerse myself in it. Microsoft provides a lot of commuting alternatives — I heard they own and run the largest private bus network in the nation — so traffic might not be as bad as it could be. The Microsoft Connector buses even have internet access.</p><p>Right now I&rsquo;m focusing on the <a href=https://en.wikipedia.org/wiki/Capitol_Hill,_Seattle,_Washington rel=external>Capitol Hill</a>
district. After talking to coworkers and friends who live here, this seems like an interesting place to be and a good place to get my feet wet (pun definitely intended). I hear a lot of people live there and it&rsquo;s very busy and exciting and hip with lots of things to do. I hope I can find a place that I like. Microsoft has put me in touch with a rental provider, who is putting together a list of potential places to look at, and later she&rsquo;ll take me on a tour of the ones I like. Wish me luck!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-24:/2008/11/24/quest-for-housing/</guid><link>https://willfaught.com/2008/11/24/quest-for-housing/</link><atom:link href="https://willfaught.com/2008/11/24/quest-for-housing/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 24 Nov 2008 17:13:00 -0800</pubDate><title>Quest For Housing</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Last week I thought I would cook something that would yield enough leftovers for the week. My cookbooks are still in storage, so I found a simple tuna casserole recipe online that only took about half an hour to make. I later discovered, after hearing it bang around in my car&rsquo;s trunk for a few days, that I had left out one of the two cans of Cream of Mushroom Soup called for by the recipe when putting the dish together. This made a lot of sense because the recipe also called for an entire onion and assumed the onion would be fully cooked in the soup. Since I had left out half the soup, the onion was only half-cooked. I managed to eat it for about three days before I couldn&rsquo;t stand it anymore. Every night I would go to bed with onion on my breath. I love onion, but too much raw onion makes even me nauseous.</p><p>Eventually I brought myself to dispose of the rest of the tuna casserole, about two days&rsquo; worth, down the garbage disposal. I ran some water and turned on the garbage disposal for a few seconds until it was clear. Then I started preparing some other, better, food, and turned on the faucet a few times. I noticed that the water was getting backed up in the sink, which was weird because it had seemed clear a moment before, so I flicked on the garbage disposal again. After a few seconds, the entire mass of tuna casserole that I had dumped down the sink exploded several feet upward and outward from the left (non-garbage disposal) side of the sink, covering me, the counters, and the floor in vomit-colored, onion-smelling casserole goo. After completely changing my clothes and wiping it up, the kitchen still smelled like tuna casserole and onion. Even in death, its curse lives on.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-22:/2008/11/22/dinner-curse/</guid><link>https://willfaught.com/2008/11/22/dinner-curse/</link><atom:link href="https://willfaught.com/2008/11/22/dinner-curse/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 22 Nov 2008 13:40:00 -0800</pubDate><title>Dinner Curse</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I visited Aunt Deb and Uncle Ron last weekend at their home in Sequim, WA. It was so great to see them again; it had been a while since the last time. I got to take the ferry from Edmonds to Kingston across the sound on the way. The deep blue water was flat and still, and the sky was a lighter blue and dappled with thin, wispy clouds. Some seagulls that were following the ferry at about the same speed were flying just above the top deck where I stood. They appeared to be floating in front of, and just above, me. I got some pictures of them that I really like. One of them was brave enough to land only a couple feet away from me on a banister.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/21/sequim/47b8cf37b3127cce98548a130f1e00000046100AbOGTdm3cM2Tg.74a796937b96c214760cd4af1893ea9b65329206c0f3e07ae9d89efd56dd799f.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Floating birds.</figcaption></figure></div></div><p>After the ferry I passed through gently rolling hills and lush forests, and toward the end along the sound shoreline. Sequim lies on flat, verdant land between tall mountains and sea bluffs. I was amazed at how much of the area you can see from the flat land. My aunt and uncle&rsquo;s house lies at the base of a steep hill on the edge of the valley. Driving less than a minute up their hill, you can see most of the area laid out beneath you.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/21/sequim/47b8cf37b3127cce98548afe8ec300000046100AbOGTdm3cM2Tg.83d815e2598b4341fcc106318ada6e250b4c3b9a01ed7b4d417a6330565baa2a.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Valley floor.</figcaption></figure></div></div><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/21/sequim/47b8cf37b3127cce98548afa8ec700000046100AbOGTdm3cM2Tg.e234e94961476870c88773fa7e02b4bff089724f80a89c91fd849beb9544eea0.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Sequim from above.</figcaption></figure></div></div><p>Their house, which they built themselves, is amazing. The kitchen was my favorite room, which I think is true of most of their guests, but the house as a whole has a great feel to it. I love the open spaces, where rooms are separated and shaped more by small walls and supports.</p><p>Aunt Deb cooked a delicious salmon dinner the night I arrived, and afterward we went to a choir and band show at the high school, which was very good. The next day they showed me around Sequim and bought me a few gifts of warm clothes to help me survive the coming winter.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/21/sequim/47b8cf37b3127cce98548a1b0f1600000046100AbOGTdm3cM2Tg.aa04a2728ed1f8b015c6ab38df501b2be1bd100261a84f6a0beb977990b6b322.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">Their fantastic kitchen.</figcaption></figure></div></div><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/21/sequim/47b8cf37b3127cce98548af08ecd00000046100AbOGTdm3cM2Tg.01d6bd1c663b24e25f42fbdc25933a6d8da77602a7b639b2d758c35af6ecf2c3.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">The beach was foggy, but pretty.</figcaption></figure></div></div><p>It was a great trip. <a href=https://faught.shutterfly.com/106 rel=external>More pictures.</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-21:/2008/11/21/sequim/</guid><link>https://willfaught.com/2008/11/21/sequim/</link><atom:link href="https://willfaught.com/2008/11/21/sequim/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 21 Nov 2008 14:31:00 -0800</pubDate><title>Sequim</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>There&rsquo;s a condition that afflicts many innocent, hard-working people around the world every day. Its victims suffer from light sensitivity, disorientation, lethargy, sleep deprivation, and depression. There is no cure, but some drugs temporarily alleviate its symptoms. Many people manage to live somewhat normal lives through proper treatment. I&rsquo;m referring, of course, to waking up before 9 AM, which I had to do all this week and expect to continue doing until my body gives out. Please donate to my relief fund.</p><p>I started my job at Microsoft on Monday. Monday and half of Tuesday were spent attending orientation, where I and other new employees were introduced to Microsoft the company, Microsoft the paycheck giver, Microsoft the health benefits giver, Microsoft the ethical enterprise, and the like. We were also issued our employee badges and e-mail addresses. I&rsquo;m now an official Microsoft newbie!</p><p>I reported to my building on Tuesday and couldn&rsquo;t find my manager. Eventually I found some people I had met when I visited there before I had decided to accept the job offer, and we went out to lunch at the cafeteria near our building. The food was decent, but not great, and there seemed to be a good variety. I&rsquo;ll probably get sick of it all eventually, but right now it&rsquo;s all good. After lunch, my colleagues (I have colleagues&mldr;weird) found my office and my manager. It turned out I had to move my computer, which was still in boxes, across the street and set up temporarily there. Moving and setting up my computer took the rest of the day. I&rsquo;ve spent the rest of my time since then arranging things in my office and configuring software on my computer. It&rsquo;s a long, slow process; I won&rsquo;t be done setting up until next week.</p><p>I immediately liked my office mate, Varun (rhymes with <em>maroon</em>); my development lead (my immediate boss), Joel; and my manager (my boss&rsquo;s boss), Dwayne. The team members that I&rsquo;ve met so far have been open and friendly too, so all in all, everything is off to a good start, I think.</p><p>It&rsquo;s exciting to sense the intelligence and capability that I&rsquo;m surrounded by now. I was thrilled by a conversation I had today with a team member about functional programming. I&rsquo;m not used to being around other people who share my passions and interests, especially within computation.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-14:/2008/11/14/starting-at-microsoft/</guid><link>https://willfaught.com/2008/11/14/starting-at-microsoft/</link><atom:link href="https://willfaught.com/2008/11/14/starting-at-microsoft/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 14 Nov 2008 15:33:00 -0800</pubDate><title>Starting At Microsoft</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>One reason I hesitated to move to Washington was because most of my friends and family are in California. I started college not knowing anyone, but joining a fraternity facilitated making friends and filled my schedule. Once again I&rsquo;m faced with starting over, and I wonder if Microsoft will play that role of friend maker and schedule filler. I moved up here expecting only to know my aunt and uncle, who live in Sequim (pronounced <em>squim</em> for some reason); Dan, who was in my fraternity and works here full time now; and Tom, with whom I worked on a school project and who works at Microsoft too. I plan to connect with them as much as I can, but I have to start looking at how I can start meeting new people and widening that circle of friends and expanding my network.</p><p>They emphasized networking a lot at Microsoft orientation, but it&rsquo;s not something I&rsquo;ve thought much about before. It&rsquo;s strange to me to walk around and see the people around me not as people, but as nodes of a vast web of personal connections. I see networking going three ways: I put in minimal effort, excessive effort, or just the right amount of effort. Too little and I worry that I&rsquo;m missing out on opportunities and experiences. Maybe if I had reached out more, I could have gotten that job, that invitation, or that date. Too much and people become facets of a diverse social life to be collected, cultivated, multiplied, and milked. Fat (job referrals) for the hibernating (unemployed) bear to burn during the cold winter. Just right and I&rsquo;m happy. I&rsquo;m not the most gifted social butterfly, so I doubt I&rsquo;ll overdo it. I need to work on pushing myself out there more.</p><p>On Sunday I went to Dan&rsquo;s to watch the Seahawks game with him and his family, who were friendly and interested in my job and my recent move from California. They invited me to go with them to dinner, but I had to decline to go to dinner with my other friend, Tom. Hopefully I can take them up on a dinner invitation another time. Tom, his friend S.G., and I ate at a local Thai restaurant later that evening. I ran into Tom and S.G. at the local gym a couple days later; big gym, small world. I&rsquo;m looking forward to visiting my aunt and uncle in Sequim on Saturday.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-11:/2008/11/11/connections/</guid><link>https://willfaught.com/2008/11/11/connections/</link><atom:link href="https://willfaught.com/2008/11/11/connections/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 11 Nov 2008 16:29:00 -0800</pubDate><title>Connections</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I drove to downtown Seattle yesterday to check out the Space Needle and the surrounding Seattle Center. I got the sense from my past visits here that natives don&rsquo;t really do this kind of stuff, so I thought I should get it out of the way before I&rsquo;m totally submerged in life here and would be too embarrassed to do it. The Needle is quite tall, which gave me a nice view of the sound and the cityscape below. The weather was overcast, but not rainy, and it was very windy up top. The elevator guide pointed out that we could see Mt. Rainier from the top, but I didn&rsquo;t really discern it. I also rode the monorail from the Seattle Center to the Westfield Shopping Center further downtown, which was a two-minute, four-dollar ride. There&rsquo;s a small amusement park at the Needle&rsquo;s base that was creepy because hardly anyone was there and most of the rides were shut down. I tried to check out some kind of sculpture park nearby, but it had already closed. My legs were aching by the time I got back to my car. All in all, a decent venture into the unknown.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/08/space-needle/47b8cf26b3127cce98548a381f9200000046100AbOGTdm3cM2Tg.16be4eba556650233dc15a2e25f5bf6fde5370a6bb19b67dfda4004884f54959.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">The Seattle Space Needle.</figcaption></figure></div></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-08:/2008/11/08/space-needle/</guid><link>https://willfaught.com/2008/11/08/space-needle/</link><atom:link href="https://willfaught.com/2008/11/08/space-needle/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 08 Nov 2008 18:46:00 -0800</pubDate><title>Space Needle</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My apartment has a TV and cable, so I was able to watch the CNN and Daily Show coverage on Election Day. I had to watch it by myself, but I talked with Mom on the phone between McCain&rsquo;s concession speech and Obama&rsquo;s acceptance speech and talked with and texted Heather later in the night.</p><p>I was so happy that Obama won! I couldn&rsquo;t stop smiling. I was surprised at and pleased with how gracious McCain&rsquo;s speech was, although I guess it&rsquo;s no surprise he&rsquo;d want to end on a good note, since he&rsquo;ll have to work with Obama as a senator. I was excited and gratified to see how Obama&rsquo;s election had touched so many other <a href=https://www.nytimes.com/slideshow/2008/11/05/world/1105-REACTS_index.html rel=external>parts</a>
of the <a href=https://thecaucus.blogs.nytimes.com/2008/11/05/reactions-from-around-the-world/ rel=external>world</a>
, especially Kenya. I try not to think about and see the world as if it revolved around my country, but the world&rsquo;s interest in our election was undeniable. It&rsquo;s quite humbling when you realize how many other national elections there are around the world all the time that Americans rarely hear about, much less care about. I&rsquo;m just glad it&rsquo;s all over.</p><p>I watched Obama&rsquo;s press conference on the economy today, which followed his earlier meeting with economic experts, and was again satisfied with the substance of his words, his poise, his intelligence, everything. I hope it pans out in the long run.</p><p>The <a href=https://www.southparkstudios.com/episodes/207897/ rel=external>South Park episode</a>
about the election was pretty funny.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-07:/2008/11/07/obama-wins/</guid><link>https://willfaught.com/2008/11/07/obama-wins/</link><atom:link href="https://willfaught.com/2008/11/07/obama-wins/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 07 Nov 2008 14:04:00 -0800</pubDate><title>Obama Wins!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I moved to Seattle! Yes, it finally happened. No, the thesis isn&rsquo;t done; I&rsquo;ll have to fly back when it&rsquo;s done to defend it. Seattle couldn&rsquo;t wait any longer. I would have written about this sooner, but I&rsquo;ve felt so tired in the evenings since I moved here. Moving is always such a chore. Thankfully Microsoft made the move very easy by shipping my belongings and car here, providing temporary housing and a rental car, and connecting me with a rental agent in the area. I decided to wait until I start work on Monday, November 10, to look at housing so I can talk to my coworkers about places and areas they recommend. Traffic is a big factor here, so talking to people in the know will be helpful.</p><h2 id=arrival>Arrival</h2><p>I flew from Sacramento to Seattle at 10 AM on Monday, November 3, and arrived just before noon. Picking up the <a href=https://www.edmunds.com/pictures/VEHICLE/2008/Pontiac/2008.pontiac.g6.20132241-396x249.jpg rel=external>rental car</a>
and finding the spot where I was to pick up my apartment keys went swimmingly. I couldn&rsquo;t check into my apartment until 5 PM, so I killed time in a nearby Starbucks. I used my iPhone&rsquo;s maps to find the Starbucks, which are usually very accurate, but they got the location for my apartment totally wrong, which left me driving around for almost an hour in the rainy gloom. Eventually exasperation drove me to open the envelope containing my apartment keys, where I found a map giving directions straight from the place where I had picked up my keys to my apartment, which, it turns out, was just down the street. I was tired, so I ordered pizza, unpacked, watched the election news, and went to bed.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=359 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/06/i-moved-to-seattle/47b8cf24b3127cce98548a47afb500000056100AbOGTdm3cM2Tg.1422dcb3d9b814e499fed0f6c1964fd6b805030517a78da13ef187af2c5027cb.jpg width=480></div></div><figcaption class="figure-caption mt-2 text-center">My apartment building.</figcaption></figure></div></div><h2 id=provisions>Provisions</h2><p>My apartment is fully furnished and lacked only a few necessary kitchen items. It came with single-serving portions of stuff like detergent, shampoo, dish soap, and the like and no food, so I had to go foraging for provisions. I split up the shopping for food, household necessities, and a few kitchen items over Tuesday and Wednesday.</p><h2 id=attire>Attire</h2><p>I found my wardrobe to be severely lacking, so I went on a shopping binge. I bought four pairs of shoes, two of them formal and dressy, since my last pair of black dress shoes maimed me. Men&rsquo;s Warehouse is awesome. The salesman who helped me tried talking me into a two-for-one deal on suits of any price, which sounded good, but I need to prepare myself mentally to spend $500 on clothes, so I had to put that on hold. I&rsquo;m going to call a friend who used to work there to see what he thinks. It can&rsquo;t hurt to have a suit, right? I just need to find excuses to wear it.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/06/i-moved-to-seattle/47b8cf24b3127cce98548a53afa100000056100AbOGTdm3cM2Tg.876219d28760b78f4cbd1a126aa63062c8c8020ad49326f281d2da40119516f9.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">New dress shoes.</figcaption></figure></div></div><h2 id=transportation>Transportation</h2><p>On Tuesday I went to the Department of Licensing to apply for a Washington driver license. Thankfully I didn&rsquo;t have to retake the driver test. It took about an hour to wait for my number to be called, as I expected, but when it was my turn I was told that I needed a proof of residency, which I hadn&rsquo;t been told before. I had to drive all the way home, get a letter, then drive all the way back and get back in another line (which was shorter, I&rsquo;ll give them that). I got my car emission tested today, so it&rsquo;s ship-shape. As soon as I receive the pink slip, I&rsquo;ll be ready to roll.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/06/i-moved-to-seattle/47b8cf24b3127cce98548a462e8400000056100AbOGTdm3cM2Tg.440aa77e7f1e4f5c204b6d1bdcb20c182a46de817a7e49a90295b7e7ebaf2874.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">My temporary ride.</figcaption></figure></div></div><h2 id=the-roads>The Roads</h2><p>The roads in Redmond are a little different than California&rsquo;s roads. A few things I&rsquo;ve observed:</p><ul><li>carpool lanes are on the right side,</li><li>low, yellow, triangular prisms used sporadically as lane dividers,</li><li>left turns often lead into two left turn lanes and a straight ahead lane,</li><li>lanes appear and disappear with little notice,</li><li>and lines are hard to discern and lanes are hard to follow at night.</li></ul><p>Driving here makes me nervous. More than once I&rsquo;ve made mistakes or felt that I was close to getting into an accident. I feel a little more confident now, though. I feel stupid that I&rsquo;m inexplicably having a difficult time adjusting to driving here.</p><p>At one point, the freeway leading from the airport to Redmond split three ways at once, which boggled my mind. It reminded me of the awkwardness of the left-sided off ramps in Santa Barbara. I think we&rsquo;re just wired to think of oncoming traffic being to the left of us so some kind of danger warning flares up when we start veering left.</p><h2 id=flora-and-weather>Flora And Weather</h2><p>The trees here are amazing! Most are broad-leafed, like Maples, and have turned yellow, orange, and red. I love driving down 8th St. because it&rsquo;s like driving through a park or colored tunnel. I tried to take pictures with my phone as safely as possible while driving. Some of the leaves have fallen and carpet the streets, but it doesn&rsquo;t look messy. There&rsquo;s no doubt that it&rsquo;s Fall here.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=480 referrerpolicy=no-referrer src=https://willfaught.com/2008/11/06/i-moved-to-seattle/47b8cf24b3127cce98548a43afb100000056100AbOGTdm3cM2Tg.ffc8cfab6ea15948900e82c4609d37b21da4924c52d239dfdcb411a4bb5138c3.jpg width=360></div></div><figcaption class="figure-caption mt-2 text-center">Fall Leaves</figcaption></figure></div></div><p>The weather has been relatively mild, with sporadic rain showers and drizzle, some occasional sunshine and blue sky, but mostly gray clouds. It&rsquo;s cold day and night, but more so at night. Thankfully I bought a few warm things before the trip here!</p><h2 id=touring>Touring</h2><p>I&rsquo;ve been focused on getting acclimated and settled since I arrived, so I haven&rsquo;t had any time to see the sights or explore yet. I&rsquo;m planning on driving to downtown Seattle tomorrow to check out the Space Needle and the Seattle Center and anything else worth seeing in that area of downtown. I had dinner tonight with a friend of mine, Dan, from Cal Poly and Delta Upsilon who lives in this area too. We talked about hanging out more, and he might be interested in doing some touristy things with me. I can&rsquo;t wait to see it all! I plan to contact and hope to connect with my aunt and uncle, who live in the area, soon.</p><h2 id=microsoft>Microsoft</h2><p>I checked out the building where I&rsquo;ll report on my first day today. It&rsquo;s actually very close to my apartment. I bought several dressy items of clothing, but I&rsquo;ll probably dress somewhat casually for my first day. What can I say? It&rsquo;s the way of the programmer, and of Microsoft. I&rsquo;ve been trying to read through a book on the technology my department builds, but I doubt I&rsquo;ll be able to finish it before I start. It&rsquo;s probably not immediately critical anyway. I&rsquo;m really excited to start work, to meet new people and hopefully make new friends, and also to possibly work on something interesting and challenging. We&rsquo;ll see.</p><h2 id=thesis>Thesis</h2><p>As you might expect, I haven&rsquo;t been able to focus on my thesis much the past two weeks. Now that things have settled down somewhat here, I&rsquo;ll be able to pick up where I left off. It&rsquo;s always felt like two steps forward, one step back, but I just keep my head down and focus on what&rsquo;s in front of me. I think that if I paid attention to my overall progress, I&rsquo;d have gone crazy by now.</p><h2 id=pictures>Pictures</h2><p>I&rsquo;ve started an online collection of my pictures that I will add to periodically at <a href=https://faught.shutterfly.com rel=external>faught.shutterfly.com</a>
. I just unpacked my digital camera, so the pictures should on average be of better quality from now on. Check there and here for further updates to my new life in Seattle!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-11-06:/2008/11/06/i-moved-to-seattle/</guid><link>https://willfaught.com/2008/11/06/i-moved-to-seattle/</link><atom:link href="https://willfaught.com/2008/11/06/i-moved-to-seattle/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 06 Nov 2008 16:11:00 -0800</pubDate><title>I Moved To Seattle!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was reinstalling Windows for a friend the other day. After the installation, I upgraded everything. Service Pack 2 was giving me some trouble because every time I tried to install it, Windows would freeze half way through. I tried it two or three times before I decided to bring up the Task Manager to watch the processor load as the installer worked. Poof! Like a charm, the problem disappeared. Cooincidence? I think not. It&rsquo;s like Windows knows when you&rsquo;re really watching, sits up straight, and gets to work, and then slouches again when you turn away.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-10-19:/2008/10/19/task-manager-gets-things-done/</guid><link>https://willfaught.com/2008/10/19/task-manager-gets-things-done/</link><atom:link href="https://willfaught.com/2008/10/19/task-manager-gets-things-done/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 19 Oct 2008 08:24:00 -0700</pubDate><title>Task Manager Gets Things Done</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>For a while I&rsquo;ve thought that creating artificial intelligence would be straightforward. Regardless of whether the nature of human intelligence will ever be understood, eventually every detail of the physiology of the human brain will be discovered and known. Computers can know the current state of every atom in a brain and compute its next state, thereby simulating the brain. Computers don&rsquo;t need to understand human intelligence to simulate it, they need only to simulate a brain, and intelligence will arise from that.</p><p>Could that work? Contemporary computers are manifestations of a model of computation called a register machine, which is equivalent in computational capability to a Turing machine. Turing machines are well understood to be incapable of several important tasks, such as reliably determining whether another Turing machine will in fact do what it was meant to do, or if it would ever finish doing it. Human intelligence can compute those things; it is capable of computing things that Turing machines cannot. If Turing machines (computers) could simulate a brain, and thus simulate human intelligence, then that human intelligence, and thus Turing machines, could compute things that Turing machines cannot, which is a contradiction. Therefore Turing machines, and thus computers, cannot simulate human intelligence by simulating brains.</p><p>Turing machines can simulate brains, but not human intelligence. What&rsquo;s the difference between how Turing machines simulate brains and how real brains work? One difference is that the state of real brains changes concurrently, whereas Turing machines must compute brain states consecutively: one atom at a time. Turing machines have no sense of time. Perhaps human intelligence requires brain states to be computed concurrently. Perhaps human intelligence arises because signals that are determined concurrently cross between the brain hemispheres and feed into each other&rsquo;s next state like a feedback loop.</p><p>Computers can simulate concurrency through hardware or do concurrency with multiple cores. Perhaps their concurrency capability renders them more powerful than Turing machines.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-10-12:/2008/10/12/artificial-intelligence/</guid><link>https://willfaught.com/2008/10/12/artificial-intelligence/</link><atom:link href="https://willfaught.com/2008/10/12/artificial-intelligence/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 12 Oct 2008 16:34:00 -0700</pubDate><title>Artificial Intelligence</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=http://www.paulgraham.com/hp.html rel=external>Choice quotations</a>
:</p><blockquote><p>What hackers and painters have in common is that they&rsquo;re both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They&rsquo;re not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.</p></blockquote><blockquote><p>Now I realize I was mistaken. Hackers need to understand the theory of computation about as much as painters need to understand paint chemistry. You need to know how to calculate time and space complexity and about Turing completeness. You might also want to remember at least the concept of a state machine, in case you have to write a parser or a regular expression library. Painters in fact have to remember a good deal more about paint chemistry than that.</p></blockquote><blockquote><p>Realizing this has real implications for software design. It means that a programming language should, above all, be malleable. A programming language is for thinking of programs, not for expressing programs you&rsquo;ve already thought of. It should be a pencil, not a pen. Static typing would be a fine idea if people actually did write programs the way they taught me to in college. But that&rsquo;s not how any of the hackers I know write programs. We need a language that lets us scribble and smudge and smear, not a language where you have to sit with a teacup of types balanced on your knee and make polite conversation with a strict old aunt of a compiler.</p></blockquote><blockquote><p>A page of formulas just looks so impressive. (Tip: for extra impressiveness, use Greek variables.) And so there is a great temptation to work on problems you can treat formally, rather than problems that are, say, important.</p></blockquote><blockquote><p>This seems to be the default plan in big companies. They do it because it decreases the standard deviation of the outcome. Only a small percentage of hackers can actually design software, and it&rsquo;s hard for the people running a company to pick these out. So instead of entrusting the future of the software to one brilliant hacker, most companies set things up so that it is designed by committee, and the hackers merely implement the design.</p></blockquote><blockquote><p>It seems surprising to me that any employer would be reluctant to let hackers work on open-source projects. At Viaweb, we would have been reluctant to hire anyone who didn&rsquo;t. When we interviewed programmers, the main thing we cared about was what kind of software they wrote in their spare time. You can&rsquo;t do anything really well unless you love it, and if you love to hack you&rsquo;ll inevitably be working on projects of your own.</p></blockquote><blockquote><p>The right tools can help us avoid this danger. A good programming language should, like oil paint, make it easy to change your mind. Dynamic typing is a win here because you don&rsquo;t have to commit to specific data representations up front. But the key to flexibility, I think, is to make the language very abstract. The easiest program to change is one that&rsquo;s very short.</p></blockquote><blockquote><p>Relentlessness wins because, in the aggregate, unseen details become visible. When people walk by the portrait of Ginevra de Benci, their attention is often immediately arrested by it, even before they look at the label and notice that it says Leonardo da Vinci. All those unseen details combine to produce something that&rsquo;s just stunning, like a thousand barely audible voices all singing in tune.</p></blockquote><blockquote><p>It turns out that looking at things from other people&rsquo;s point of view is practically the secret of success. It doesn&rsquo;t necessarily mean being self-sacrificing. Far from it. Understanding how someone else sees things doesn&rsquo;t imply that you&rsquo;ll act in his interest; in some situations&ndash; in war, for example&ndash; you want to do exactly the opposite.</p></blockquote><blockquote><p>Part of what software has to do is explain itself. So to write good software you have to understand how little users understand. They&rsquo;re going to walk up to the software with no preparation, and it had better do what they guess it will, because they&rsquo;re not going to read the manual. The best system I&rsquo;ve ever seen in this respect was the original Macintosh, in 1985. It did what software almost never does: it just worked.</p></blockquote><blockquote><p>Source code, too, should explain itself. If I could get people to remember just one quote about programming, it would be the one at the beginning of <em>Structure and Interpretation of Computer Programs.</em></p></blockquote><blockquote><p>Programs should be written for people to read, and only incidentally for machines to execute.</p></blockquote><blockquote><p>What we can say with some confidence is that these are the glory days of hacking. In most fields the great work is done early on. The paintings made between 1430 and 1500 are still unsurpassed. Shakespeare appeared just as professional theater was being born, and pushed the medium so far that every playwright since has had to live in his shadow. Albrecht Durer did the same thing with engraving, and Jane Austen with the novel.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-10-09:/2008/10/09/hackers-and-painters/</guid><link>https://willfaught.com/2008/10/09/hackers-and-painters/</link><atom:link href="https://willfaught.com/2008/10/09/hackers-and-painters/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 09 Oct 2008 17:47:00 -0700</pubDate><title>Hackers And Painters</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I first heard the song <a href=https://www.last.fm/music/The+Crystal+Method/_/Name+of+the+Game rel=external>Name Of The Game</a>
by Crystal Method in the movie Tropic Thunder. It&rsquo;s an awesome song and it&rsquo;s great to play on a loop because the end and beginning meld together pretty well. I&rsquo;m jamming to it right now.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-10-09:/2008/10/09/good-song-to-loop/</guid><link>https://willfaught.com/2008/10/09/good-song-to-loop/</link><atom:link href="https://willfaught.com/2008/10/09/good-song-to-loop/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 09 Oct 2008 16:57:00 -0700</pubDate><title>Good Song To Loop</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My cat has been sneezing frequently for the past week or so. Is that a problem? Any cat experts out there?</p><p>Damn, I thought sneeze was spelled &ldquo;sneaze.&rdquo;</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-10-09:/2008/10/09/sneezy-cat/</guid><link>https://willfaught.com/2008/10/09/sneezy-cat/</link><atom:link href="https://willfaught.com/2008/10/09/sneezy-cat/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 09 Oct 2008 16:48:00 -0700</pubDate><title>Sneezy Cat</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I saw the movie <em><a href="https://www.reelviews.net/php_review_template.php?identifier=1349" rel=external>Blindness</a>
</em>this evening with Heather. The characters were believable, the pacing was good, the plot was somewhat unoriginal and obvious, and there were a couple great effects, although the whiteout effect is overused. It&rsquo;s quite good overall.</p><p>The main character annoyed me in the wards where she didn&rsquo;t use her sight more to her advantage. How about just taking the gun from the leader when he&rsquo;s not looking? Or kick their walking canes out from under them. This isn&rsquo;t rocket science here. She didn&rsquo;t try anything until after she prostituted herself. If you&rsquo;re going to be desperate enough to kill, I&rsquo;d think it would happen before you submit to anything as degrading as that.</p><p>I was pleasantly surprised by the perspective given by the eye patch character near the end of the film of the ways in which the common blindness had brought people closer together, as with their small &ldquo;family.&rdquo; Until that point, much of what we had seen was how the blindness had driven people apart and reduced them to desperate savages, so it left us with a warm, fuzzy feeling that maybe humanity isn&rsquo;t lost forever.</p><p>I thought a couple effects worked very well. The first was a blind boy who walked toward the camera and stumbled into a table not visible to him or us, but at that moment the table flashes into view for us. It&rsquo;s a perfect analog for how we form images in our heads of our dark surroundings and update them as we stub our toes or bang our knees into unknown objects. The second (spoiler alert) represented someone regaining their sight: a blind sheet of white that resolved into sight of coffee darkening the cream in a cup. Those moments alone made up for the effect excesses elsewhere in the film.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-10-08:/2008/10/08/blindness/</guid><link>https://willfaught.com/2008/10/08/blindness/</link><atom:link href="https://willfaught.com/2008/10/08/blindness/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 08 Oct 2008 17:23:00 -0700</pubDate><title>Blindness</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Recently a paragraph I had written was described as a &ldquo;grievous offender.&rdquo; It&rsquo;s such a colorful phrase that I&rsquo;m not even shamed by it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-09-29:/2008/09/29/grievous-offender/</guid><link>https://willfaught.com/2008/09/29/grievous-offender/</link><atom:link href="https://willfaught.com/2008/09/29/grievous-offender/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 29 Sep 2008 13:29:00 -0700</pubDate><title>Grievous Offender</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m very intrigued by alpha and beta versions of video games. It&rsquo;s fascinating to see early incarnations of the final product. It&rsquo;s like discovering a secret world, the backstage of the game world, that few actually witness. Granted, most of it is rough draft quality and incomplete, but it&rsquo;s always interesting to see what might have been. You can find tons of screen shots and videos of alpha and beta versions of one of my favorite games, <a href=https://en.wikipedia.org/wiki/The_Legend_of_Zelda:_Ocarina_of_Time rel=external>The Legend Of Zelda: Ocarina Of Time</a>
. For example:</p><p>I think a compelling game to play would be one that incorporated these alternate versions of itself into the main game. Game characters, including the one you play, might stumble into another universe or a higher reality that sandboxes &ldquo;normal&rdquo; reality, and you can explore and discover different, distorted versions of yourselves and your world. Perhaps the characters could deduce they&rsquo;re programs in a computer by observing that the laws of physics aren&rsquo;t consistently applied. It&rsquo;d be funny if they started worshipping the almighty Evaluator for giving them life and providing for their reality. I have so many more cool ideas, but I&rsquo;d hate to give them all away in case I decide to make a game like this some day.</p><p>It&rsquo;s a shame that it takes so much effort to make a video game, especially in these days of high production values. If you&rsquo;re a writer, you can type all you want at home on your own. If you want to make a video game, you have to enlist the help of many people. I&rsquo;m actually surprised there isn&rsquo;t a popular open source project and community that solves this problem already.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-09-25:/2008/09/25/a-video-game-idea/</guid><link>https://willfaught.com/2008/09/25/a-video-game-idea/</link><atom:link href="https://willfaught.com/2008/09/25/a-video-game-idea/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 25 Sep 2008 16:57:00 -0700</pubDate><title>A Video Game Idea</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I went with Heather to Discovery Kingdom (formerly Marine World) in Vallejo last weekend. We had a lot of fun. They have several roller coasters in addition to the animal displays and shows that make for an entertaining time. I was surprised at how commercialized it was, though. There were ads everywhere you looked. It seemed like everything was sponsored or brought to us by companies other than Six Flags. They even interrupted the whale show for a thirty second Toyota commercial to play on the jumbo video screen! What is going on here? Why do they need advertising if they&rsquo;re charging us to get in and for the food we buy? Is this a cheap way to lower the ticket prices? That would be a pretty low thing to do, since there&rsquo;s no expectation of that sort of thing. It would be like going to a movie theater and being forced to sit through an intermission for showing you commercials. I thought the point of paying for something was so you don&rsquo;t have to deal with ads. It&rsquo;s like I&rsquo;m being charged twice: once for the ticket, once for the annoyance of the ads.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-09-17:/2008/09/17/this-life-brought-to-you-by-toyota/</guid><link>https://willfaught.com/2008/09/17/this-life-brought-to-you-by-toyota/</link><atom:link href="https://willfaught.com/2008/09/17/this-life-brought-to-you-by-toyota/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 17 Sep 2008 19:39:00 -0700</pubDate><title>This Life Brought To You By Toyota</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>From time to time I hear people characterize human works as phallic symbols, as if the single unifying motivation for the (assumed) men who created these things were their penises. Do people really buy into that kind of Freudian analysis? The more reasonable explanation, in my opinion, is that things worth constructing, like buildings, tools, and monuments, occupy volume and thus take up space, stand above ground, and are probably tall. If the genital symbolism were true, but women had done most of the building, we&rsquo;d all be dwelling in the darkness of pits, tunnels, and underground caverns, digging pot holes to worship our gods, which is ridiculous. If it&rsquo;s a giant statue of a penis, fine, I&rsquo;ll grant you that one, but otherwise, use some common sense: it&rsquo;s cool to build tall shit.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-09-15:/2008/09/15/human-works-as-phallic-symbols/</guid><link>https://willfaught.com/2008/09/15/human-works-as-phallic-symbols/</link><atom:link href="https://willfaught.com/2008/09/15/human-works-as-phallic-symbols/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 15 Sep 2008 13:37:00 -0700</pubDate><title>Human Works As Phallic Symbols</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Every word in a title should be capitalized. It&rsquo;s an acceptable form of capitalization and it&rsquo;s super easy to remember. I don&rsquo;t understand why most people don&rsquo;t do it that way. Otherwise you have to memorize all these exceptions for which words can and can&rsquo;t be capitalized. Who can remember all of that? What about &ldquo;in,&rdquo; &ldquo;to,&rdquo; or &ldquo;on?&rdquo; It&rsquo;s just not obvious.</p><p>It&rsquo;s like putting a comma after the second-to-last item in a list. I remember being told in school that you can omit the comma in some situations, but not others, or you could always put it there and it would always be correct. I stopped listening after that, decided to just always put it there, and kept playing Oregon Trail or whatever. Easy.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-09-14:/2008/09/14/capitalization-for-titles/</guid><link>https://willfaught.com/2008/09/14/capitalization-for-titles/</link><atom:link href="https://willfaught.com/2008/09/14/capitalization-for-titles/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 14 Sep 2008 16:38:00 -0700</pubDate><title>Capitalization For Titles</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I don&rsquo;t understand the difference between categories and tags. Why can&rsquo;t I just have tags? Having categories makes me try to come up with two dozen descriptive things that I could possibly write about. Tags I can come up with as I go. Also, where&rsquo;s the automatic upgrade feature? Selective copying is not cool.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-09-04:/2008/09/04/wordpress-question-and-feature-request/</guid><link>https://willfaught.com/2008/09/04/wordpress-question-and-feature-request/</link><atom:link href="https://willfaught.com/2008/09/04/wordpress-question-and-feature-request/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 04 Sep 2008 11:39:00 -0700</pubDate><title>Wordpress Question And Feature Request</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Windows has a way of getting under my skin that no other operating system can. It has a unique blend of interface freezing, printer problems, entropy, and slowdown. It drives me crazy. Actually, on the interface freezing, I&rsquo;ve noticed that most major OS interfaces experience slow down. Is it so hard to give precedence to windows, widgets, and the mouse? Gah. I&rsquo;m actually surprised more people haven&rsquo;t caught onto the fact that life on Mac OS is simpler. I guess people stick with what they know.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-09-01:/2008/09/01/i-could-have-killed-windows/</guid><link>https://willfaught.com/2008/09/01/i-could-have-killed-windows/</link><atom:link href="https://willfaught.com/2008/09/01/i-could-have-killed-windows/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 01 Sep 2008 15:39:00 -0700</pubDate><title>I Could Have Killed Windows</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s been so great to be home these past few weeks. Before I came here I was working on my thesis every day, worrying about it, stressed out, cranky, crazy. That&rsquo;s no way to live. For the first couple weeks back I didn&rsquo;t really think about the work much and it was heaven. I can&rsquo;t believe how much stress can take over your life and make you miserable. I should probably look into ways of dealing with my stress, because I was not going about it in a healthy way. At one point I was waking up at 4 PM and falling asleep at 6 AM with the help of sleeping pills, for crying out loud! Graduate school is indeed not for the faint of heart.</p><p>Now I&rsquo;m looking into the future and Microsoft is staring back at me. Now I have to resume my work until it&rsquo;s finished for good. I was waiting around for feedback from my adviser for a long time and every one thought it sucked, but truthfully I didn&rsquo;t mind much because it meant I could put off the work a little longer. Now I have feedback for my introduction and I groan at the prospect of wading through all the tedious bullshit. They keep telling me the degree is worth it. It&rsquo;s worth it. It&rsquo;s worth it. It&rsquo;s worth it?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-08-26:/2008/08/26/thesis-detox/</guid><link>https://willfaught.com/2008/08/26/thesis-detox/</link><atom:link href="https://willfaught.com/2008/08/26/thesis-detox/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 Aug 2008 18:24:00 -0700</pubDate><title>Thesis Detox</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ah!  It&rsquo;s good to be done with that.  It was such a burden, having that hanging over my head.  Kind of like the ring of power, except not really cool, or gold.  Looking back, I can&rsquo;t believe how long it took to write.  Sadly, there&rsquo;s still more to do, too.  I&rsquo;m waiting to get feedback from my adviser, after which I&rsquo;ll probably have to make some changes.  I still have to finish up a coding project that goes along with the thesis document, but hopefully that won&rsquo;t be too much more work.  Then I have to drive back to SLO at some point to defend the thing.  I decided to move home now since there&rsquo;s no point in sitting around SLO for almost a month before I can defend.  I&rsquo;m looking forward to seeing my friends at home.  I wish there was more summer, I feel like I&rsquo;ve missed out on the majority of it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-08-08:/2008/08/08/i-finished-the-rough-draft/</guid><link>https://willfaught.com/2008/08/08/i-finished-the-rough-draft/</link><atom:link href="https://willfaught.com/2008/08/08/i-finished-the-rough-draft/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 08 Aug 2008 08:56:00 -0700</pubDate><title>I Finished The Rough Draft</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Ikkyu, the Zen master, was very clever even as a boy. His teacher had a precious teacup, a rare antique. Ikkyu happened to break this cup and was greatly perplexed. Hearing the footsteps of his teacher, he held the pieces of the cup behind him. When the master appeared, Ikkyu asked: &ldquo;Why do people have to die?&rdquo;</p><p>&ldquo;This is natural,&rdquo; explained the older man. &ldquo;Everything has to die and has just so long to live.&rdquo;</p><p>Ikkyu, producing the shattered cup, added: &ldquo;It was time for your cup to die.&rdquo;</p><p>From <em>Zen Flesh, Zen Bones</em>.</p><p>This made me laugh. Clever kid. I&rsquo;ll try to remember this technique the next time I do something bad.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-07-18:/2008/07/18/time-to-die/</guid><link>https://willfaught.com/2008/07/18/time-to-die/</link><atom:link href="https://willfaught.com/2008/07/18/time-to-die/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 18 Jul 2008 18:25:00 -0700</pubDate><title>Time To Die</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Sozan, a Chinese Zen master, was asked by a student: &ldquo;What is the most valuable thing in the world?&rdquo;</p><p>The master replied: &ldquo;The head of a dead cat.&rdquo;</p><p>&ldquo;Why is the head of a dead cat the most valuable thing in the world?&rdquo; inquired the student.</p><p>Sozan replied: &ldquo;Because no one can name its price.&rdquo;</p><p>From <em>Zen Flesh, Zen Bones</em>.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-07-17:/2008/07/17/the-most-valuable-thing-in-the-world/</guid><link>https://willfaught.com/2008/07/17/the-most-valuable-thing-in-the-world/</link><atom:link href="https://willfaught.com/2008/07/17/the-most-valuable-thing-in-the-world/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 17 Jul 2008 21:30:00 -0700</pubDate><title>The Most Valuable Thing In The World</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Apple Boss: Hey font guy, are you done yet so we can fire you?</p><p>Apple Font Guy: Err&mldr;no! I still have to do the&mldr;um&mldr;Braille font! Yeah, and the&mldr;um&mldr;Cherokee font! I&rsquo;ll get back to you.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-07-08:/2008/07/08/job-security/</guid><link>https://willfaught.com/2008/07/08/job-security/</link><atom:link href="https://willfaught.com/2008/07/08/job-security/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 08 Jul 2008 15:34:00 -0700</pubDate><title>Job Security</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;m going to puke if I read about &ldquo;<a href=https://en.wikipedia.org/wiki/Cloud_computing rel=external>the cloud</a>
&rdquo; or &ldquo;cloud computing&rdquo; one more time. It&rsquo;s become popular in the past half year but it doesn&rsquo;t describe anything new. Sometimes the computer tech industry has more ridiculous fads than fashion.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-07-06:/2008/07/06/the-cloud/</guid><link>https://willfaught.com/2008/07/06/the-cloud/</link><atom:link href="https://willfaught.com/2008/07/06/the-cloud/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 06 Jul 2008 03:29:00 -0700</pubDate><title>The Cloud</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I went to the Pismo fireworks show for the Fourth of July with Esther. I had never been before, but our timing was perfect. It was pretty cool, there were tons of people there, on the street near Splash and on the beach on either side of the pier. The place was pretty well lighted and there was plenty of space to sit on the beach. The fireworks were launched from the end of the pier and they seemed to explode pretty close to the ground. A few sparks seemed to almost hit the ocean before disappearing. The finale was pretty cool to watch because they showered sparks from the pier railings down to the water like a curtain of fire. There were tons of illegal fireworks too, which helped fill the gaps before and after the main show. We had barbecued earlier that afternoon, so it was a pretty good fourth. I hope everyone had fun.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2008-07-05:/2008/07/05/happy-fourth-of-july/</guid><link>https://willfaught.com/2008/07/05/happy-fourth-of-july/</link><atom:link href="https://willfaught.com/2008/07/05/happy-fourth-of-july/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 05 Jul 2008 20:18:00 -0700</pubDate><title>Happy Fourth Of July!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The SLO heat wave has thankfully faded away. I think it&rsquo;s safe to remove my lemonade IV drip now. I don&rsquo;t think I could have taken another day of 100+ degree heat. It&rsquo;s terrible when it&rsquo;s so hot you sweat without even moving. I envy Hawaiians, you can get away with walking around in your swim suit in public all day long without drawing strange looks. I&rsquo;ve always favored hot weather over cold, but I guess it&rsquo;s true that it&rsquo;s easier to overcome cold than heat. Fans are the greatest invention ever. I tried our AC, but apparently it just blows regular air. It&rsquo;s cool at night again now. I never thought I&rsquo;d welcome the cold nights here. Unsurprisingly, the coldest place I could find in SLO was the grad lab. It was about a thirty-degree difference between the lab and outside. Talk about heaven!</p><p>My house mates got back into town today from a week-long camping trip. It sounded like fun; I wish I could go camping too. It&rsquo;s been so long since I&rsquo;ve done the real thing with the Boy Scouts. I miss swimming in a lake, building camp fires, and exploring the country side. Maybe one day soon.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-06-23:/2008/06/23/ill-live-to-see-another-day/</guid><link>https://willfaught.com/2008/06/23/ill-live-to-see-another-day/</link><atom:link href="https://willfaught.com/2008/06/23/ill-live-to-see-another-day/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Jun 2008 05:40:00 -0700</pubDate><title>I’ll Live To See Another Day</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve started learning a theorem proving tool to help me with my thesis. It&rsquo;s called <a href=https://coq.inria.fr rel=external>Coq</a>
, which has got to be the most unfortunate name I can think of. I think the creators are French, and coq means cock, as in rooster, in French. Why rooster? I have no idea. Why does anyone name anything what they do?</p><p>I wonder which seemingly-innocent English words mean something equally awkward in other languages?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-06-21:/2008/06/21/coq-master/</guid><link>https://willfaught.com/2008/06/21/coq-master/</link><atom:link href="https://willfaught.com/2008/06/21/coq-master/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 21 Jun 2008 19:16:00 -0700</pubDate><title>Coq Master</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I saw <em>The Incredible Hulk</em> tonight and it was pretty much what I expected: light on story, heavy on action. The action scenes looked great, especially the scene on a campus. The end action scene looked too CGI-ish and I kept noticing it. I was looking forward to seeing another movie with Edward Norton in it since he&rsquo;s usually good (Fight Club!), but he seemed kind of wasted on this movie. His character, Banner, was flat and uninteresting. He did a good job with what he had to work with, but it still left me wanting something more. Overall a good summer action flick without a lot of depth. (Spoiler!) I&rsquo;m interested in seeing where they go with bringing Iron Man into the mix. (End spoiler.)</p><p>I always cringe when I watch a movie preview and at the end they show a domain name dedicated to the movie, such as <a href=https://www.transformersmovie.com/ rel=external>transformersmovie.com</a>
. They probably get, what, a couple hundred hits before the movie releases? Meanwhile they&rsquo;re polluting the domain namespace. So messy. What&rsquo;s wrong with transformers.studio.com?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-06-20:/2008/06/20/the-incredible-hulk/</guid><link>https://willfaught.com/2008/06/20/the-incredible-hulk/</link><atom:link href="https://willfaught.com/2008/06/20/the-incredible-hulk/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 20 Jun 2008 17:25:00 -0700</pubDate><title>The Incredible Hulk</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Battlestar Galactica is the best TV show I watch right now. It never fails to entertain. God I love that show. The mid-season finale had an incredible ending. I think it&amp;rsquo;s a better show than Lost, even though I consider Lost my favorite show. BSG is a remake of a TV show made decades ago, but they completely transformed it. The writing is incredible. Do yourself a favor and check it out.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2008-06-19:/2008/06/19/what-a-finale/</guid><link>https://willfaught.com/2008/06/19/what-a-finale/</link><atom:link href="https://willfaught.com/2008/06/19/what-a-finale/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 19 Jun 2008 06:36:00 -0700</pubDate><title>What A Finale!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>From <a href=https://web.archive.org/web/20120119203603/http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html rel=external>Structure And Interpretation Of Computer Programs</a>
:</p><blockquote><p>In a similar way, we can regard the evaluator as a very special machine that takes as input a description of a machine. Given this input, the evaluator configures itself to emulate the machine described. For example, if we feed our evaluator the definition of factorial, the evaluator will be able to compute factorials.</p><p>From this perspective, our evaluator is seen to be a universal machine. It mimics other machines when these are described as Lisp programs. This is striking. Try to imagine an analogous evaluator for electrical circuits. This would be a circuit that takes as input a signal encoding the plans for some other circuit, such as a filter. Given this input, the circuit evaluator would then behave like a filter with the same description. Such a universal electrical circuit is almost unimaginably complex. It is remarkable that the program evaluator is a rather simple program.</p></blockquote><p>I see the light! (It&rsquo;s full of stars!)</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-06-17:/2008/06/17/my-lisp-enlightenment/</guid><link>https://willfaught.com/2008/06/17/my-lisp-enlightenment/</link><atom:link href="https://willfaught.com/2008/06/17/my-lisp-enlightenment/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 17 Jun 2008 16:54:00 -0700</pubDate><title>My Lisp Enlightenment</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I can&rsquo;t believe graduation came and went already, it all happened so fast. I was so focused on my thesis work that I barely lifted my head to watch the date approach. It&rsquo;s weird to go through the ceremony and celebrate with friends and family knowing that I&rsquo;m not really done, that there&rsquo;s more work to do. But I feel close, I think there&rsquo;s only a few weeks left before I&rsquo;m done. The end seemed to keep slipping out of my grasp. I wonder if it will be easier or harder to focus on my work with my roommate moved away for the summer and my other house mates gone for the week?</p><p>I snuck in a movie this weekend while my parents were here. I saw Kung Fu Panda with Michelle, and we both loved it. Go and see it, it&rsquo;s hilarious!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-06-17:/2008/06/17/graduation-snuck-up-on-me/</guid><link>https://willfaught.com/2008/06/17/graduation-snuck-up-on-me/</link><atom:link href="https://willfaught.com/2008/06/17/graduation-snuck-up-on-me/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 17 Jun 2008 08:37:00 -0700</pubDate><title>Graduation Snuck Up On Me</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Some people like to work on their computers with the lights off, and I can&rsquo;t for the life of me understand why or come to like it. You can&rsquo;t very well see the keyboard, your desk, or anything really. You have to squint into a bright light bulb for hours at a time, which I&rsquo;ve heard isn&rsquo;t good for your eyes, and it doesn&rsquo;t seem to actually make the monitor easier to look at. I&rsquo;ve seen offices partitioned into &ldquo;light&rdquo; and &ldquo;dark&rdquo;, and it&rsquo;s just silly.</p><p>If I ever get stuck working in a dark office, I&rsquo;ll bring my own lighting and force anyone who wants to enter my office or cubicle to don the sunglasses and unfold the umbrella I will provide them to help shelter them from the unholy rays shining down upon them. The least I can do is be sensitive to their condition.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-04-28:/2008/04/28/light-vs.-dark/</guid><link>https://willfaught.com/2008/04/28/light-vs.-dark/</link><atom:link href="https://willfaught.com/2008/04/28/light-vs.-dark/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 28 Apr 2008 06:04:00 -0700</pubDate><title>Light Vs. Dark</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>When a TV show loses an actor or actress, the writers have to replace their character with a new one and make sure it&rsquo;s all consistent with the plot. This takes valuable time away from what could have otherwise been a kick-ass space battle.</p><p>I&rsquo;d be too impatient to artfully work around a change in cast. I wonder if you could get away with doing a half-assed job of replacing the actor or actress but essentially keep the character the same. You could introduce the new character, make a lame attempt to flesh them out for that episode, then forget all that and write the new character just like the old one: same personality, same way of speaking, same past, knowledge, etc. You&rsquo;d just pretend that nothing really happened and continue on. It&rsquo;d be hilarious!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-04-23:/2008/04/23/they-wouldnt-be-missed/</guid><link>https://willfaught.com/2008/04/23/they-wouldnt-be-missed/</link><atom:link href="https://willfaught.com/2008/04/23/they-wouldnt-be-missed/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 23 Apr 2008 14:53:00 -0700</pubDate><title>They Wouldn’t Be Missed</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Today&rsquo;s operating systems are horribly out of date. They all follow the same process and file descriptor model and never really change. They may add new services or interfaces over time, but never do their core program semantics change enough to break backwards compatibility.</p><p>They all follow the process and file descriptor model, where processes are conceptually functions that map input values to output values and file descriptors conceptually compose functions by connecting function outputs to function inputs (also known as filtering). Functions and function composition are powerful constructs, but their underlying mechanisms are less than ideal. Functions can have only one input parameter (standard input). File descriptors force users to do the heavy lifting of reading and writing data. Software components are isolated in separate processes that prevent them from being reused.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-04-08:/2008/04/08/the-state-of-operating-systems/</guid><link>https://willfaught.com/2008/04/08/the-state-of-operating-systems/</link><atom:link href="https://willfaught.com/2008/04/08/the-state-of-operating-systems/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 08 Apr 2008 18:23:00 -0700</pubDate><title>The State Of Operating Systems</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It&rsquo;s a shame how much software is rewritten all the time. Incompatibilities of language, interface, and execution platform and the proprietary nature of most software development seem to have doomed us to forever reinvent the software wheel. The number of linked list implementations out there must be staggering. In a perfect world, someone would decide a linked list would be a nice thing and implement it, and then everyone else would use that one implementation from then on. Sadly, the reality of software today is that one person&rsquo;s implementation of even a very generic data structure probably won&rsquo;t satisfy the needs of other people. There&rsquo;s a missing link in the software systems we use that would let us create abstractions that anyone can reuse for their own needs.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-04-08:/2008/04/08/recode-repeat/</guid><link>https://willfaught.com/2008/04/08/recode-repeat/</link><atom:link href="https://willfaught.com/2008/04/08/recode-repeat/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 08 Apr 2008 17:25:00 -0700</pubDate><title>Recode, Repeat</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Damn this San Luis Obispo weather! It&rsquo;s always stabbing me in the back. It was supposed to be 65 degrees today, it&rsquo;s actually 61 degrees right now, but I&rsquo;m hot as hell in these pants, shoes, and long-sleeved shirt. I can&rsquo;t win.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-04-07:/2008/04/07/sneaky-weather/</guid><link>https://willfaught.com/2008/04/07/sneaky-weather/</link><atom:link href="https://willfaught.com/2008/04/07/sneaky-weather/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 07 Apr 2008 08:15:00 -0700</pubDate><title>Sneaky Weather</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I bought the Nintendo Wii game <a href=https://en.wikipedia.org/wiki/Super_Mario_Galaxy rel=external><em>Super Mario Galaxy</em></a>
when it was released and I&rsquo;ve almost finished it (ten stars left to get). It&rsquo;s a superb game, with beautifully-executed graphics, sound, game play, and level design (IGN gave it <a href=https://wii.ign.com/articles/833/833298p1.html rel=external>9.7/10</a>
). It&rsquo;s the best game on Wii right now and I&rsquo;d recommend it to anyone who liked other Mario games or wants to see the Wii controls done right. However, it does have a couple faults.</p><h2 id=camera>Camera</h2><p>Perhaps the most notable thing about Galaxy is the gravity game play, in which Mario can run on and jump between objects of varying sizes, shapes, and themes floating in space. Each object has its own gravity tug like a planet, so &ldquo;up&rdquo; and &ldquo;down&rdquo; from Mario&rsquo;s perspective change as he moves from object to object, or even from surface to surface on the same object. Unfortunately, the camera&rsquo;s orientation (&ldquo;up&rdquo; and &ldquo;down&rdquo; from our perspective) doesn&rsquo;t change to match Mario&rsquo;s, preserving the orientation with which we started. As Mario&rsquo;s orientation changes, it can be difficult to predict how the controls will change with his orientation. Moving Mario forward (up on the analog stick) may move Mario away from the camera when on one object, but toward the camera when on another object. Don&rsquo;t even get me started on left and right. You grow a sense of what to expect after a while, but it never feels natural, and sometimes you guess wrong. The ideal controls would always be relative to the camera so that up, down, right, and left on the analog stick would always do what you&rsquo;d expect.</p><p>Since some objects are very small, their surfaces are sharply curved. The camera doesn&rsquo;t stay directly over Mario&rsquo;s head, so sometimes you lose your depth perception and can&rsquo;t tell where Mario will land if he jumps somewhere.</p><h2 id=level-design>Level design</h2><p>Many of the 120 stars in the game involve level remixes, where an extra element is thrown into a level to make it harder, like limiting Mario&rsquo;s health, making enemies faster, time limits, races, coin collecting, etc. Some of them were fun and others weren&rsquo;t. Some of the purple coin challenges (collect the one hundred purple coins throughout a level to get a star) were hard, frustrating, and tedious.</p><p>Some levels were just too hard. There&rsquo;s no way you&rsquo;d pass the first time or even the second. When you find yourself dying for the fifth or sixth time, you have to ask yourself what the point is. It&rsquo;s just making you frustrated, and that&rsquo;s not fun. Those levels needed more tweaking to balance out the difficulty.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-03-08:/2008/03/08/super-mario-galaxy/</guid><link>https://willfaught.com/2008/03/08/super-mario-galaxy/</link><atom:link href="https://willfaught.com/2008/03/08/super-mario-galaxy/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 08 Mar 2008 15:09:00 -0800</pubDate><title>Super Mario Galaxy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>This year is the first time I&rsquo;ve been in charge of paying an electricity bill. Even though the bill is split four ways, I alone seem to go out of my way to turn off unused lights and electronics. I don&rsquo;t go so far as patrolling the halls, but sometimes I feel like you could stand outside and see where I am in the house by the windows that go dark. I didn&rsquo;t used to be so active about conserving energy with previous roommates, so I&rsquo;m pretty sure it&rsquo;s just because I&rsquo;m the one cutting the check for the bill. The lesson to take away here is to avoid being the one in charge of paying the electricity bill, because it&rsquo;s probably the most visible utility when it&rsquo;s used.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-03-07:/2008/03/07/the-worst-bill-to-pay/</guid><link>https://willfaught.com/2008/03/07/the-worst-bill-to-pay/</link><atom:link href="https://willfaught.com/2008/03/07/the-worst-bill-to-pay/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 07 Mar 2008 04:18:00 -0800</pubDate><title>The Worst Bill To Pay</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I gave a fifty-minute lecture on the <a href=https://en.wikipedia.org/wiki/Lambda_calculus rel=external>lambda calculus</a>
for a class last week. It was a topic I understood very well, but had never taught to someone else before. The length of the lecture was daunting enough, but I was surprised at how difficult it was to create a lesson plan. I could clearly see the ideas and their implications in my mind&rsquo;s eye, but it was hard to impose an order and a rationale on them that would make sense from the perspective of someone new to the material. You have to say the right thing in the right way in the right order. Ideas and concepts have to progress naturally and logically, later ones building on earlier ones. With this new insight into teaching, I respect teachers who were able to clearly explain something to me all the more. You aren&rsquo;t qualified to teach an idea to others just because you understand it.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-03-06:/2008/03/06/teaching-is-hard/</guid><link>https://willfaught.com/2008/03/06/teaching-is-hard/</link><atom:link href="https://willfaught.com/2008/03/06/teaching-is-hard/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 06 Mar 2008 07:41:00 -0800</pubDate><title>Teaching Is Hard</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>When I answer the phone, I usually move into another room for privacy and so I won&rsquo;t distract others. This seems natural and reasonable to me. I talk in a normal tone and no one has ever complained that they couldn&rsquo;t hear me. Others seem to either think differently or don&rsquo;t realize they&rsquo;re being obnoxious. They&rsquo;ll sit right next to me and carry on their one-sided conversations at a heightened volume. It can get so bad that I can&rsquo;t focus on anything but the words coming out of their mouths.</p><p>What is going on? Don&rsquo;t they get it? It seems that manners and consideration don&rsquo;t evolve as quickly as technology. I&rsquo;ve often wished for a pocket-size cell phone jammer that I could activate at a whim to silently punish these phone offenders. I found <a href=https://www.phonejammer.com/cell-phone-jammer/p2jbz-r.asp rel=external>one</a>
that has a range of ten meters, runs for four hours, and fits in a pocket, but it&rsquo;s $220; a little steep for a transient yearning for vengeance. But prices always go down.  Soon&mldr;</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-02-23:/2008/02/23/your-phone-conversation-annoys-me/</guid><link>https://willfaught.com/2008/02/23/your-phone-conversation-annoys-me/</link><atom:link href="https://willfaught.com/2008/02/23/your-phone-conversation-annoys-me/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 23 Feb 2008 08:45:00 -0800</pubDate><title>Your Phone Conversation Annoys Me</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://en.wikipedia.org/wiki/Rasmus_Lerdorf rel=external>Rasmus Lerdorf</a>
, the inventor of the programming language <a href=https://en.wikipedia.org/wiki/PHP rel=external>PHP</a>
, came to Cal Poly yesterday to give a two-hour lecture on PHP and related web technologies. I didn&rsquo;t know anything about him, but I was pleased to find he&rsquo;s a very intelligent, pragmatic, and humorous person. He spoke at length about the transition of PHP into an open source project, the evolution of the language, and some security and performance topics that I found very interesting. He works at Yahoo full time on PHP right now, and apparently they use PHP everywhere, so they have him optimize and improve PHP for their own needs and then contribute his work back to the open source project so that everyone benefits. He also demonstrated Yahoo&rsquo;s <a href=https://en.wikipedia.org/wiki/Yahoo%21_UI_Library rel=external>JavaScript user interface library</a>
, which was pretty nifty. I wish we could get more big names in computer science to come talk to us. I&rsquo;d listen.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-02-21:/2008/02/21/rasmus-lerdorf-comes-to-town/</guid><link>https://willfaught.com/2008/02/21/rasmus-lerdorf-comes-to-town/</link><atom:link href="https://willfaught.com/2008/02/21/rasmus-lerdorf-comes-to-town/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 21 Feb 2008 07:16:00 -0800</pubDate><title>Rasmus Lerdorf Comes To Town</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I was in Seattle last night. I had planned to fly home to San Luis Obispo at 7:20 PM and ultimately arrive at around midnight. But the fates had other plans.</p><p>Katherine dropped me off at my hotel and I was already running late. I ran through the glass doors, up the stairs, and entered the elevator. The elevators there required guests to slide their room keys to operate them. Judging by the title of this post, can you guess if my key worked? So I ran to the counter and had them fix it, then returned to the elevator and rode up to the sixteenth floor. I packed hurriedly and shot back into the elevator and headed for the lobby. When I stepped out, I found a line had formed where there was none before, and it took what felt like forever to get up to the counter. Everything was supposed to be billed directly to Microsoft, but of course they hadn&rsquo;t heard of any such thing and were ready to happily charge everything to my credit card. I didn&rsquo;t have time to work it out, so I told them they were supposed to bill Microsoft, left my phone number at the counter, and bolted out the front doors again.</p><p>Katherine was still there and drove me to the airport. We arrived at 7 PM and I hustled to the check-in counter, only to be told that my flight had been delayed by two hours and everyone who had checked in early (like we were supposed to) had been put on an earlier flight so they could still make their connecting flights. I could still take the delayed flight at 9 PM to San Francisco, but there wouldn&rsquo;t be a plane there to take me to SLO. Katherine called a travel agent to arrange for another flight out of SF to SLO, but there wasn&rsquo;t a ticket available until Monday. We looked into renting a car at the SF airport, but a one-way rental would incur a $400 drop off fee, which I didn&rsquo;t have on hand. I could either take the delayed flight, spend the night with some family in San Mateo near SF, rent a car there Sunday morning, and drive down to SLO, or take a 7:25 AM flight out of Seattle to Salt Lake City and ultimately arrive in SLO at noon on Sunday. I picked the early flight.</p><p>I almost died getting up in the morning, getting only four and a half hours of sleep. The flight out of Seattle was delayed by forty minutes, and my schedule had only allotted me thirty minutes to change planes in SLC. I had to run for five minutes through three terminals with two bags and arrived to find the door of my plane already closed. I was breathless and about ready to keel over from stress and sleep deprivation and breathlessness. The crew was gracious enough to open the door again just for me. I was the last one to get on, by which time everyone else was already seated and waiting. I think the stewardess had already given the safety speech. It was one of those small planes, where the overhead compartments are much smaller, so it took about a minute of crunching and squeezing before I could shut the overhead compartment door and sit down again.</p><p>But I made it. Kiss my ass, fates!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-02-17:/2008/02/17/it-wasnt-meant-to-be/</guid><link>https://willfaught.com/2008/02/17/it-wasnt-meant-to-be/</link><atom:link href="https://willfaught.com/2008/02/17/it-wasnt-meant-to-be/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 17 Feb 2008 07:53:00 -0800</pubDate><title>It Wasn’t Meant To Be</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It seems to me that political debates nowadays are a waste of time. Two people come together to debate an issue and wind up either talking about different things or don&rsquo;t address what the other person is saying, much less provide concrete support for their arguments. There&rsquo;s just too many tricks to fudge your way out of really committing to something and sticking to it. I blame the dependence of our electoral process on audio/video media. You can&rsquo;t slow down what they&rsquo;re saying and pick apart their words, weigh their meanings, and make reasoned judgments if their words are flying past you at the speed of speech. One candidate speaks, and the others have to scribble quickly on a paper pad to remember what to say in their rebuttal five minutes later. There&rsquo;s no provision for going back at leisure and examining the merit of every spoken word. This isn&rsquo;t just a disadvantage for candidates, it&rsquo;s a detriment to the electoral process: it diminishes our ability to correctly choose the best candidate.</p><p>What we need is a shift from audio/video media to written text and an emphasis on constructing and critiquing arguments using logic and verifiable facts. No more hand raising. No more thirty-second answers to loaded questions. No more Jack Johnson versus John Jackson (see Futurama). In order to participate in the electoral process, candidates should have to present formal arguments on a range of precisely-defined topics. Then all the other candidates can take turns inspecting and critiquing each premise and argue whether their argument is valid and sound. It is only through a system like this that you can really get down to the heart of things.</p><p>I think a cool experiment would be to build a computer system, maybe a web site, that could facilitate arguments like these. It wouldn&rsquo;t need to be used solely by electoral candidates. If you could guarantee that only real people contributed to the arguments and critiques in the system, then judgments made in that system could have real logical and political significance. Imagine if the system was very popular and many people read it, contributed to it, and deferred to it. Judgments made in this system could have an impact on real-world decisions.</p><p>I would pair this system with a public forum that facilitated interesting and relevant political discussions, where posted articles may be rated somehow by quality of their content, and highly-rated authors may rise to prominence and be heard by the rest of us. I&rsquo;m not aware of any other such system.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-01-31:/2008/01/31/giving-weight-to-online-words/</guid><link>https://willfaught.com/2008/01/31/giving-weight-to-online-words/</link><atom:link href="https://willfaught.com/2008/01/31/giving-weight-to-online-words/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 31 Jan 2008 17:26:00 -0800</pubDate><title>Giving Weight To Online Words</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I see backticks (<strong>`</strong>) used quite frequently as an opening quotation mark online and in program output, as in &ldquo;You named it `Carl&rsquo; &ldquo;. Is this some kind of quiet leet development that people don&rsquo;t talk about but just pick up, like slang?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-01-19:/2008/01/19/out-of-the-loop/</guid><link>https://willfaught.com/2008/01/19/out-of-the-loop/</link><atom:link href="https://willfaught.com/2008/01/19/out-of-the-loop/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 19 Jan 2008 09:43:00 -0800</pubDate><title>`Out Of The Loop'</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href=https://en.wikipedia.org/wiki/LaTeX rel=external>LaTeX</a>
is a tool used almost exclusively for formatting academic Computer Science papers. Instead of formatting your paper through traditional <a href=https://en.wikipedia.org/wiki/WYSIWYG rel=external>what-you-see-is-what-you-get</a>
(WYSIWYG) means, LaTeX is a <a href=https://en.wikipedia.org/wiki/Markup_language rel=external>markup language</a>
that is interpreted and formatted for you. For example, instead of highlighting a word and clicking a bold button to make the font bold, e.g. <strong>bold</strong>, you embed a markup notation that is transformed into the intended formatting at the end, e.g. \textbf{bold}. The argument goes that this allows you to focus more on the content of your paper and not have to screw around with fonts and spacing all the way through the writing process.</p><p>What I can&rsquo;t figure out is why it&rsquo;s such a giant clusterfuck when it comes to actually getting anything to work with it. WYSIWYG may have its shortcomings, <em>but at least it works out of the box</em>. There&rsquo;s been something wrong with every LaTeX distribution I&rsquo;ve ever tried. You&rsquo;d think a tool used by Computer Scientists all the time would have been improved by now. I don&rsquo;t understand why academics aren&rsquo;t up in arms. Maybe one person got it working, and then everyone else just copied his or her setup. That reminds me of a joke I heard about how there isn&rsquo;t really any Makefile format specification, just a master Makefile floating around from which all examples are copied.</p><p>Here are the commands to format your LaTeX document:</p><ol><li>latex document.tex</li><li>bibtex document.tex</li><li>latex document.tex</li><li>latex document.tex</li></ol><p>That&rsquo;s right, you have to invoke latex <em>three times</em>. Why? I guess twice wasn&rsquo;t good enough.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-01-15:/2008/01/15/latex-hurts-my-brain/</guid><link>https://willfaught.com/2008/01/15/latex-hurts-my-brain/</link><atom:link href="https://willfaught.com/2008/01/15/latex-hurts-my-brain/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 15 Jan 2008 16:36:00 -0800</pubDate><title>LaTeX HuRtS My BrAiN</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p><a href="https://www.mustangdaily.net/user/index.cfm?event=displayAuthorProfile&amp;authorid=2668287" rel=external>James Koman</a>
recently wrote an opinion article in the <a href=https://www.mustangdaily.net/ rel=external>Mustang Daily</a>
, the student newspaper of Cal Poly, entitled <a href=https://media.www.mustangdaily.net/media/storage/paper860/news/2008/01/10/Columns/Why-I.Hate.White.People-3148711-page2.shtml rel=external><em>Why I hate white people</em></a>
. The article contains very racist and ignorant thoughts about white people, in case you couldn&rsquo;t tell from the title. The newspaper was flooded with protesting letters to the editor in the following days. I just read the article and found the last sentence amusing, which is ironic since the rest of the article wasn&rsquo;t:</p><blockquote><p>White folks always try to rationalize their racial status by stating &ldquo;I&rsquo;m half-Italian, half-Norwegian,&rdquo; or &ldquo;I&rsquo;m British,&rdquo; or &ldquo;I&rsquo;m albino,&rdquo; but they&rsquo;re just trying to avoid the dreaded truth: they are white people. Not me though, I&rsquo;m Irish-Polish-Czech. I hope this column forces you and your people to look inward and realize that your egotistic nature, fast-food diet and overall smaller brain size are a drain on this great nation and the dreams of our white Founding Fathers. Thank you for your time.</p></blockquote><blockquote><p>James Koman is a biology junior and a Mustang Daily humor columnist.</p></blockquote><p>I don&rsquo;t know how that guy can show his face on campus again.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-01-14:/2008/01/14/amusing-ending/</guid><link>https://willfaught.com/2008/01/14/amusing-ending/</link><atom:link href="https://willfaught.com/2008/01/14/amusing-ending/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 14 Jan 2008 09:00:00 -0800</pubDate><title>Amusing Ending</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I threw my back out in class today. I sat down and felt something go. I&rsquo;m writing this with only my left hand, so I&rsquo;ll be brief. Ouch! How old am I? God. I can hardly move without sending a spasm of pain down my back.</p><p>Okay, I just slowly and painfully and switched into a crossed-legged sitting position that feels pretty good on my back, once I settled into it, so now I can type with two hands.</p><p>I had only ten minutes to catch the bus after my class ended and I barely made it. I couldn&rsquo;t even stand up straight. The highest I could bend was about halfway. I tried to walk that way, but I gave up because it hurt too much and I figured I looked ridiculous. It was so embarrassing. I figured out that I could run pretty well bent forward like that, and it probably looked somewhat normal, so I used that to get most of the way to the bus stop near Mott Gym. I spent the rest of the evening crouching and hobbling around my living room and kitchen like a hunchback, using furniture and tables and banisters as crutches, and lying on the couch watching TV.</p><p>I&rsquo;m hideous! Look away!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2008-01-09:/2008/01/09/out-for-the-count/</guid><link>https://willfaught.com/2008/01/09/out-for-the-count/</link><atom:link href="https://willfaught.com/2008/01/09/out-for-the-count/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 09 Jan 2008 15:58:00 -0800</pubDate><title>Out For The Count</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Is Computer Science really a science? Computer scientists don&rsquo;t apply the <a href=https://en.wikipedia.org/wiki/Scientific_method rel=external>scientific method</a>
. Testing is currently essential for implementing software correctly, but only because we&rsquo;re either too lazy or incapable of verifying correctness beforehand due to the extreme complexity of the systems and tools we use.  It all boils down to manipulating an <a href=https://en.wikipedia.org/wiki/Abstract_machine rel=external>abstract machine</a>
, in most cases a <a href=https://en.wikipedia.org/wiki/Register_machine rel=external>register machine</a>
, which is a mathematical construct. The colors that appear on your monitor and the data written to your hard drive are merely side effects of the mathematical operations we compute. I think Computer Science is mathematics, not science. In fact, many universities place their Computer Science program within the mathematics department, not the engineering department.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-12-28:/2007/12/28/computer-science-is-not-science/</guid><link>https://willfaught.com/2007/12/28/computer-science-is-not-science/</link><atom:link href="https://willfaught.com/2007/12/28/computer-science-is-not-science/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 28 Dec 2007 11:29:00 -0800</pubDate><title>Computer Science Is Not Science</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve had an idea for a story for a while now that I think would be pretty interesting to write. In the future, a computerized virtual world would be accessible to most people like a utility, much like the internet. Users could interact with the virtual world like a virtual reality game, where your sight and hearing are tuned to the virtual world, not the real one. Its use has become so pervasive that people do many things in the virtual world that are currently done in the real world, such as playing games, meeting people, conducting business, collaborating, performing financial transactions, etc. People from all over the world can access this virtual world. Virtual items are exchanged between users in the virtual world and have real-world values according to average real-world resale prices.</p><p>It would be interesting to explore how loyalties, alliances, and power might shift and reform in the virtual world, independent of the real world. Most people from the same country share common feelings of loyalty to their own country. What if you and your next-door neighbor in the real world were secretly members of opposing factions in the virtual world? What if those differences had real-world significance, like support of or opposition to human rights or national sovereignty? Could virtual allegiances lead to a shift in real power?</p><p>It would also be fun to explore the role played by the organization, perhaps a company, that created and maintains the virtual world. Do users who obtain and possess items in the virtual world own them in the real world? Is the organization responsible for changes in property values due to changes in the virtual world&rsquo;s rules or content? Should stealing in the virtual world be a criminal act in the real world? These are some interesting questions that game makers and players struggle to answer even today.</p><p>I actually cannibalized this idea for a short story I wrote for a fiction writing class I took last quarter. Instead of focusing on the broader implications of such a system, I narrowed the scope to focus only on two strangers who interact in the real and virtual worlds simultaneously without realizing it. One person is chasing the other in the virtual world. Eventually, they both realize who the other is. Then the other person chases the virtual chaser in the real world.  I still haven&rsquo;t come up with a good ending to the story.  If anyone has any ideas, please post them!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-12-27:/2007/12/27/a-story-idea/</guid><link>https://willfaught.com/2007/12/27/a-story-idea/</link><atom:link href="https://willfaught.com/2007/12/27/a-story-idea/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 27 Dec 2007 13:36:00 -0800</pubDate><title>A Story Idea</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It seems to me that large wildfires like that of southern California are unavoidable. I&rsquo;m not an expert, but it&rsquo;s my understanding that wildfires are a natural phenomenon that play a useful role in the life cycle of the environment. They can clear out thick underbrush and smaller trees that can come to choke larger trees and in doing so they enrich the soil with the ashes they leave behind. In fact, <a href=https://en.wikipedia.org/wiki/Yellowstone_fires_of_1988 rel=external>Yellowstone has a policy</a>
of letting small natural fires burn freely because its management recognizes these benefits. So allowing reasonably-sized wildfires to burn is a good thing in the long run, given they don&rsquo;t damage anything or injure anyone.</p><p>In California, however, people live all over the place, and it&rsquo;s probably not safe to let fires burn in most places. So all that underbrush keeps piling up over the years without being swept away in small doses naturally. We quickly put out any fire that might do so. So when we can&rsquo;t get one of these fires under control, they explode into a firestorm that does lots of damage.</p><p>I&rsquo;m not sure what the solution would be for states like California. What will probably happen is nothing, since there probably isn&rsquo;t an obvious, free solution. Not until a lot more people die. It&rsquo;s funny, isn&rsquo;t it, how most people seem to prefer to err on the side of ignorance and plead later that no one could have foreseen what happened instead of doing the prudent thing and doing something preventative. Maybe we&rsquo;re just intrinsically lazy, unwilling to see or seek problems when none are obvious. It seems to be some kind of natural law that people must die before anything is done.</p><p>Anyway, maybe the city planners could mandate cleared bands of land that could form a grid of buffers to keep fires from spreading from area to area. This way we could clear each piece of land of dry underbrush separately and safely and also prevent the spread of fires from the wild into urbanized areas. You could turn the bands into parks or fields.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-12-26:/2007/12/26/large-wildfires-unavoidable/</guid><link>https://willfaught.com/2007/12/26/large-wildfires-unavoidable/</link><atom:link href="https://willfaught.com/2007/12/26/large-wildfires-unavoidable/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 26 Dec 2007 17:56:00 -0800</pubDate><title>Large Wildfires Unavoidable</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Damn it! I was just sitting here, watching the end of Return of the Jedi on TV. You know, the party on Endor after the big climax where the music plays and they&rsquo;re all dancing and hugging. They changed the ending! The music was much quieter and less energetic and they now have that dude who plays Anakin in Episodes 1-3 standing there as a ghost instead of the older version of himself. The changes thoroughly sucked ass. The music always used to give me a warm feeling and it was touching to see the old Anakin stand there with Yoda and Obi Wan. Now there&rsquo;s no sense of euphoria at the end. Plus I don&rsquo;t give a crap about young Anakin, there&rsquo;s no place for him in this story.</p><p>Damn you, George Lucas! Leave my classics alone.  Most art is probably never perfected in creators&rsquo; opinions. But the artists need to put it out there for people to enjoy, so at some point you have to leave it be and set it free.</p><p>You can&rsquo;t even buy the original version of the movie anymore!  <a href=https://www.southparkzone.com/episodes/609/Free-Hat.html rel=external>South Park was right.</a></p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-12-22:/2007/12/22/star-wars-forever-marred/</guid><link>https://willfaught.com/2007/12/22/star-wars-forever-marred/</link><atom:link href="https://willfaught.com/2007/12/22/star-wars-forever-marred/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 22 Dec 2007 04:57:00 -0800</pubDate><title>Star Wars Forever Marred</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I went to a shooting range several weeks ago for my friend Jose&rsquo;s birthday. I had never been to a firing range before. There were about ten of us and the range was divided into five lanes. Each lane had a different pistol and boxes of ammunition that you used to reload the weapon when it was your turn.</p><p>I had never fired a pistol before, but I was still surprised at how nervous I was to fire a pistol. I wasn&rsquo;t alone; several other people there hadn&rsquo;t done it before either and were also nervous. I had no idea it was so tough to load a clip of ammunition; those springs are tense! I was able to fire most of the guns two or three times, five to ten shots per turn. I usually gripped the gun tightly and just squeezed one off in the general direction of the target without really caring about my aim just to get used to the loud noise and sudden motion. Then I could get into it and focus my aim.</p><p>Towards the end, they swapped out the circular targets we were using for some posters of terrorists holding women hostage. I decided to take the easy way out and shoot the women instead. I ended up getting one woman in her open mouth dead center and also square in her chest. Yes, I&rsquo;m that incredible.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-12-20:/2007/12/20/just-in-case-i-have-to-kill-my-dinner/</guid><link>https://willfaught.com/2007/12/20/just-in-case-i-have-to-kill-my-dinner/</link><atom:link href="https://willfaught.com/2007/12/20/just-in-case-i-have-to-kill-my-dinner/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 20 Dec 2007 19:06:00 -0800</pubDate><title>Just In Case I Have To Kill My Dinner</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The Christmas card poem that didn&rsquo;t make it:</p><blockquote><p>Greetings Bill and Maria!<br>I had a great idea<br>To send you my love via<br>&mldr;<br>I&rsquo;m writing this in a pizzeria<br>In a galleria in South Korea<br>I hope I don&rsquo;t get diarrhea<br>In their bathroom I could get gonorrhea<br></p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-12-19:/2007/12/19/behind-the-scenes/</guid><link>https://willfaught.com/2007/12/19/behind-the-scenes/</link><atom:link href="https://willfaught.com/2007/12/19/behind-the-scenes/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 19 Dec 2007 07:15:00 -0800</pubDate><title>Behind The Scenes</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I&amp;rsquo;ve been doing a lot of Java development with Eclipse this past quarter and this past summer. Eclipse has a really neat code formatting tool that you can kick off with a quick Ctrl-Shift-F or Command-F to tidy up your code. When I use Eclipse, I regularly format my code along with saving it. Now I find myself reaching for the format shortcut when I write for my fiction writing class. Weird.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2007-11-29:/2007/11/29/ctrl-shift-f/</guid><link>https://willfaught.com/2007/11/29/ctrl-shift-f/</link><atom:link href="https://willfaught.com/2007/11/29/ctrl-shift-f/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 29 Nov 2007 08:48:00 -0800</pubDate><title>Ctrl-Shift-F</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I finished the game <a href=https://en.wikipedia.org/wiki/Portal_%28video_game%29 rel=external>Portal</a>
a little while ago. I think it&rsquo;s one of the best games I&rsquo;ve played in a long time. The game play is very original and exciting and offers many opportunities to stump us with environmental puzzles and brain teasers. But on top of that, the writers have infused it with a sense of humor I&rsquo;ve never seen before in a game that totally works. At times it&rsquo;s subtle and at other times it&rsquo;s hilarious. The credits are amazing and shouldn&rsquo;t be missed. But what really surprised me was how well the game works, despite how simple it appears to be on the surface. There&rsquo;s a moment in the game where you&rsquo;ve completed the goal put before you at the start and you think everything is over. But the game keeps going. Then a character says a simple, innocent line along the lines of &ldquo;Put down everything, lay down, and wait to be taken away.&rdquo; My motivation and attitude completely shifted and suddenly I wanted to do exactly what the game creators wanted me to want to do, without telling me what I should be feeling or what I&rsquo;m doing next. It&rsquo;s brilliant, and I&rsquo;ve never experienced anything like it in a game before. <a href=https://en.wikipedia.org/wiki/Valve_Corporation rel=external>Valve</a>
has perfected the art of melding game play, story telling, and perspective in a way I haven&rsquo;t really seen in any other games, in my humble opinion. They constrain your point of view to the first person and never leave it for cut scenes or flash backs or other points of view. You experience the game through the continuous consciousness of the person you play. Your character never speaks; you have no way to speak or communicate with other characters. The effect is to make you feel like <em>you</em> are there, that <em>you</em> are part of the story and are making important choices that affect the outcome of the game. In short, it amplifies your emotional attachment and immersion, which add to the enjoyment of the experience. In addition, it helps to focus the game experience because anything boring or of low quality is immediately apparent because the player must engage with those things in a way that cannot be completely controlled by the creators. It also forces the creators to develop plot and characters in an interactive, engaging way because it has to happen live in front of the player. You might think a strict first-person perspective might make telling back story contrived or impossible, but Valve managed it brilliantly in <a href=https://en.wikipedia.org/wiki/Half-life_2 rel=external>Half-Life 2</a>
. Portal&rsquo;s game play is an extension of all of these things and works brilliantly because of it.I highly recommend gamers try this game out.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-11-26:/2007/11/26/portal/</guid><link>https://willfaught.com/2007/11/26/portal/</link><atom:link href="https://willfaught.com/2007/11/26/portal/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 26 Nov 2007 17:11:00 -0800</pubDate><title>Portal</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve cobbled together a pretty good tool for <a href=https://en.wikipedia.org/wiki/Transcode rel=external>transcoding</a>
video in pretty much any format into the <a href=https://en.wikipedia.org/wiki/MPEG-4 rel=external>MPEG-4</a>
format that iPods play. You have to have the <a href=https://www.videolan.org/ rel=external>VLC media player</a>
installed because it does the actual transcoding. So in other words, I&rsquo;ve researched a program that was already out there and made an easy wrapper script. Damn I&rsquo;m smart. Yay modularity! Seriously though, there aren&rsquo;t a lot of guides out there that are easy to follow. Maybe someone will find this useful. It works great on <a href=https://en.wikipedia.org/wiki/Ubuntu_%28Linux_distribution%29 rel=external>Ubuntu</a>
Gutsy Gibbon 7.10.</p><p>Here&rsquo;s my bash script:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#57606a>#!/bin/bash
</span></span></span><span style=display:flex><span><span style=color:#57606a></span><span style=color:#953800>extension</span><span style=color:#0550ae>=</span><span style=color:#0a3069>`</span><span style=color:#6639ba>echo</span> <span style=color:#0a3069>&#34;</span><span style=color:#953800>$1</span><span style=color:#0a3069>&#34;</span> <span style=color:#1f2328>|</span> awk -F . <span style=color:#0a3069>&#39;{print $NF}&#39;</span><span style=color:#0a3069>`</span>
</span></span><span style=display:flex><span><span style=color:#953800>name</span><span style=color:#0550ae>=</span><span style=color:#0a3069>`</span>basename <span style=color:#0a3069>&#34;</span><span style=color:#953800>$1</span><span style=color:#0a3069>&#34;</span> .<span style=color:#0a3069>&#34;</span><span style=color:#953800>$extension</span><span style=color:#0a3069>&#34;</span><span style=color:#0a3069>`</span>
</span></span><span style=display:flex><span>vlc -vvv <span style=color:#0a3069>&#34;</span><span style=color:#953800>$name</span><span style=color:#0a3069>.</span><span style=color:#953800>$extension</span><span style=color:#0a3069>&#34;</span> <span style=color:#0a3069>\
</span></span></span><span style=display:flex><span><span style=color:#0a3069></span>    --sout <span style=color:#0a3069>&#34;#transcode{vcodec=mp4v, \
</span></span></span><span style=display:flex><span><span style=color:#0a3069>    vb=1024, \
</span></span></span><span style=display:flex><span><span style=color:#0a3069>    scale=1, \
</span></span></span><span style=display:flex><span><span style=color:#0a3069>    acodec=mp4a, \
</span></span></span><span style=display:flex><span><span style=color:#0a3069>    ab=128, \
</span></span></span><span style=display:flex><span><span style=color:#0a3069>    channels=2}:standard{access=file, \
</span></span></span><span style=display:flex><span><span style=color:#0a3069>    url=</span><span style=color:#953800>$name</span><span style=color:#0a3069>.mp4}&#34;</span> <span style=color:#0a3069>\
</span></span></span><span style=display:flex><span><span style=color:#0a3069></span>    --aspect-ratio <span style=color:#0a3069>&#34;4:3&#34;</span> <span style=color:#0a3069>\
</span></span></span><span style=display:flex><span><span style=color:#0a3069></span>    --sout-transcode-width <span style=color:#0550ae>360</span> <span style=color:#0a3069>\
</span></span></span><span style=display:flex><span><span style=color:#0a3069></span>    --sout-transcode-height <span style=color:#0550ae>240</span> <span style=color:#0a3069>\
</span></span></span><span style=display:flex><span><span style=color:#0a3069></span>    --sout-transcode-fps <span style=color:#0550ae>30</span> <span style=color:#0a3069>\
</span></span></span><span style=display:flex><span><span style=color:#0a3069></span>    2&gt;/dev/null</span></span></code></pre></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-10-30:/2007/10/30/ipod-video-transcoding-in-linux/</guid><link>https://willfaught.com/2007/10/30/ipod-video-transcoding-in-linux/</link><atom:link href="https://willfaught.com/2007/10/30/ipod-video-transcoding-in-linux/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 30 Oct 2007 17:36:00 -0700</pubDate><title>IPod Video Transcoding In Linux</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Congress is concerned that <a href=https://en.wikipedia.org/wiki/Peer-to-peer rel=external>peer-to-peer</a>
networks may make users <a href=https://www.news.com/8301-10784_3-9799463-7.html rel=external>susceptible to identity theft</a>
. Apparently, some users share their sensitive information with others and then get upset when their identities are stolen. That&rsquo;s Darwin at his finest, in my opinion.</p><p>Why does Congress have to fix things that aren&rsquo;t broken? Users have to explicitly choose to publish files to the network, be it the web or a peer-to-peer network. What the peer-to-peer program shares by default is irrelevant; the burden is on the user to understand what they&rsquo;re doing. Your computer and your internet connection give you the tools to send anything and everything to everyone else. If you don&rsquo;t want to share everything, then don&rsquo;t. Educate yourself. If you&rsquo;re going to play the game, you have to know the rules. I have no sympathy for those whose files were used against them. I always check what files are being shared and so should everyone else.</p><p>I should also note that the article incorrectly characterizes all peer-to-peer protocols as having this &ldquo;problem.&rdquo; Some peer-to-peer networks exist only to share specific files, like <a href=https://en.wikipedia.org/wiki/BitTorrent rel=external>BitTorrent</a>
. No one accidentally seeds their bank statement with BitTorrent.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-10-19:/2007/10/19/leave-it-alone-congress/</guid><link>https://willfaught.com/2007/10/19/leave-it-alone-congress/</link><atom:link href="https://willfaught.com/2007/10/19/leave-it-alone-congress/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 19 Oct 2007 13:50:00 -0700</pubDate><title>Leave It Alone, Congress</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Wine burn is the point where you&amp;rsquo;ve drunk enough wine that your mouth feels dry and wines taste the same. I had that today. Yay wine tasting!&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2007-10-13:/2007/10/13/wine-burn/</guid><link>https://willfaught.com/2007/10/13/wine-burn/</link><atom:link href="https://willfaught.com/2007/10/13/wine-burn/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 13 Oct 2007 16:55:00 -0700</pubDate><title>Wine Burn</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Programming languages vary across a spectrum of expressiveness. By expressiveness, I mean the ability and ease by which you can express something in a particular language. For example, programming languages having <a href=https://en.wikipedia.org/wiki/Closure_%28computer_science%29 rel=external>closures</a>
are widely considered to be more expressive, and hence more powerful, than languages that lack this feature.</p><p>I wonder if natural (human) languages also vary in expressive power and if so how this affects your thinking and personality. If you grew up learning the most expressive natural language of all, would that make you smarter than those who didn&rsquo;t? Would it make you more predisposed to like certain things or enter certain careers? Maybe certain classes of ideas are easier to think about in certain natural languages, much like some programming languages are better suited to certain problem domains than others. Could this contribute to why some geographical areas are known for being good at a particular thing? Imagine having to learn Finnish because it was the best fit for thinking about ideas in your field of study or work. Imagine trying to invent a natural language to improve your thinking about your field of study of work.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-10-04:/2007/10/04/expressiveness-in-human-languages/</guid><link>https://willfaught.com/2007/10/04/expressiveness-in-human-languages/</link><atom:link href="https://willfaught.com/2007/10/04/expressiveness-in-human-languages/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 04 Oct 2007 18:03:00 -0700</pubDate><title>Expressiveness In Human Languages</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>bind -> bound</p><p>find -> found</p><p>wind -> wound</p><p>Shouldn&rsquo;t it be mind -> mound?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-09-30:/2007/09/30/mound/</guid><link>https://willfaught.com/2007/09/30/mound/</link><atom:link href="https://willfaught.com/2007/09/30/mound/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 30 Sep 2007 14:34:00 -0700</pubDate><title>Mound</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I was watching a Law and Order episode in which someone who framed an innocent person was sent to prison because the framed person was killed in prison. The prisons were so dangerous that the district attorneys considered it a heinous crime to send someone there. It&amp;rsquo;s ironic that many states do not use the death penalty but use prisons that can accomplish the same thing as well as reinforce aggressive and violent behavior.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2007-09-29:/2007/09/29/prison-hypocrisy/</guid><link>https://willfaught.com/2007/09/29/prison-hypocrisy/</link><atom:link href="https://willfaught.com/2007/09/29/prison-hypocrisy/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 29 Sep 2007 05:48:00 -0700</pubDate><title>Prison Hypocrisy</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Being a computer science major, my job after graduation will most likely entail working in an office. I&rsquo;ll have to attend meetings. If I&rsquo;m promoted, I&rsquo;ll have to attend even more meetings. If I progress higher into the ranks, I&rsquo;ll lose more and more of my day to the time suck of meetings to the point where I can&rsquo;t get anything useful done during normal hours. I&rsquo;ll have to develop a second personality to come into the office to get something done at night while I rest up, hopefully while not starting a club at the same time.</p><p>It would be nice to have an Inflatable Me that could take my place at meetings, speak only when spoken to or nudged, and never commit me to more work. For example, when a fellow prisoner-of-meeting asks Inflatable Me something, it could say things like:</p><ul><li>That can&rsquo;t be done.</li><li>I&rsquo;ll have to check my spreadsheet.</li><li>My sources say no.</li></ul><p>What else could it say?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-09-04:/2007/09/04/inflatable-me/</guid><link>https://willfaught.com/2007/09/04/inflatable-me/</link><atom:link href="https://willfaught.com/2007/09/04/inflatable-me/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 04 Sep 2007 16:49:00 -0700</pubDate><title>Inflatable Me</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The problems with electronic voting machines are threefold:</p><ul><li>Your votes can be changed and there&rsquo;s no record if they&rsquo;re changed.<ul><li>Pen is permanent and cannot be hidden.</li></ul></li><li>Your votes cannot be authenticated.<ul><li>It&rsquo;s difficult to forge a signature and impossible to do on a large scale.</li></ul></li><li>The process by which votes are tabulated is not transparent.<ul><li>Counting by hand is understandable and easily verifiable.</li></ul></li></ul><p>We should use paper ballots with ink circles to indicate our votes and ink signatures to authenticate them. Votes should be counted twice by hand by two different people at two different times.</p><p>I don&rsquo;t understand why people think it&rsquo;s necessary to count our votes quickly. Why do we need to find out the winner the same day or even the same week? The new president isn&rsquo;t inaugurated for more than a month after election day. The country didn&rsquo;t grind to a halt a hundred years ago when the only way was to take a couple days to count votes by hand. I say we put priority on electing the correct candidates and not on convenience.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-08-24:/2007/08/24/electronic-voting-is-stupid/</guid><link>https://willfaught.com/2007/08/24/electronic-voting-is-stupid/</link><atom:link href="https://willfaught.com/2007/08/24/electronic-voting-is-stupid/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 24 Aug 2007 18:20:00 -0700</pubDate><title>Electronic Voting Is Stupid</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Most computer users probably assume that their computers are secure. They don&rsquo;t see the complexity and brittleness of the hardware, the operating system, the network, and the applications because it&rsquo;s hidden under a pretty user interface with abstracted toy operations. They never considered evaluating security when purchasing software; they assumed it would just work. It&rsquo;s understandable if they get upset when something goes wrong.</p><p>It annoys me, however, when lawmakers see this and decide to fix the problem from their end. They make laws outlawing things like exploiting security vulnerabilities so they can have something to show their constituents. Don&rsquo;t get me wrong, I think exploiting security vulnerabilities is unethical, but making these laws takes away the motivation for software vendors to improve their products that the market would normally give them. They can use the law as a crutch to support their faulty products instead of innovating better ones. Rather than preventing consumers from being victimized, laws patch up the damage after the fact. What&rsquo;s sad is that most people think this is acceptable. This is why <a href=https://en.wikipedia.org/wiki/Denial-of-service_attack rel=external>denial-of-service</a>
vulnerabilities won&rsquo;t be fixed for a long time, if ever.</p><p>Yet these kinds of laws have been made before, are made now, and will be made in the future. But I think that as the layperson gains more understanding of what software is and how it&rsquo;s made, we&rsquo;ll get back some of that market pressure to innovate.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-08-18:/2007/08/18/let-the-market-work-its-magic/</guid><link>https://willfaught.com/2007/08/18/let-the-market-work-its-magic/</link><atom:link href="https://willfaught.com/2007/08/18/let-the-market-work-its-magic/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sat, 18 Aug 2007 16:23:00 -0700</pubDate><title>Let The Market Work Its Magic</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Is my identity constant or variable? On the one hand, my identity could be some thing or things about me that always have and always will be unique. On the other hand, my identity could be the variable but unique combination of my characteristics at any given moment, like my location, appearance, personality, relationships, and memory. I think it is a mix of the two. I think my choices identify who I am. My choices are set in stone; I leave them behind me in time and they mark the paths I have walked. My journey is unique to me; no one ever has, nor ever will, tread the same path. Yet my choices are driven by my current characteristics, which are not always a product of my choices. While my identity is bound to an ever-lengthening sequence of choices, that identity is also constantly evolving as I make new choices, which in turn are influenced by characteristics inside and outside my control.</p><p>This reminds me of one of my favorite scenes from <a href=https://en.wikipedia.org/wiki/Babylon_5 rel=external>Babylon 5</a>
:</p><blockquote><p>What a sad thing you are! Unable to answer even such a simple question without falling back on references, and genealogies, and what other people call you! Have you nothing of your own? Nothing to stand on that is not provided, defined, delineated, stamped, sanctioned, numbered and approved by others? How can you be expected to fight for someone else when you haven&rsquo;t the fairest idea who you are?</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-08-08:/2007/08/08/who-are-you/</guid><link>https://willfaught.com/2007/08/08/who-are-you/</link><atom:link href="https://willfaught.com/2007/08/08/who-are-you/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 08 Aug 2007 16:53:00 -0700</pubDate><title>Who Are You?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>It strikes me as ironic that some have argued that the growing prevalence of Spanish in America, or at least the west and southern states, threaten American culture while there is little effort to teach immigrants English. NPR was reporting a little while ago that in New York City, it&rsquo;s almost impossible to enroll in an English class because they&rsquo;re so impacted. I believe they said conditions were similar in many other places.</p><p>I suspect most immigrants desire to acclimate to American culture, including learning the common language, to make a life here and broaden their prospects. It&rsquo;s what I would do. Yet most immigrants work a lot, which causes conflicts with English class schedules, and those classes are heavily impacted. The incentive to learn English is there, but the opportunities aren&rsquo;t. So they continue to speak their native languages.</p><p>Lots of foreigners learn English to take part in American culture and business. English is the unofficial language of international business and much of politics. We shouldn&rsquo;t be worrying about the prevalence of English in America because it sells itself. The lower we set the threshold to integrating into American society, like offering more English classes, the faster it&rsquo;ll happen.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-08-05:/2007/08/05/teach-them-english-already/</guid><link>https://willfaught.com/2007/08/05/teach-them-english-already/</link><atom:link href="https://willfaught.com/2007/08/05/teach-them-english-already/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 05 Aug 2007 17:31:00 -0700</pubDate><title>Teach Them English Already</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If invalid, informal, and injustice are the opposites of valid, formal, and justice, then why does <a href=https://dictionary.reference.com/browse/inflammable rel=external>inflammable</a>
mean the same as flammable? Since English is my first language, I obviously prefer it to any other language, but damn, English sucks. One thing I&rsquo;ve always appreciated about Spanish is that you can look at any word and know immediately how to pronounce it correctly.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-08-05:/2007/08/05/flammable-inflammable/</guid><link>https://willfaught.com/2007/08/05/flammable-inflammable/</link><atom:link href="https://willfaught.com/2007/08/05/flammable-inflammable/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 05 Aug 2007 16:28:00 -0700</pubDate><title>Flammable = Inflammable</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you haven&rsquo;t done so <a href="https://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=10+market+st,+san+francisco&amp;sll=37.807343,-122.419109&amp;sspn=0.045163,0.080338&amp;layer=c&amp;ie=UTF8&amp;ll=37.798204,-122.394111&amp;spn=0.011292,0.020084&amp;z=16&amp;iwloc=addr&amp;om=1&amp;cbll=37.794437,-122.39307&amp;cbp=1,360,0.512921107826836,0" rel=external>already</a>
, check out <a href="https://www.youtube.com/watch?v=91wuBqlny50" rel=external>Street View</a>
on <a href=https://maps.google.com/ rel=external>Google Maps</a>
. Google rocks!</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-08-02:/2007/08/02/street-view-rocks-my-socks/</guid><link>https://willfaught.com/2007/08/02/street-view-rocks-my-socks/</link><atom:link href="https://willfaught.com/2007/08/02/street-view-rocks-my-socks/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 02 Aug 2007 15:08:00 -0700</pubDate><title>Street View Rocks My Socks</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>My roommates and I tried to cancel our TV service last week. Dish Network told us they would charge us a cancellation fee because we were apparently signed up for an 18-month service plan. That didn&rsquo;t make sense because we started the TV service when we had only six or seven months left on our lease. So apparently they felt they should sign us up on our behalf. How thoughtful.</p><p>While dealing with the cancellation fee, another shady act came to light. We started our TV service as a bundle with an existing AT&amp;T phone service. A few months later, that bundle inexplicably &ldquo;expired&rdquo; and the two services were separated into individual bills. They conveniently failed to notify us that the elapsed time of our service plan reset to zero when the bundle expired. So after several months of paying for TV service, we had still officially only paid for zero of the 18 months of service. Makes sense from a money-grubbing-bastard point of view.</p><p>Maybe it&rsquo;s just better to avoid package deals and pay month-to-month. They&rsquo;re all crooks.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-07-25:/2007/07/25/dish-network-is-shady/</guid><link>https://willfaught.com/2007/07/25/dish-network-is-shady/</link><atom:link href="https://willfaught.com/2007/07/25/dish-network-is-shady/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Jul 2007 15:51:00 -0700</pubDate><title>Dish Network Is Shady</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I love the character Auntie Muriel in the book <em>Harry Potter and the Deathly Hallows</em>. She uses her age like some kind of free pass that entitles her to boss those younger than her (everyone) around. To paraphrase, &ldquo;Give me your chair, I&rsquo;m one hundred and seven years old.&rdquo; Awesome! It&rsquo;s like everyone is obligated to be her bitch.</p><p>There should be more age-based benefits. I would want cuts in line. We could all wear numbers ranking our seniority in the nation to help sort ourselves in line.</p><p>What older-than-thou privilege would you want? Extra credit if you know from where I got the title.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-07-24:/2007/07/24/patience-monty...climb-the-ladder/</guid><link>https://willfaught.com/2007/07/24/patience-monty...climb-the-ladder/</link><atom:link href="https://willfaught.com/2007/07/24/patience-monty...climb-the-ladder/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 24 Jul 2007 17:00:00 -0700</pubDate><title>Patience, Monty…Climb The Ladder</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Honestly, I think I enjoy the titles of The Onion articles more than the actual articles. For example:</p><ul><li><p>Actress&rsquo; Abortion Written Into TV Show</p></li><li><p>High School Student Council Passes Nonbinding Resolution</p></li><li><p>Kindergartner Being Groomed For Line-Leader Position</p></li><li><p>Unreleased Jimmy Page Guitar Riff To Be Retrieved From Secret Vault To Save Rock And Roll</p></li><li><p>Anchor Ad-Libs News With 97 Percent Accuracy</p></li></ul>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-03-05:/2007/03/05/the-onions-article-titles-are-the-best-part/</guid><link>https://willfaught.com/2007/03/05/the-onions-article-titles-are-the-best-part/</link><atom:link href="https://willfaught.com/2007/03/05/the-onions-article-titles-are-the-best-part/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 05 Mar 2007 18:34:00 -0800</pubDate><title>The Onion’s Article Titles Are The Best Part</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>If you ever have to give a 40+ minute presentation about a <a href=https://www.cs.utah.edu/%7Ewilson/compilers/old/papers/p157-landin.pdf rel=external>paper</a>
you don&rsquo;t adequately understand, the following tips may help:</p><ul><li><p>Copy every major idea verbatim into your notes and read that to your audience.</p></li><li><p>Ask your professor to explain the things you didn&rsquo;t understand whenever possible.</p></li><li><p>Waste time by copying every example from the paper onto the board and explaining them in detail.</p></li><li><p>Have a partner and alternate talking about topics. The one not speaking can read ahead in the paper or notes to prepare for the next topic.</p></li></ul><p>I suppose you could play dumb to stretch the second one out. I think that was the longest hour and a half of my life, or close to it. <a href=https://en.wikipedia.org/wiki/Peter_Landin rel=external>Landin</a>
can&rsquo;t write to save his life and can bite my shiny metal ass.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-01-21:/2007/01/21/presentation-tips/</guid><link>https://willfaught.com/2007/01/21/presentation-tips/</link><atom:link href="https://willfaught.com/2007/01/21/presentation-tips/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 21 Jan 2007 17:43:00 -0800</pubDate><title>Presentation Tips</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>The average height of Dutch men and women has <a href=https://www.newyorker.com/fact/content/articles/040405fa_fact?040405fa_fact rel=external>increased so dramatically in the past century</a>
that being too tall for a standard-height ceiling or a standard-length bed has become a common problem. So problematic, in fact, that there is a <em>tall person organization</em> that lobbies on behalf of tall people for more head room:</p><blockquote><p>The Netherlands, as any European can tell you, has become a land of giants. In a century&rsquo;s time, the Dutch have gone from being among the smallest people in Europe to the largest in the world. The men now average six feet one—seven inches taller than in van Gogh&rsquo;s day—and the women five feet eight. The national organization of tall people, Klub Lange Mensen, has considerable lobbying power. From Rotterdam to Eindhoven, ceilings have had to be lifted, furniture redesigned, lintels raised to keep foreheads from smacking them. Many hotels now offer twenty-centimetre bed extensions, and ambulances on occasion must keep their back doors open, to allow for patients&rsquo; legs. &ldquo;We will not go through the ceiling,&rdquo; the pediatrician Hans van Wieringen assured me, after summarizing national height surveys that he had coördinated. &ldquo;But it is possible that we will grow another ten centimetres.&rdquo;</p></blockquote><p>What I want to know is where is my college student lobbyist?</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2007-01-12:/2007/01/12/theres-a-lobbyist-for-everything-these-days/</guid><link>https://willfaught.com/2007/01/12/theres-a-lobbyist-for-everything-these-days/</link><atom:link href="https://willfaught.com/2007/01/12/theres-a-lobbyist-for-everything-these-days/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Fri, 12 Jan 2007 17:43:00 -0800</pubDate><title>There’s A Lobbyist For Everything These Days</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>When I was young, I wished I could write all my Christmas thank you cards using mail merge and get away with it. Good manners, bah! I think if I did do it, the electronic or printed format would give me away. Maybe if I printed using a cursive font?&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2007-01-08:/2007/01/08/boilerplate-manners/</guid><link>https://willfaught.com/2007/01/08/boilerplate-manners/</link><atom:link href="https://willfaught.com/2007/01/08/boilerplate-manners/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 08 Jan 2007 17:43:00 -0800</pubDate><title>Boilerplate Manners</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Happy New Year, everyone! I had a great night. Sadly, I forgot to bring my camera and snap a few shots of my friends and I. I guess one of these days I&rsquo;ll remember. Maybe if I get a slimmer camera.</p><p>My watch was off by about half a minute from the cell phone network time again, just like last year. The people around me were counting down to my watch while everyone else was staring intently at their cell phone screens, waiting for the minutes to hit zero. So there were two &lsquo;Happy New Year!&rsquo; cheers at the party. Aaaaakward. My watch is synced up to a local time reference, so screw network time.</p><p>One of my New Year&rsquo;s resolutions is to take dancing lessons. I&rsquo;d like to learn ballroom, swing, and salsa dancing. I used to know three swing moves, but I realized last night that I had forgotten the coolest one of the three, so my dance moves are woefully inadequate for impressing the ladies. Learning more about wine would be really cool, too.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2006-12-31:/2006/12/31/happy-new-year/</guid><link>https://willfaught.com/2006/12/31/happy-new-year/</link><atom:link href="https://willfaught.com/2006/12/31/happy-new-year/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Sun, 31 Dec 2006 17:42:00 -0800</pubDate><title>Happy New Year!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I bet it&rsquo;s pretty hard to express your anger as a musician if you play the harp. I just don&rsquo;t see it happening. Whatever you did, it seems like it would come out cheery and sweet. Bummer.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2006-11-27:/2006/11/27/my-thoughts-on-the-harp/</guid><link>https://willfaught.com/2006/11/27/my-thoughts-on-the-harp/</link><atom:link href="https://willfaught.com/2006/11/27/my-thoughts-on-the-harp/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 27 Nov 2006 17:41:00 -0800</pubDate><title>My Thoughts On The Harp</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve been reading an essay by <a href=https://en.wikipedia.org/wiki/Mark_Laidlaw rel=external>Marc Laidlaw</a>
, entitled &ldquo;<a href="https://marclaidlaw.com/?page_id=17" rel=external>The Hypermodern Muse</a>
&rdquo;, in which he presents his experiences and reflections on writing for games. In case you don&rsquo;t know, he&rsquo;s the writer for Valve&rsquo;s critically-acclaimed <a href=https://en.wikipedia.org/wiki/Half-Life_2 rel=external>Half-Life</a>
games. When describing the essence of fusing writing with gameplay to make truly great games, he uses the game <a href=https://en.wikipedia.org/wiki/Majora%27s_Mask rel=external>Majora&rsquo;s Mask</a>
as an example. MM is one of my favorite games ever, but I&rsquo;ve never been able to satisfactorily express why. When I read this, I realized that what he talked about was exactly what I had felt deep down this whole time.The following is the excerpt about MM:</p><blockquote><p>But what about fuel? What makes this ship fly?</p><p>Here&rsquo;s where we diverge from the orderly routine of construction.</p><p>Here&rsquo;s where the blueprints are of little use, and writers fall back on their own odd survival skills.</p><p>You might be disheartened to learn that the writer&rsquo;s life at Valve is not all glory. It is not as exciting as you might think to find a dozen ways to write, &ldquo;RELOADING!&rdquo;</p><p>But the Half-Life games are made up of a huge laundry list of exactly these kinds of lines. And in fact, turning them into exciting dialog is about as thrilling as converting someone&rsquo;s laundry list would be.</p><p>Without inspiration, without our muse, we&rsquo;d have nothing to cram into the carefully constructed corners of these contraptions.</p><p>I&rsquo;d like to take the example of the Majora&rsquo;s Mask, an episode in the Legend of Zelda series that I consider the closest thing to an Alice in Wonderland level classic that the industry has yet created.</p><p>Here is a game so intricate it appears to have been designed by Lewis Carroll working in concert with M.C. Escher and a Black Forest clockmaker. Every single bit of this game is intricately engineered to interlock with every other piece, on a scale that is truly beyond my ability to visualize.</p><p>Underpinning this game, was a well-oiled development team, fresh from making Ocarina of Time, and an intricate plan. Without this, the whole thing falls apart. And yet, every single piece of this elaborate contraption is exploding with life and character. There is not a single NPC who doesn&rsquo;t seem to have some completely bizarre backstory. The closer you look, the weirder it gets. And, often, the more poignant. There&rsquo;s nothing wasted in this elegant design. Every character also has a very specific reason to be there for purposes of gameplay.</p><p>If you&rsquo;re not familiar with this twisted jewel of the Zelda series, it takes place entirely in the span of three days, with an ominous moon-sized clock ticking toward doomsday. Every time you peel back a layer of the game, you have a chance to set the clock back to the first moment of the first day and save the world from certain destruction. You do this by influencing time, by tipping the balance a little at a time, interfering with the clockwork lives of the world&rsquo;s inhabitants. Only you, the player, in the guise of Link, are free to move in and out of time. Which is to say, only you can save the world.</p><p>What the world is made up of, in addition to the traditional series of Zelda dungeons, is a cast of bizarre characters locked into hundreds of intricate timelooped anecdotes. The game design is perfectly rigid; on some level it is nothing but design, scrupulous and elegant. The stories themselves are jewels set in the frame, the best ones possessing the brilliance and brightness of fairy tales or surreal fables. One in particular has always stuck with me.</p><p>In an early stage of the game you visit a desolate plateau cut in two by a dry gorge that once held a running river. On the side of the dry river sits an unmoving millwheel attached to a sad little millhouse. A little girl comes down the steps from the front door and crouches near the river. If you approach her, she flees back inside. You must restore the flow of the river to lure her out, then sneak into the house without being seen. If you do so, you discover that her father has been turned into a Gibdo–one of the wailing zombies that infest the world of Ocarina and Majora. If you have learned a song of healing, you can heal the old man, which leads to a brief scene of reunion that is more affecting than it has any right to be, considering the truncated animation, the spare text, the cartoony stylization of the scene.</p><p>Now…when Zelda fans gather, they talk about stuff like this. They spend a little bit of time talking about the puzzles, the dungeons, the clever weapons that are also keys. But mostly they talk about the odd bits. The things that come like gifts, out of nowhere; that didn&rsquo;t have to be anything in particular, but end up being perfectly memorable.</p><p>This scene with the waterwheel and the father and daughter reunited, is a perfect meld of story and puzzle, but…it could have been anything. From a design standpoint, it need only satisfy the requirement that it be a puzzle with a layered, multipart solution. You need to restore the river&rsquo;s flow, and in order to do that you need to have solved other puzzles. You need to sneak into the house while the girl is outside. To heal her father you need to have learned a specific song.</p><p>To solve the puzzles requires mastery of the larger time dilemmas of the game. Lacking any one of these pieces, you experience slightly more of the mystery; only with all of them in place can you solve it. There&rsquo;s the puzzle. But is there anything in the puzzle specification that suggests a little girl and her father—let alone a tender reunion? Is it necessary that the reward for solving the puzzle be anything more than the Gibdo mask? Why should it have any emotional content? All of these additional aspects are irrelevant, but without them, would I have remembered the scene? I should mention, this is little sketch of a scene filled me with envy, and it&rsquo;s only one. The frustrated romance of Kafei and Anju, two lovers who continually elude each other, is structurally worthy of Shakespeare. And the intricate framework of Majora&rsquo;s Mask allows this kind of character-driven scene over and over again. It is like a Chinese puzzle box full of hidden drawers, a twisting road that is nothing but detours through a fantastic country.</p><p>In fact, every story except Link&rsquo;s is a detour. As the hero, his journey is ultimately generic. He must save the world. How dull!</p><p>However, the designers have taken the care to create a world worth saving. They&rsquo;ve hit upon the fact that it&rsquo;s the thing our hero cares about that matters most. It&rsquo;s the weird supporting characters and mysterious moments we remember.</p><p>The writer Karen Joy Fowler has pointed out that the heros of most stories tend to be unlike anyone you actually know or care about, and for this reason rather unsympathetic. However, if you cast around in the shadows, while you can generally find someone you can relate to. It may be a sidekick or someone even less conspicuous. There is a lot of magic in an unfinished sketch, a partial glimpse; the mind never stops trying to fill in the blanks of these characters.</p></blockquote>]]></description><guid isPermaLink="false">tag:willfaught.com,2006-10-26:/2006/10/26/writing-for-video-games/</guid><link>https://willfaught.com/2006/10/26/writing-for-video-games/</link><atom:link href="https://willfaught.com/2006/10/26/writing-for-video-games/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 26 Oct 2006 18:39:00 -0700</pubDate><title>Writing For Video Games</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I just got my first care package in the mail in &lt;em>years&lt;/em> from my grandma. Mmm…cookies! I forgot how nice it is to get this stuff. Incidently, I was drinking a beer at the time, so I decided to combine the two. Not bad.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2006-10-25:/2006/10/25/why-cant-i-be-bombable/</guid><link>https://willfaught.com/2006/10/25/why-cant-i-be-bombable/</link><atom:link href="https://willfaught.com/2006/10/25/why-cant-i-be-bombable/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 25 Oct 2006 18:38:00 -0700</pubDate><title>Why Can’t I Be Bombable?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>Have you ever taken a test and been stumped by the easiest thing on it? No? Er — me neither. But if that ever did happen, I would think that would suck. On a related note, it&amp;rsquo;s very satisfying to ask a prof, just before his exam, to show you how to solve some problems that turn out to be on the exam.&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2006-10-23:/2006/10/23/stupid-nfas/</guid><link>https://willfaught.com/2006/10/23/stupid-nfas/</link><atom:link href="https://willfaught.com/2006/10/23/stupid-nfas/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 23 Oct 2006 18:37:00 -0700</pubDate><title>Stupid NFAs</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I feel like an unacceptable portion of my class experience has been learning the material on my own. Granted, being able to learn something on my own is a good skill, but that&rsquo;s not what I&rsquo;m paying these people for. I&rsquo;m sick and tired of walking out of lectures wanting my 50 minutes back. It&rsquo;s such a relief to get a prof that I can understand. When will they learn that even though you have a PhD in something, you aren&rsquo;t necessarily qualified to convey that knowledge to others. Some of these profs need to retake speech 101.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2006-10-19:/2006/10/19/learn-by-doing...it-yourself/</guid><link>https://willfaught.com/2006/10/19/learn-by-doing...it-yourself/</link><atom:link href="https://willfaught.com/2006/10/19/learn-by-doing...it-yourself/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Thu, 19 Oct 2006 18:37:00 -0700</pubDate><title>Learn By Doing…It Yourself?</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>Lost is back, baby! Season three kicked off a few weeks ago, and so far it&rsquo;s off to a good start. I watched seasons one and two again with my mom this summer, so I&rsquo;ve got everything fresh in my mind and ready to piece it all together. I&rsquo;ve been listening to a really good podcast for Lost at <a href=https://www.deltaparkproject.com/lost/ rel=external>deltaparkproject.com/lost</a>
. Sadly, the season premiere wasn&rsquo;t as good as season two&rsquo;s, but oh well. It still had a really good beginning. I&rsquo;m really glad Desmond and Locke made it through the season two finale; they were both too good to write off. And it was nice to have Boone back for a little bit. The best theory I&rsquo;ve heard so far for what&rsquo;s going on is that there are in fact <em>two</em> groups of Others; the Dharma Initiative members split into two factions and the people seen in the jungle by Eko and Jin with the teddy bear are a separate group. This would explain why Ben keeps referring to his group as the &lsquo;good ones&rsquo;. We&rsquo;ll see. I&rsquo;m lost as ever.</p>]]></description><guid isPermaLink="false">tag:willfaught.com,2006-10-18:/2006/10/18/lost-is-back/</guid><link>https://willfaught.com/2006/10/18/lost-is-back/</link><atom:link href="https://willfaught.com/2006/10/18/lost-is-back/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Wed, 18 Oct 2006 18:36:00 -0700</pubDate><title>Lost Is Back!</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description><![CDATA[<p>I&rsquo;ve just found the funniest comic I&rsquo;ve seen in a long time. My apologies if you don&rsquo;t get this, it&rsquo;s kinda nerdy. So sue me. Found <a href=https://xkcd.com/c149.html rel=external>here</a>
.</p><div class=paige-shortcode-figure><div class="align-items-center d-flex h-100 justify-content-center"><figure class=mb-0><div class="d-flex justify-content-center text-center"><div class=paige-shortcode-image><img class=img-fluid crossorigin=anonymous height=299 referrerpolicy=no-referrer src=https://willfaught.com/png/paige/sandwich_4646779865572642446.7ffa29fbd25da766dfb2494f2103afe6ce4514f3ca7989b90863300bf0f8796c.png width=360></div></div></figure></div></div>]]></description><guid isPermaLink="false">tag:willfaught.com,2006-10-16:/2006/10/16/sudo-read-this/</guid><link>https://willfaught.com/2006/10/16/sudo-read-this/</link><atom:link href="https://willfaught.com/2006/10/16/sudo-read-this/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Mon, 16 Oct 2006 18:32:00 -0700</pubDate><title>Sudo Read This</title></item><item><author>pushes.kingdom_0e@icloud.com (Will Faught)</author><description>&lt;p>I was walking out of class on Tuesday and it just died. The strap of my right flip flop broke off. So I had to walk all over campus with one shoe to do my other errands. I asked in the Health Center if they had any plastic booty-thingies for feet and the X-ray technician jumped on it and fixed it for me. Such service! Thank you, Dorothy the Technician, from the bottom of my heart!&lt;/p></description><guid isPermaLink="false">tag:willfaught.com,2006-09-26:/2006/09/26/my-shoe-died/</guid><link>https://willfaught.com/2006/09/26/my-shoe-died/</link><atom:link href="https://willfaught.com/2006/09/26/my-shoe-died/" hreflang="en-us" rel="alternate" type="text/html"/><pubDate>Tue, 26 Sep 2006 18:32:00 -0700</pubDate><title>My Shoe Died</title></item></channel></rss>