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

<channel>
	<title>MentalPolyphonics</title>
	<atom:link href="http://mentalpolyphonics.com/feed" rel="self" type="application/rss+xml" />
	<link>http://mentalpolyphonics.com</link>
	<description>Once again upon the mic.</description>
	<lastBuildDate>Mon, 13 May 2013 04:55:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Review: Rogers vs. Teksavvy</title>
		<link>http://mentalpolyphonics.com/posts/review-rogers-vs-teksavvy</link>
		<comments>http://mentalpolyphonics.com/posts/review-rogers-vs-teksavvy#comments</comments>
		<pubDate>Tue, 23 Apr 2013 00:14:31 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18146</guid>
		<description><![CDATA[Today Jill and I completed the switch away from one of Canada&#8217;s Big Telecoms, Rogers, to an indie ISP called Teksavvy. This is about what that process was like. There&#8217;re a bunch of stories floating around about how hard it is to switch cable providers. I just want to get those out of the way: [...]]]></description>
				<content:encoded><![CDATA[<p>Today Jill and I completed the switch away from one of Canada&#8217;s Big Telecoms, Rogers, to an indie ISP called Teksavvy. This is about what that process was like.</p>
<p>There&#8217;re a bunch of stories floating around about how hard it is to switch cable providers. I just want to get those out of the way: they&#8217;re <em>mostly</em> not true. You don&#8217;t, for example, have to pay Teksavvy for a year upfront. That said, there were some rough patches &#8212; which mostly seemed to be oligopolistic roadblocks designed to favor incumbents.</p>
<p>I took notes during the transition, and I&#8217;ll present those here. But first, pictures! Here&#8217;s speed under Rogers. This is one of the reasons Canada has famously bad internet service:</p>
<p><a href="http://mentalpolyphonics.com/wp-content/uploads/2013/04/rogers-speed.png"><img class="aligncenter size-full wp-image-18148" alt="rogers speed" src="http://mentalpolyphonics.com/wp-content/uploads/2013/04/rogers-speed.png" width="734" height="457" /></a></p>
<p>And here&#8217;s Teksavvy crushing Rogers&#8217; download speed with a less expensive plan:</p>
<p><a href="http://mentalpolyphonics.com/wp-content/uploads/2013/04/teksavvy-speed.png"><img class="aligncenter size-full wp-image-18147" alt="teksavvy speed" src="http://mentalpolyphonics.com/wp-content/uploads/2013/04/teksavvy-speed.png" width="728" height="448" /></a></p>
<p>I was surprised to see Teksavvy&#8217;s upload speed at around half of Rogers&#8217;, but my home up-spout doesn&#8217;t need to be fat &#8212; I&#8217;m mostly sending requests to trigger downloads. Still, Teksavvy&#8217;s communication around that could have been clearer. It was a small disappointment.</p>
<p>On to the numbers. Here&#8217;s the breakdown of what it cost to switch in cold, hard Queenbacks:</p>
<table>
<thead>
<tr>
<th>Item</th>
<th>Cost</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td>Thomson DCM 476</td>
<td>$99.00</td>
<td>New, faster cable modem needed.</td>
</tr>
<tr>
<td>Modem Shipping</td>
<td>$10.00</td>
<td>Teksavvy sold and shipped modem.</td>
</tr>
<tr>
<td>Cable service activation</td>
<td>$65.00</td>
<td>Teksavvy hookup fee (?)</td>
</tr>
<tr>
<td>Cable activation fee discount</td>
<td>($20.00)</td>
<td>Fee discount!</td>
</tr>
<tr>
<td>Cable Move Fee</td>
<td>$65.00</td>
<td>Incumbent disconnection fee.</td>
</tr>
<tr>
<td>ASUS RT-AC66U</td>
<td>$190.00</td>
<td>Shiny new WiFi router.</td>
</tr>
<tr>
<td><strong>Total Upfront costs</strong></td>
<td><strong>$409.00</strong></td>
<td></td>
</tr>
<tr>
<td>TekSavvy monthly cost</td>
<td>$54.00</td>
<td></td>
</tr>
<tr>
<td>Rogers monthly cost</td>
<td>$70.00</td>
<td></td>
</tr>
<tr>
<td>Monthly savings</td>
<td>$16.00</td>
<td></td>
</tr>
<tr>
<td><strong>Payback months</strong></td>
<td><strong>25.56</strong></td>
<td>Just over two years to recoup.</td>
</tr>
</tbody>
</table>
<p>Twenty-six months from now the savings from leaving Rogers will surpass the costs of changing to Teksavvy, all while enjoying a faster connection &#8212; it&#8217;s a no-brainer. There are also potential cost savings in the router &#8212; I wanted 802.11ac support so I bought the highest-testing unit on Tom&#8217;s Hardware &#8212; and in the modem, which you can find cheaper online.</p>
<p>It&#8217;s very disappointing to see both disconnection and reconnection fees adding over 33% to the total cost, when the actual change seems to be who&#8217;s billing me for using extant infrastructure. Again, this seems to be a boon to incumbents &#8212; a deterrent against and penalty for leaving their garden.</p>
<p>A final note about costs: I am *sure*, but I have no proof, that our Rogers service included a free router-modem as a promotion when we signed up. On reviewing our bills it turns out that was probably a misrepresentation by the sales associate &#8212; we&#8217;ve been charged a monthly rental fee for the thing this whole time, rolled into the price.</p>
<blockquote><p>&#8220;With an honest man no contract is necessary. With a dishonest man no contract is sufficient.&#8221;</p></blockquote>
<p>So yeah: a failure of judgement on my part &#8212; trusting a Rogers employee (presumably one on commission) was a bad move. Here are some qualitative points about the switch:</p>
<ul>
<li>It takes 30 days to disconnect from Rogers (another perk of being the incumbent). Just tell them you&#8217;re leaving the province if you want to avoid the up-sell and begging when you call to cancel.</li>
<li>I scheduled Teksavvy connection the day after Rogers disconnection. Disconnection happens around midnight, so you don&#8217;t have Internet on disconnection day. Connection happens during business hours on connection day. Result: about 32 hours with no internet. The horror&#8230; the horror&#8230; j/k: I tethered my phone and shared the connection &#8212; have a backup plan.</li>
<li>Try to schedule Teksavvy connection a day or two before Rogers disconnection. It might cut your downtime to zero: see what happens.</li>
<li>TekSavvy&#8217;s billing system is a bit goofy &#8212; it gives you something like three warnings before canceling your order. I confirmed my order and then it warned me to confirm again (&#8220;strike two of three&#8221;)! I responded to that right away and accounting sorted it out.</li>
<li>TekSavvy generally has fantastic, responsive email support across all departments.</li>
<li>There was a *slight* hiccough in setup because our building is weird and they couldn&#8217;t identify the apartment by postal address. Teksavvy called me to fix it right away, weeks before it would have been an issue.</li>
<li>No on-site installation was necessary (whereas Rogers sent a tech).</li>
<li>TekSavvy&#8217;s hold music is dubstep.</li>
</ul>
<p>I&#8217;ll update if there&#8217;s more to say, but so far, so good. I&#8217;m very pleased with the result. It feels good to get out from under Big Telecom. Payin&#8217; less and gettin&#8217; more &#8212; bro, I know that feel.</p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/review-rogers-vs-teksavvy/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>broformance</title>
		<link>http://mentalpolyphonics.com/posts/broformance</link>
		<comments>http://mentalpolyphonics.com/posts/broformance#comments</comments>
		<pubDate>Thu, 04 Apr 2013 23:31:09 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Writing]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18134</guid>
		<description><![CDATA[broformance is a terrible title, but whatever. Today on my social media presence I played with performativity by re-imagining myself as a detached modern Winston Smith. But I didn&#8217;t intend that. It just came out that way because of my feels, bro. Anyway, here&#8217;s what it looked like through Storify&#8217;s cracked mirror: [View the story [...]]]></description>
				<content:encoded><![CDATA[<p><em>broformance</em> is a terrible title, but whatever. Today on my social media presence I played with performativity by re-imagining myself as a detached modern Winston Smith.</p>
<p>But I didn&#8217;t intend that. It just came out that way because of my feels, bro.</p>
<p>Anyway, here&#8217;s what it looked like through Storify&#8217;s cracked mirror:</p>
<p><script src="//storify.com/alexlionone/broformance.js"></script><br />
<noscript>[<a href="//storify.com/alexlionone/broformance" target="_blank">View the story "broformance" on Storify</a>]</noscript>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/broformance/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Changing Face of MPF</title>
		<link>http://mentalpolyphonics.com/posts/the-changing-face-of-mpf</link>
		<comments>http://mentalpolyphonics.com/posts/the-changing-face-of-mpf#comments</comments>
		<pubDate>Mon, 01 Apr 2013 18:04:02 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Admin]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18104</guid>
		<description><![CDATA[This site is probably going long-form: fewer, longer posts, excluding this one; maybe some better surfacing and curation (I have more buzzwords now that I&#8217;m a media pro). I&#8217;m also going to be purging our history, I&#8217;m just thinking about a reasonable way of doing that. Jared&#8217;s post about quitting Evernote is probably going to [...]]]></description>
				<content:encoded><![CDATA[<p>This site is probably going long-form: fewer, longer posts, excluding this one; maybe some better surfacing and curation (I have more buzzwords now that I&#8217;m a media pro).</p>
<p>I&#8217;m also going to be purging our history, I&#8217;m just thinking about a reasonable way of doing that. <a href="http://mentalpolyphonics.com/posts/why-i-stopped-getting-things-done-with-evernote">Jared&#8217;s post about quitting Evernote</a> is probably going to be the zero-history cutoff as it accounts for approximately 20% of our daily traffic.</p>
<p>We started in 2006, and the project has been of inestimable value to me: literally life-changing. Thank you, everyone.</p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/the-changing-face-of-mpf/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personal Digital Security</title>
		<link>http://mentalpolyphonics.com/posts/personal-digital-security</link>
		<comments>http://mentalpolyphonics.com/posts/personal-digital-security#comments</comments>
		<pubDate>Sat, 30 Mar 2013 23:14:22 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18105</guid>
		<description><![CDATA[I&#8217;ve been spending the last few weeks securing my digital lifestyle as much as possible. First, a note on paranoia: It&#8217;s possible to recurse (almost-)infinitely into paranoia with digital security. So, for example, the accusation (which I haven&#8217;t verified) that TrueCrypt&#8217;s binary checksums never match those of its manually compiled source is troubling. The mitigation [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been spending the last few weeks securing my digital lifestyle as much as possible. First, a note on paranoia:</p>
<p>It&#8217;s possible to recurse (almost-)infinitely into paranoia with digital security. So, for example, the accusation (which I haven&#8217;t verified) that TrueCrypt&#8217;s binary checksums never match those of its manually compiled source is troubling. The mitigation is to do a security audit of the public code yourself and then compile your own version, which presumably you would do with a compiler whose code you&#8217;ve audited for security and compiled <strong>by hand into machine code</strong> to avoid recursive definition attacks. This is after you&#8217;ve done the same for your operating system. And your hardware.</p>
<p>But then: what&#8217;s the value of what you&#8217;re protecting and what are you actually defending it against? If you&#8217;re a normal person actually worried about advanced persistent threats (read: states) then you&#8217;re probably better off not using digital technology and seeking professional help. Let me reiterate that: if you&#8217;re an other-wise normal person who seriously thinks your gcc binaries have been compromised by a state actor, you should probably go see a psychologist. I talk to mine about paranoia all the time, and even I&#8217;m not that crazy <img src='http://mentalpolyphonics.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So, my goal is simply to present a very low target profile to people looking for someone to fuck with. You don&#8217;t need to outrun the bear, you just need to outrun Fatty McGee. With those caveats in mind, here&#8217;s what I&#8217;ve been up to:</p>
<ul>
<li>Preferring Firefox and locking it down by disabling cookies, having it delete everything on close, and installing HTTPS Everywhere, AdBlock, HTTPS Finder, and NoScript. A good synergy here is that it forces me to re-login to all accounts, which keeps me&#8230;</li>
<li>Doing a rolling reset of all of my passwords using Mountain Lion&#8217;s built in password assistant. Every time I log-in to a service I generate a new, strong password and save it in a password vault (KeyChain). I&#8217;m going to keep doing this until I&#8217;ve cycled through every account and made its credentials unique. It&#8217;s just a better policy to compartmentalize the inevitable failures, even for throwaway accounts.</li>
<li>Enabling full disk encryption on all devices and requiring a strong wake password.</li>
<li>Enabling two factor authentication for all services that offer it.</li>
<li>Shredding all paper documents that are even slightly sensitive. If they can&#8217;t be shredded they are locked in a safe. Document confetti is disposed of in batches: a little this week, a little next week. I&#8217;ve been known to dispose of confetti in handfuls spread across different locations. We also have a hardened mailbox.</li>
</ul>
<p>This is all in addition to running my internet connection, at times, through a for-pay European VPN service I trust (ipredator.se). I&#8217;ve also double-checked my firewall settings and, at times, have been running a non-exit Tor relay on the theory that a network that&#8217;s more secure for you is also more secure for me.</p>
<p>There are a couple of major outstanding items on my security todo list. I&#8217;d like to set up&#8230;</p>
<ul>
<li>&#8230;an encrypted cloud drive. Maybe <a href=http://tonyonsecurity.com/2012/08/05/securing-your-data-on-dropbox-truecrypt/">TrueCrypt on Dropbox</a>, but GPG is <strong>probably</strong> a more secure encryption provider. And mega.co.nz is <strong>probably</strong> a better cloud service (in terms of size and <em>maybe</em> security &#8212; I dig their deniability model). Maybe TrueCrypt + Google Drive is the most practical and usable.</li>
<li>&#8230;email encryption, but the usability problems of PKIs <strong>destroy</strong> the network effects necessary to make that sensible.</li>
<li>&#8230;a way of accessing my passwords without physical, double-authenticated access to my home machine. Currently, if a session expires while I&#8217;m out and about, the app is dead. A possible mitigation is to set up a home VPN or, as above, encrypted cloud storage.</li>
</ul>
<p>There&#8217;s a common fallacy often presented to the public: that there&#8217;s a tradeoff between security and privacy. &#8220;We need to have less privacy, because terrorists hate our freedom.&#8221; It&#8217;s pretty easy to dismantle logically: A locked house is both more secure and more private.</p>
<p>However, the actual dichotomy I&#8217;m noticing is that there is a big tradeoff between security and usability. This makes much more intuitive sense: Having to regularly two-factor authenticate in a browser set to never remember you is mildly annoying, just like it&#8217;s mildly annoying to have to lock and unlock your house (and arm and disarm your alarm) all the time.</p>
<p>Another example of poor security usability is the web itself: I often find myself dropping into less secure browsing modes to get sites to function. A surprising example is Google Maps, which is entirely unusable over HTTPS. Most sites take hard usability hits under NoScript. My iCloud account is so secure right now I can&#8217;t actually fully authenticate into it.</p>
<p>All of these security measures have polarized the risk of breach: The points of failure &#8212; &#8220;the keys to the kingdom&#8221; &#8212; are access to my home computer with knowledge of its passphrase and access to my phone with knowledge of its passphrase. This means storing my passwords on my home computer is actually <em>less</em> secure than storing them in the cloud: My cloud presence is largely mediated by two-factor authentication, so even with physical access to my house a digital attacker would also need access to my phone.</p>
<p>If something unfortunate happened to my phone, intentionally or otherwise, as of today it would take significant effort to reconstruct my online identities. I might need a wallet chain <img src='http://mentalpolyphonics.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/personal-digital-security/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metareview: Sim City 5</title>
		<link>http://mentalpolyphonics.com/posts/metareview-sim-city-5</link>
		<comments>http://mentalpolyphonics.com/posts/metareview-sim-city-5#comments</comments>
		<pubDate>Sat, 16 Mar 2013 19:43:55 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18053</guid>
		<description><![CDATA[First, if you haven&#8217;t been following the saga in the gaming press surrounding the release of the new Sim City, please be warned: this is presented without context or references. It might be hard to follow if you haven&#8217;t been part of the conversation so far. My friends are mostly strategy gamers, and this was [...]]]></description>
				<content:encoded><![CDATA[<p>First, if you haven&#8217;t been following the saga in the gaming press surrounding the release of the new <em>Sim City</em>, please be warned: this is presented without context or references. It might be hard to follow if you haven&#8217;t been part of the conversation so far.</p>
<p>My friends are mostly strategy gamers, and this was my response to one asking me to join his group of regional mayors. I decided it wasn&#8217;t a nice email to send to a friend who was inviting me to play a game, so I lightly-revised and slightly-expanded it before publishing it here instead.</p>
<p>Last, this is essentially a review-of-the-reviews &#8212; a metareview &#8212; and I should mention I&#8217;ve never actually played the game. Hopefully the reasons why will be clear.</p>
<p>&#8212;</p>
<p>To acknowledge my own bias in all of this upfront: I think EA is one of Satan&#8217;s more pustular stinking tentacles. I do not give them the benefit of the doubt.</p>
<p>I&#8217;ve been reading the articles about the server issues, the small city sizes, the poor traffic AI design, etc. All that aside, I have three observations:</p>
<p>1) Not doing an offline mode is a terrible PR move. It is technically possible, and simple enough that there&#8217;s a fan mod that does it. Refusing to do so, repeatedly, and equivocating as to its technical feasibility is an odd-feeling combination of lying to fans while ignoring them. It&#8217;s bad art, bad business, and bad entertainment. It&#8217;s the kind of thing you do when you&#8217;re dictating to your audience instead of listening to them.</p>
<p>It strikes me that a feature-restricted offline client would make an <em>excellent</em> free-to-play version of the game, and that connecting to a server to open up extra features should be what costs money. They compare it to playing WoW offline, while not seeming to understand that WoW <strong>is</strong> largely offline in terms of content. In WoW&#8217;s case you pay monthly to connect your fat client to the server. Warsong Gulch&#8217;s geometry isn&#8217;t streamed, it&#8217;s local. That&#8217;s why players need to install game updates instead of just having the changes show up one day on the server.</p>
<p>That nonsense about &#8220;moving calculations into the cloud&#8221; grates on me every time (Maxis GM) Lucy Bradshaw says it too. &#8220;Servers&#8221; aren&#8217;t &#8220;the cloud&#8221; &#8212; if the game had been built to use the cloud there would have been no traffic problems (because clouds typically scale to demand) but it would have cost EA more. A technical point, maybe, but to me it beggars her credibility.</p>
<p>2) I feel really bad for the software people who had to deal with the server debacle. That must have been a worse, deeper level of hell than the one that incinerated me. Given EA&#8217;s reputation they were probably coming off a prelaunch crunch and ended up going straight into a postlaunch firestorm. That&#8217;s like being promised you&#8217;ll get shot at the end of a forced march but instead you&#8217;re forced to build a pyramid &#8212; and *then* get shot.</p>
<p>I don&#8217;t want to help make death march game development more profitable than it already is. In fact, I&#8217;m toying around with the notion of creating a &#8220;cruelty free&#8221;-type certification for games that would highlight poor treatment of developers (who should unionize).</p>
<p>3) Once again, games journalism has been shown to be fundamentally compromised. It seems EA managed to convince a bunch of writers that server problems shouldn&#8217;t effect the review score while simultaneously insisting that the core gameplay experience requires a server. This is clearly jibberish, but hey: why expect people to bite the hand that feeds them?</p>
<p><img src="http://rack.2.mshcdn.com/media/ZgkyMDEyLzA4LzEzLzE5XzA3XzA2Xzc5Ml9maWxl/5a37feee" alt="Sim City 5 at night" /></p>
<p>That said, I hear it looks pretty at night.</p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/metareview-sim-city-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Women as Plot Functions</title>
		<link>http://mentalpolyphonics.com/posts/women-as-plot-functions</link>
		<comments>http://mentalpolyphonics.com/posts/women-as-plot-functions#comments</comments>
		<pubDate>Sun, 10 Mar 2013 17:40:24 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18062</guid>
		<description><![CDATA[Tropes v. Women in Games: This is a pretty great deconstruction of gender roles in games. Interactive entertainment, despite some progress, still has significant gender portrayal problems (as does Hollywood). I like her usage of &#8220;damseled&#8221;. It seems to assume that the characters exist outside of their representation, which is pretty radical (and might be [...]]]></description>
				<content:encoded><![CDATA[<p>Tropes v. Women in Games:</p>
<p><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/X6p5AZp7r_Q" frameborder="0" allowfullscreen></iframe></p>
<p>This is a pretty great deconstruction of gender roles in games. Interactive entertainment, despite some progress, still has significant gender portrayal problems (as does Hollywood).</p>
<p>I like her usage of &#8220;damseled&#8221;. It seems to assume that the characters exist outside of their representation, which is pretty radical (and might be true), and that their particular creators do them violence through stereotypical gender portrayal.</p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/women-as-plot-functions/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Cloud and Sim City</title>
		<link>http://mentalpolyphonics.com/posts/the-cloud-and-sim-city</link>
		<comments>http://mentalpolyphonics.com/posts/the-cloud-and-sim-city#comments</comments>
		<pubDate>Sun, 10 Mar 2013 17:09:09 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18019</guid>
		<description><![CDATA[Just a quick note on Lucy Bradshaw, Maxis&#8217; GM, saying this about the new Sim City&#8216;s launch troubles: &#8220;With the way that the game works, we offload a significant amount of the calculations to our servers so that the computations are off the local PCs and are moved into the cloud. It wouldn&#8217;t be possible [...]]]></description>
				<content:encoded><![CDATA[<p>Just a quick note <a href="http://www.polygon.com/2013/3/9/4081464/simcity-interview-ea-maxis-lucy-bradshaw">on Lucy Bradshaw, Maxis&#8217; GM, saying this about the new <em>Sim City</em>&#8216;s launch troubles</a>:</p>
<blockquote><p>&#8220;With the way that the game works, we offload a significant amount of the calculations to our servers so that the computations are off the local PCs and are moved into the cloud. It wouldn&#8217;t be possible to make the game offline without a significant amount of engineering work by our team.&#8221;</p></blockquote>
<p>Their server problems clearly arose because they&#8217;re <strong>not</strong> using the cloud, which isn&#8217;t just a new name for the client/server architecture. Their system is <em>clearly not</em> dynamically adding new virtual servers to balance demand, for example.</p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/the-cloud-and-sim-city/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Control by --force</title>
		<link>http://mentalpolyphonics.com/posts/control-by-force</link>
		<comments>http://mentalpolyphonics.com/posts/control-by-force#comments</comments>
		<pubDate>Fri, 08 Mar 2013 20:50:04 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=18011</guid>
		<description><![CDATA[[Update: edited to remove nastiness about devs who don't use source control because *sigh* I'm trying to act more compassionately.] Sometimes I run across developers who do not want to use source control. Their typical reason is that it will take too long and the project schedule is already tight. I use the following scripts [...]]]></description>
				<content:encoded><![CDATA[<p>[Update: edited to remove nastiness about devs who don't use source control because *sigh* I'm trying to act more compassionately.]</p>
<p>Sometimes I run across developers who do not want to use source control. Their typical reason is that it will take too long and the project schedule is already tight.</p>
<p>I use the following scripts to route around their intransigence. I started with the idea of scraping a team&#8217;s publicly-visible code and throwing it into Subversion. Luckily this particular team was working on a WebDAV-enabled server, so I refined the idea to:</p>
<ol>
<li>Every hour:</li>
<li>Connect to WebDAV.</li>
<li>Download everything.</li>
<li>Commit to SVN.</li>
<li>Disconnect from WebDAV.</li>
</ol>
<p>I&#8217;m not saying this is the best way to accomplish my goal, it&#8217;s just the current solution. All of this code lives, on my Mountain Lion machine, in <code>~/scripts</code>. This is mount_dav.sh:<br />
<code><br />
#!/bin/sh<br />
mkdir /Volumes/dav<br />
chmod 777 /Volumes/dav<br />
expect ~/scripts/mount_dav.expect<br />
echo WebDAV mounted!<br />
</code><br />
<code>expect</code> is a new one for me. It lets you enter &#8220;interactive&#8221; sessions with text-based interfaces, which is useful for commands that ignore stdin, like <code>mount_webdav</code>. Here&#8217;s mount_dav.expect:<br />
<code><br />
#!/usr/bin/expect<br />
set timeout 60<br />
spawn /sbin/mount_webdav -i http://dav.fakevendor.com/ /Volumes/dav/<br />
expect "name:" {<br />
	send "jack.fake.name\r"<br />
}<br />
expect timeout {<br />
	exit<br />
} "word:" {<br />
	send "whutp4ssbr0\r";<br />
	exp_continue<br />
}<br />
</code><br />
As I said, <code>expect</code> is new to me, so I mostly just stole that off Stack Overflow examples: it waits for a username/password prompt and supplies my credentials (which is bad &#8212; it should grab them from Keychain Access or something). So, with those two scripts, if you do&#8230;<br />
<code><br />
> sh ~/scripts/mount_dav.sh<br />
</code><br />
&#8230; it&#8217;ll mount the WebDAV filesystem at /Volumes/dav. Now it&#8217;s simple to operate on locally. Our security policy blocks <code>rsync</code>s which are <em>actually</em> remote, but since we&#8217;re locals we&#8217;re allowed to hang (sync_svn.sh):<br />
<code><br />
#!/bin/sh<br />
sh ~/scripts/mount_dav.sh<br />
rsync -auv /Volumes/dav/project /Users/jack/project/trunk<br />
cd /Users/jack/project/trunk<br />
/opt/subversion/bin/svn add * --force<br />
cat ~/scripts/password | /opt/subversion/bin/svn commit -m "Autocommit." --username jackfake<br />
cd -<br />
sh ~/scripts/umount_dav.sh<br />
</code><br />
That copies the project to the SVN trunk, force-adds everything to the repository, and commits with an automatic message.</p>
<p><code>rsync -auv</code>, roughly, <strong>a</strong>rchives all <strong>u</strong>pdated files <strong>v</strong>erbosely. I needed to <code>--force</code> the <code>svn add *</code> to make it recursive (otherwise it skips things). Here my password is stored in another file with stronger access controls, but that&#8217;s still a bad place for it. The last line calls umount_dav.sh, which cleans up the WebDAV mount after we&#8217;re done with it:<br />
<code><br />
#!/bin/sh<br />
/sbin/umount /Volumes/dav<br />
echo WebDAV unmounted!<br />
</code><br />
Simple. Okay. Where are we? Turns out we&#8217;re almost done:</p>
<ol>
<li>Every hour:</li>
<li><del datetime="2013-03-08T19:49:52+00:00">Connect to WebDAV.</del></li>
<li><del datetime="2013-03-08T19:49:52+00:00">Download everything.</del></li>
<li><del datetime="2013-03-08T19:49:52+00:00">Commit to SVN.</del></li>
<li><del datetime="2013-03-08T19:49:52+00:00">Disconnect from WebDAV.</del></li>
</ol>
<p>This was also a cool project because it was my first (!) foray into <code>cron</code>. Here&#8217;s crontab_svn_dav, in <code>~/scripts</code>:<br />
<code><br />
#min	hour	mday	month	wday	command<br />
00	*/1	*	*	*	sh /Users/jack/scripts/sync_svn.sh<br />
</code><br />
Which means &#8220;run <code>sh /Users/jack/scripts/sync_svn.sh</code> on the stroke of every hour&#8221;. Now, finally, to kick it all off run:<br />
<code><br />
crontab crontab_svn_dav<br />
</code><br />
And at the turning of the hour you&#8217;ll get system mail that looks something like this:</p>
<pre>
from:	 Cron Daemon <jack@jacks-macbook-pro.local>
to:	 jack@jacks-macbook-pro.local
date:	 Fri, Mar 8, 2013 at 4:00 PM
subject: Cron <jack@Jacks-MacBook-Pro> sh /Users/jack/scripts/sync_svn.sh
spawn /sbin/mount_webdav -i http://dav.fakevendor.com/ /Volumes/dav/
Username: jake.fake.name
Password:
WebDAV mounted!
building file list ... done
project/css
project/css/index.css
project/index.html
[...]
sent 3270 bytes  received 102 bytes  293.22 bytes/sec
total size is 642335  speedup is 190.49
Sending        project/css/index.css
Transmitting file data .
Committed revision 2387.
/Users/jack
WebDAV unmounted!
</pre>
<p>You can see in that (fake) output that someone changed index.css since the last sync, and that change has been committed to SVN. If there are no changes, nothing commits. The daemon messages will slowly fill your system mailbox, which is kind of a pain to get at, so, in a trick I learned back at Octonet and again this afternoon&#8230;<br />
<code><br />
> echo jack@fakeemail.com >> ~/.forward<br />
</code><br />
&#8230; forwards your system mail to an account of your choice. The nice thing about this is the reports from the cron daemon can be filed away with whatever email management system you already use.</p>
<p>It can be hard to debug something that runs once per hour, so if you&#8230;<br />
<code><br />
> crontab -e<br />
</code><br />
&#8230; and change it to&#8230;<br />
<code><br />
#min	hour	mday	month	wday	command<br />
*/1	*	*	*	*	sh /Users/jack/scripts/sync_svn.sh<br />
</code><br />
&#8230; then the job will run every minute. If you want to see what jobs you have scheduled&#8230;<br />
<code><br />
> crontab -l<br />
</code><br />
&#8230; will list them, and to stop them (all) from running:<br />
<code><br />
> crontab -r<br />
</code></p>
<p>Areas for improvement:</p>
<ul>
<li>Error handling.</li>
<li>Remove hardcoded paths.</li>
<li>Secure credential storage.</li>
<li>Remove <code>cd</code>s, which are there for SVN convenience.</li>
<li><code>chmod 777</code> might be unnecessary.</li>
<li>Could do SVN branching and tagging instead of dumping on trunk.</li>
<li>Could disconnect from WebDAV after the rsync (ie: release the resource ASAP).</li>
<li>git-svn ?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/control-by-force/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Female Gaze</title>
		<link>http://mentalpolyphonics.com/posts/the-female-gaze</link>
		<comments>http://mentalpolyphonics.com/posts/the-female-gaze#comments</comments>
		<pubDate>Sat, 09 Feb 2013 17:10:34 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[Movies]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=17992</guid>
		<description><![CDATA[This is making the rounds, via Upworthy. The ad uses an overblown &#8220;female gaze&#8221; &#8212; which I think is parody, but might be wrong about. I present it here to make the male gaze more visible through contrast.]]></description>
				<content:encoded><![CDATA[<p>This is making the rounds, via Upworthy. The ad uses an overblown &#8220;female gaze&#8221; &#8212; which I think is parody, but might be wrong about. I present it here to make <a href="http://mentalpolyphonics.com/posts/il-futuro">the male gaze</a> more visible through contrast.</p>
<p><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/VsyE2rCW71o" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/the-female-gaze/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Il Futuro</title>
		<link>http://mentalpolyphonics.com/posts/il-futuro</link>
		<comments>http://mentalpolyphonics.com/posts/il-futuro#comments</comments>
		<pubDate>Sat, 02 Feb 2013 14:22:11 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[the null category]]></category>
		<category><![CDATA[Movies]]></category>
		<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://mentalpolyphonics.com/?p=17984</guid>
		<description><![CDATA[Il Futuro reportedly has &#8220;bizarre&#8221; cinematography. Supposedly it uses that, and the relationship between a blind man and a woman who is sensitive to light, to explore the male gaze in cinema. It has lots of nudity, obv, and co-stars Rutger &#8220;Tears in the Rain&#8221; Hauer.]]></description>
				<content:encoded><![CDATA[<p><em>Il Futuro</em> reportedly has &#8220;bizarre&#8221; cinematography. Supposedly it uses that, and the relationship between a blind man and a woman who is sensitive to light, to explore <a href="http://en.wikipedia.org/wiki/Feminist_film_theory#The_gaze_and_the_female_spectator">the male gaze in cinema</a>. </p>
<p><iframe width="560" height="315" src="http://www.youtube-nocookie.com/embed/-qwMer9-nLE" frameborder="0" allowfullscreen></iframe></p>
<p>It has lots of nudity, obv, and co-stars Rutger <a href="http://en.wikipedia.org/wiki/Tears_in_rain_soliloquy">&#8220;Tears in the Rain&#8221;</a> Hauer.</p>
]]></content:encoded>
			<wfw:commentRss>http://mentalpolyphonics.com/posts/il-futuro/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
