tag:blogger.com,1999:blog-6120526498728214942020-05-28T02:00:42.152-07:00Retroactive RamblingsA perfectly predictable mix of technology, politics, and anything else that fits my personal predilections.David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.comBlogger58125tag:blogger.com,1999:blog-612052649872821494.post-19854930730135732662016-02-17T18:11:00.000-08:002016-02-17T18:11:14.441-08:00An Odd Statute<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-7kDsHcErFHA/VsUn4NKsYsI/AAAAAAAAA5c/w7AMrUWbaNo/s1600/4313979238_3d31a00237_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="https://1.bp.blogspot.com/-7kDsHcErFHA/VsUn4NKsYsI/AAAAAAAAA5c/w7AMrUWbaNo/s400/4313979238_3d31a00237_o.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/prayitnophotography/4313979238/in/photolist-7zdgJo-LYfG-8n5jdk-gS76V-gS75q-gS789-gS7a2-gS7c2-pt2Pwb-aW65oH-8n8qWh-3XG69g-gS7QX-gS7Nv-gS9eh-3XLq4j-gS9j1-fUga3s-3XLmsf-3XLhuj-3XFZVX-3XLoJu-7za7Um-72XZ9h-7yWKGT-pmXNBn-pmZsmB-pmYA83-pmYKTf-pDcEp8-pDcZkK-pmZic5-pDuhpr-3XG2R2-3XLndm-3XG2iD-3XLgRS-3XG1Lz-3XG3Pa-3XLnXq-3XLnzS-3XLpCN-3XFZsK-3XLoh9-8cXhWr-8kY27f-8kUQs4-pDsa1Q-pmZFq2-AVCoaW" target="_blank">Nevada State Capitol Building</a> by <a href="https://www.flickr.com/photos/prayitnophotography/" target="_blank">Prayitno</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table>At work, I've been reading through various statutes and requirements to finally identify, once and for all, what we're required to do, IT-wise, in terms of data retention, security, and so forth. This week's reading has been on the State of Nevada's requirements, which has meant browsing through the <a href="https://www.leg.state.nv.us/law1.cfm" target="_blank">Nevada Law Library</a>, starting with the <a href="https://www.leg.state.nv.us/NRS/Index.cfm" target="_blank">Nevada Revised Statutes</a>. While doing so, however, I stumbled across <a href="https://www.leg.state.nv.us/nrs/NRS-269.html#NRS269Sec563" target="_blank">NRS 269.563</a>:<br /><blockquote class="tr_bq"><b>&nbsp; &nbsp; &nbsp; NRS 269.563 Formation of town in area that contains no residents in county whose population is 700,000 or more.</b><br />&nbsp; &nbsp; &nbsp; 1. The board of county commissioners of a county whose population is 700,000 or more may provide by ordinance for the formation of an unincorporated town in an area that contains no residents if all of the owners of land within the boundaries of the proposed unincorporated town so request in writing. The written request of the owners must include the statement that the owners consent to be taxed for the services to be listed in the ordinance. If any owner withdraws his or her consent before adoption of the ordinance creating the unincorporated town, the owner’s property must be excluded in fixing the boundaries of the town.<br />&nbsp; &nbsp; &nbsp; 2. The ordinance must contain clear designation of the boundaries of the unincorporated town and the boundaries of any area which may be annexed into the unincorporated town, a listing of services to be provided, the number of members to serve on the town advisory board and the conditions that must be satisfied before appointment of the first town advisory board. These conditions may include, without limitation, the number of residents, the level of services being provided and the extent of improvements in place.<br />&nbsp; &nbsp; &nbsp; (Added to NRS by 1995, 2177; A 2011, 1166)</blockquote>Interestingly, the <a href="https://www.leg.state.nv.us/Statutes/68th/Stats199511.html#Stats199511page2177" target="_blank">original 1995 draft</a> had originally limited the statute's applicability to counties with whose population is 400,000 or more; 2010's census, however, revealed there were <a href="http://quickfacts.census.gov/qfd/states/32/32031.html" target="_blank">two</a> <a href="http://quickfacts.census.gov/qfd/states/32/32003.html" target="_blank">such</a> counties, so the limit was adjusted upward.<br /><br />What gives? Why would anyone want to create a town with no residents? And why would such a construct be limited to Clark County?<br /><br />The answer has a lot to do with Clark County's notoriously hostile relationship with Las Vegas and its reliance on unincorporated townships. <a href="https://www.youtube.com/watch?v=naDCCW5TSpU" target="_blank">CGP Grey's video</a>&nbsp;is as good of start as any - long story short, there's always been a tense relationship between Clark County's government and the governments of the cities within Clark County due to competing tax rates, provision of public services, and so forth. In 1995, a new subdivision was being created - one that was going to explicitly cater to wealthier homeowners. Trouble was, it hadn't been created <i>yet</i>; no roads had been paved and no houses had been built. So, the question became, who would end up providing this new subdivision public services and, in return, collecting tax revenues from its potentially affluent property owners? The developers - the Howard Hughes corporation - didn't want Las Vegas to annex the development; doing so would subject new property owners to higher city property taxes, instead of the significantly lower property taxes enjoyed in unincorporated Clark County. Similarly, Clark County didn't want Las Vegas to annex the development, either, since the development, if it attracted as affluent of a clientele as it desired, would undoubtedly provide quite a bit of tax revenue.<br /><br />That wasn't all, though.<br /><br />From the <a href="http://www.leg.state.nv.us/Session/68th1995/minutes/ATX701.txt" target="_blank">minutes of the Senate session that led to the passage of SB 556 in 1995</a>:<br /><blockquote class="tr_bq">Mr. Mark Brown, Vice President, Howard Hughes Corporation, testified. He stated Howard Hughes Corporation supported S.B. 556. He said, over the past three years, Howard Hughes Corporation had worked with officials from Clark County to plan Summerlin-South and its master plan had recently been approved. He advised Howard Hughes Corporation would be at a major competitive disadvantage and its development of Summerlin-South could be slowed over the upcoming 18 month period if S.B. 556 did not pass. He declared Howard Hughes Corporation believed S.B. 556 was critical to the future development of Summerlin-South.&nbsp;</blockquote><blockquote class="tr_bq">Mr. Brown stated Howard Hughes Corporation anticipated the next housing boom in Las Vegas would occur at approximately the time the new resorts between Tropicana and Spring Mountain Road were completed and explained, "The southernly access to our property is critical to capturing and providing housing needs for those employees there." &nbsp;He contended if Howard Hughes Corporation was prevented from moving forward with its development it would miss out on the next housing boom and, if that happened, it would cost the company tens of millions of dollars. &nbsp;He urged the committee to support S.B. 556.&nbsp;</blockquote><blockquote class="tr_bq">Chairman Price asked whether the fact Summerlin-South did or did not become an incorporated town would make a difference in whether or not Howard Hughes Corporation developed Summerlin-South. &nbsp;Mr. Brown replied in would. &nbsp;He indicated Howard Hughes Corporation had drafted the first two sections of S.B. 556 more than a year earlier in order to request a technical change to the law which would allow an unincorporated township to be created without its having any residents. &nbsp;He advised Howard Hughes Corporation did not foresee Clark County would take steps to assist in providing infrastructure and services to an entity which was not generating revenues. He asserted Howard Hughes Corporation could not afford to provide such infrastructure and services without the county's assistance.</blockquote><div>In short, the Howard Hughes Corporation wanted to develop <a href="https://www.google.com/maps/place/Summerlin+South,+NV/@36.1072892,-115.3737044,13z/data=!3m1!4b1!4m2!3m1!1s0x80c8beaa018a934b:0xca8a34b0b809b6f5" target="_blank">Summerlin-South</a> and wanted to do it on Clark County's dime. By creating its own township, any tax revenue generated in Summerlin-South would go toward further development of Summerlin-South, regardless of whether anyone lived there to enjoy the benefits or not.&nbsp;</div><div><br /></div><div>This goes a long way toward explaining why NRS 269.563 was amended in 2011 and remained amended after Nevada's decennial legislative exercise of shifting population limits in Nevada statutes to reflect current county populations - Washoe County didn't want developers to put <i>it</i>&nbsp;on the hook for providing services to their developments before people moved in.</div>Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-52317777691593263812015-12-30T20:45:00.002-08:002015-12-30T20:45:33.261-08:00Recycling Content<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-62MYZcx87EE/VoSyiQdPL6I/AAAAAAAAA5A/luJhRMVEKtQ/s1600/8435953365_c4e01b3635_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-62MYZcx87EE/VoSyiQdPL6I/AAAAAAAAA5A/luJhRMVEKtQ/s400/8435953365_c4e01b3635_o.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/pagedooley/8435953365/in/photolist-dRst2P-AJFdR-aPQkGk-9TRC1f-9F5bop-9uDMLx-6VgJDh-2A5dB-3HPk1s-CSczw-7Fvh8L-wPBzvw-iG4fxF-5AvSKa-2A5cN-3TYCC-77tPyq-7BQyuF-7aDDY-6o5xJj-oWCeu2-DKtNZ-6xEw92-6r7UUR-4HzvVy-pMkBE-4sXS5P-edPe1G-bWaopN-6j2RRt-7LNEzi-ooN4ur-3SQQ4A-bsZMm9-9oevaq-HxSQC-nD9dgw-cTLteN-bJkb7T-2aoLxF-6j72Ph-e3jHQG-8mrYYe-6kuVqL-73xLSn-85ENjZ-abjChg-dMYJAB-o3jowJ-didfWx" target="_blank">Recycle Reduce Reuse</a> by <a href="https://www.flickr.com/photos/pagedooley/" target="_blank">Kevin Dooley</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table><div>Been fighting off a cold for the past couple of weeks - took some antibiotics last week, which cured the sinus infection that hitched a ride on Rhinovirus Alpha and helped me feel better for a few days, then caught another cold a few days after that.&nbsp;</div><div>Needless to say, I'm not amused.</div><div><br /></div><div>So, while I suffer through yet another week of keeping the facial tissue industry singlehandedly in business, here's something I wrote recently for the LP Nevada blog - <a href="http://www.lpnevada.org/trump_s_followers_might_not_be_racist" target="_blank">Trump's followers might not be racist</a>:</div><div><blockquote class="tr_bq">I was at a gas station a couple days ago when I overheard the clerk talking with a customer about the last GOP debate. What caught my attention was that he was the first person I met that openly expressed support for Trump - most conservatives I've talked to can't stand the guy (he's not conservative enough for them), and most Libertarians are doing their level-best to contrast themselves from his xenophobia - so I naturally wanted to know more. Why, of all the candidates on that stage, did the gas station clerk favor Trump?&nbsp;</blockquote><blockquote class="tr_bq">"He's genuine. He speaks his mind."&nbsp;</blockquote><blockquote class="tr_bq">That he does. You have to give him credit - he's not parsing every sentence that comes out of his mouth through a series of focus groups or think tanks. That genuineness, that willingness and ability to say what's on his mind and damn the consequences, is actually one of the first things supporters consistently love about him. He's not beholden to campaign contributors - he's a billionaire, after all - he's not beholden to the GOP establishment, and he's not beholden to the media, which happily laps up his every absurd utterance like a kitten splashing around in a milk bowl. In short, whether you love him or hate him, he's different. Sure, a lot of what's on his mind is utter nonsense, but he's willing to share his mind with America and let us decide among ourselves which of his ideas have merit and which of his ideas belong in the rubbish heap of history. That's pretty rare among aspiring politicians these days, who, more often than not, would rather run every utterance past expensive political consultants, focus groups, polls, major donors, and so forth before they take even the shakiest of stands.&nbsp;</blockquote></div><div>Read the rest at the link.</div>Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com1tag:blogger.com,1999:blog-612052649872821494.post-1450700635145094922015-12-19T14:49:00.002-08:002015-12-19T14:49:29.829-08:00Self-Driving Cars Need To Hurry Up<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-d2WrTNKihvE/VnXeeiNGvlI/AAAAAAAAA4s/9xaSWM3o7F0/s1600/6942412024_bc47610ffe_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-d2WrTNKihvE/VnXeeiNGvlI/AAAAAAAAA4s/9xaSWM3o7F0/s400/6942412024_bc47610ffe_o.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/tcp909/6942412024/in/photolist-bztFe3-cHWdgW-5Lf3M6-5Lf3P4-4PLPHo-5Lf3C8-nSz1VA-nS4S1H-nAdd8F-nUumca-nzzpgN-nRLGHV-nzzqXy-nzz4Bg-nzz1X8-nQEuyC-nRVEgd-nRLESv-5Lf3Ti-5Lf3yx-aaKwri-5kPbUd-m8bfsE-5JnPJx-iAmGK-f8vv8L-nogWh4-4hDugc-dtNMk2-4Z6sAg-kTwfH2-4XARu6-KWk4X-2zi1H6-9Y7tiv-CPLT-5y14tD-6vMvEg-9yeZRx-dC6ReK-vATZDY-3ZTP4K-7Vm6Nq-6vRGkL-s8LzoQ-5kPaWN-6kGapg-7HfQVq-eBWbNx-dHacoe" target="_blank">google car</a> by <a href="https://www.flickr.com/photos/tcp909/" target="_blank">Trevor</a> is licensed <a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA 2.0</a></td></tr></tbody></table><div>I recently came down with a moderately nasty sinus infection and had to go to urgent care to get diagnosed and get some antibiotics. Before I headed to urgent care, however, I had to choose from the following sub-optimal traveling options:</div><div><ul><li>Have my wife drive me there, which would have required our son to be in the car with us. Since I wasn't sure if I had a sinus infection or the flu yet, this wasn't ideal.</li><li>Hire an Uber or taxi to take me there. I doubt the driver would have appreciated the company, no matter how well I tipped.</li><li>Call an ambulance. This was overkill and also prohibitively expensive.</li><li>Drive myself there with a mid-grade (100F) fever.</li></ul><div>I opted for the latter option - thankfully, the fever wasn't serious enough to significantly affect my ability to drive safely and I live less than half a mile away from an urgent care facility. However, while driving there, it occurred to me that there were people sharing the road with me that might have been every bit as sick as I was - or even sicker. There could have been a single mother, sick with the flu, sharing a car (and air) with her healthy kid while she tried to get treatment. There could have been someone experiencing a stroke while driving down the road. There could have been someone with a much more serious fever - say, 103F or so - starting to hallucinate while driving down the freeway, or suddenly gripped by fevered paralysis.&nbsp;</div></div><div><br /></div><div>What would protect everyone? Self-driving cars.</div><div><br /></div><div>Think about it. What if you were really sick - not <i>quite</i>&nbsp;sick enough to require someone to keep your vitals steady, but sick enough where you shouldn't drive (say, if you had dysentery or something), and you could just limp your way into your self-driving car and say, "Go to nearest Urgent Care." Then you could spend the trip focused on keeping warm and hydrated and know that you'll get to your destination safely without potentially losing lucidity and threatening everyone else on the road. The car could even make a loud noise when you got there so you could take a quick nap.</div><div><br /></div><div>Unfortunately, California's decided to <a href="http://m.csmonitor.com/Technology/2015/1216/California-s-new-rules-for-self-driving-cars-disappoints-Google" target="_blank">take the slow road on this</a>.</div><div><br /></div><div>I don't entirely blame California here - Google's cars have been <a href="http://techcrunch.com/2015/10/09/dont-blame-the-robot-drivers/#.7dy1oor:HGvL" target="_blank">somewhat accident-prone</a>, and identifying who has liability in an accident is still <a href="http://www.hg.org/article.asp?id=34960" target="_blank">an open question</a> - but still, the sooner this technology takes off, the sooner we can stop worrying about DUIs, strokes, seizures, and other health issues affecting and endangering drivers.</div>Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com12tag:blogger.com,1999:blog-612052649872821494.post-68914820000583754202015-12-11T21:41:00.003-08:002015-12-11T21:44:01.285-08:00In Defense of Creeps<div class="tr_bq"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-oIKAZ0riA3A/Vmuz0_ppFaI/AAAAAAAAA4Y/BtM9H7qG64Q/s1600/15994191890_ffb427b973_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-oIKAZ0riA3A/Vmuz0_ppFaI/AAAAAAAAA4Y/BtM9H7qG64Q/s400/15994191890_ffb427b973_o.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/kumaravel/15994191890/in/photolist-qnmq29-ubkSG7-eh1uBT-bjeQKn-2YsTWx-78jhsf-ixhzcR-abgSnp-abgwMz-pmZ7XE-abgY2K-ep9zvw-abgUBV-abgwhr-abjkxw-egsRzi-awBtB7-pwTi9g-uoWy4v-sLLppp-s8TxyE-eeTqip-yCg6AF-dmi38W-wE8myw-5wBwpM-oKju4o-gG2sHv-gG1PAM-7NwNCv-6k3kSi-8MZZ3J-oS5TDU-pJZqQE-qEjPdp-s2v7iV-abgsPZ-Cd4ye-f75VL6-oiaFXw-abgtMZ-abgxbM-nPAcF8-abjDJy-abgMJt-abjA9A-abjm6m-AkBN2a-dbRixj-8MX23t" target="_blank">Creeper</a> by <a href="https://www.flickr.com/photos/kumaravel/" target="_blank">Thangaraj Kumaravel</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table><i>[Content warning: I'm going to stick to a generally cis-heteronormative perspective here because, frankly, that's the one I live in and I prefer to "write what I know". I'll try to keep it broad when and where I can, but I don't want to make blanket assumptions here if I can help it.]</i></div><br /><a href="http://www.retroactiveramblings.com/2015/11/why-do-men-defend-creeps.html" target="_blank">A couple weeks ago</a>, I turned my attention to "creeps" and why men defended them. In that article, I tried to make two basic points:<br /><ol><li>There are good reasons why men might defend creeps, and it has a lot more to do with empathy toward those that are less romantically fortunate than anything else.</li><li>Creeps don't deserve the empathy, especially those that lean hard on supposed "disabilities" as an excuse for their creepiness.</li></ol><div>Those two basic points rested on a rather specific definition of "<a href="http://markmanson.net/harassment" target="_blank">creep</a>", however:</div><blockquote class="tr_bq">Creepiness occurs when someone demonstrates sexual intent while undermining or disregarding the recipient’s personal autonomy or consent.</blockquote><div>Some comments, both here and elsewhere, convinced me I need to fine-tune this a bit. Before I do, though, I want to start by acknowledging that this is probably going to end up as a male-targeted version of this, via <a href="http://theunitofcaring.tumblr.com/post/101994114241/more-problems-with-safe-spaces" target="_blank">The Unit of Caring</a>:</div><blockquote>I think some fraction of the obnoxious people saying, 'but I just don’t find X people attractive!!!’ are trying and failing to articulate this:&nbsp;</blockquote><blockquote class="tr_bq"><i>I have a really strong instinctive 'no stop telling me who to be attracted to and what it says about me’ reaction to the thing you’re saying. I feel like acknowledging 'yes my preferences cause harm to people’ is giving leverage to a pattern of thought where my sexuality gets distributed to people who deserve it. I feel like 'but I am not attracted to X people' has to be sufficient, has to be respected, for me to feel safe. I feel like 'well maybe you should question that’ is an open-ended obligation to improve my sexuality toward your ends. &nbsp;</i></blockquote><blockquote>And so 'shut up and keep hurtful preferences to yourself’ doesn’t work, not if we want everyone to hear the message 'your sexuality isn’t something that gets distributed to the deserving. Your 'no’ is always good enough. Experiencing or not experiencing attraction does not make you a bad person, ever.' &nbsp;</blockquote><blockquote>And yet.&nbsp;</blockquote><blockquote>Preferences are culturally mediated! There are lots of people who would totally be attracted to trans people and to fat people and to disabled people and to every other constructed-as-undesirable category of people if they asked themselves about it! There are even more people who would be attracted to those groups if they hadn’t been raised saturated by media messages about what beauty is! &nbsp;We should be angry about this! We should say things about this!&nbsp;</blockquote><blockquote>…and when we do, people will hear 'your sexuality makes you a bad person, fix it, fix yourself’, and they respond 'but I’m just not attracted to Xs’, and they aren’t wrong either, and telling them to shut up is not as obvious or as necessary as it once seemed to me. &nbsp;</blockquote><blockquote>I have no idea how to fix this.</blockquote><div>A lot of the conversation I see surrounding "being creepy" strongly resembles this dynamic. On the one hand, we have a group of people saying, "Hey, people shouldn't feel comfortable following other people around and demanding sexual attention!" On the other hand, we have a group of people saying, "Hey, people shouldn't feel <i>un</i>comfortable asking about mutual sexual attraction!" Then, just to add insult to injury, we have people behaving poorly on both sides of the argument - certain men <a href="https://heartiste.wordpress.com/2013/06/25/compendium-of-female-super-shit-tests/" target="_blank">openly defending</a> something dangerously similar to the "<a href="https://www.youtube.com/watch?v=djpMef3hdCA" target="_blank">50 nos and yes mean yes</a>" school of thought, while certain women treat men who complain that it can be quite challenging to talk to women without unintentionally coming across as "creepy"&nbsp;<a href="http://www.rawstory.com/2014/12/mit-professor-explains-the-real-oppression-is-having-to-learn-to-talk-to-women/" target="_blank">as self-entitled jerks</a>. Of course, it doesn't help that not everyone uses the same definition of "creepy". For a lot of people, "creepy" means "person I'm not attracted to", so when they see articles (like mine) that say, "Hey, stop being creepy!", what they read is, "Hey, stop being unattractive!", instead of, "Hey, stop demonstrating sexual intent while undermining or disregarding the recipient's personal autonomy or consent!"<br /><br />This, <a href="http://slatestarcodex.com/2014/08/31/radicalizing-the-romanceless/" target="_blank">needless to say</a>, does <a href="http://slatestarcodex.com/2015/01/01/untitled/" target="_blank">not go well</a>.<br /><br />Which brings me back to the end of my last post on this subject:<br /><blockquote class="tr_bq">Of course not.&nbsp;<b>Creepy guys kill vibes</b>. Nobody wants to be around&nbsp;<a href="https://www.youtube.com/watch?v=Ux_RcmU1OYA">Uncle Lou</a>. Nobody wants to&nbsp;<i>be</i>&nbsp;Uncle Lou. If you see someone being an Uncle Lou, pull them aside and tell them to stop being an Uncle Lou.&nbsp;<a href="http://pervocracy.blogspot.com/2011/07/how-to-not-be-creepy.html">Tell</a>&nbsp;them what they’re doing that’s Uncle Lou-ish. Make it clear that, if they persist in being an Uncle Lou, you’re either going to escort them out of whatever venue you’re both sharing or you’ll find someone who will. Make it clear that, from that moment going forward, if they don’t alter their behavior, you will name names. You will take pictures.&nbsp;<a href="http://www.goodreads.com/quotes/1963-if-you-can-t-be-a-good-example-then-you-ll-just">If they can’t be a good example, then they’re just going to have to be a horrible warning</a>. <b><span style="color: red;">Don’t let them oppression olympics their way out of it, either - a truly neuroatypical person isn’t going to say, “Oh, sorry - I’m autistic. I can’t help it.” No, they’re going to apologize and they’re going to ask what they can do to avoid that sort of behavior in the future. If you get any other response, you’re not dealing with a neuroatypical person - you’re dealing with a manipulator.</span></b></blockquote>This paragraph was, by far, the most contentious of the entire article. I got a little push-back regarding the numbers I used on sexual violence (intentionally so - I went for conservative, government sourced ones that probably understate matters considerably to demonstrate that, even using the official numbers, it makes rational sense for women to be concerned about creeps and their intentions), but <i>nothing</i>&nbsp;like I got on the part in red. The most consistent criticism was that, well, actually, <i>neuroatypical people can be manipulators too</i>, which, okay, fair enough, and that was that. The more I thought about it, though, the more I realized that I needed to put some serious thought behind the ramifications of this. Let's assume for a moment that:<br /><ul><li>Neuroatypical people, especially those on the autism spectrum, <a href="http://www.slate.com/blogs/xx_factor/2012/12/17/asperger_s_and_newtown_school_shooting_autistic_does_not_mean_violent.html" target="_blank">aren't strong on picking up social cues</a>.</li><li>For a variety of reasons, women are conditioned to give "subtle" <a href="http://feministing.com/2015/10/22/why-is-it-so-hard-for-women-to-reject-creeps/" target="_blank">hints of attraction or rejection</a>.</li></ul><div>Given these assumptions, it's not a stretch to assume that, at some point, a neuroatypical person is going to engage in behaviors that seem legitimately "creepy", in the sense used in the definition I posted at the top, simply because they're not going to pick up the signals that say, "No, <i>seriously</i>, I'm not interested in you!" without actually saying <i>exactly that</i>. Then, when they finally get that forthright negative response they need to actually know that, no, <i>really</i>, that person isn't interested in them, and it's followed with, "<i>you creep!</i>", from their perspective they see it as someone using "creep" in the "You're unattractive!" sense, not the "You've been demonstrating sexual intent while undermining or disregarding my personal autonomy or consent!" sense that the person rejecting them meant it in. After all, from the neuroatypical standpoint, that's the first, last, and <i>only</i>&nbsp;sign of rejection they've perceived from that individual - why wouldn't they shrug when someone tells them to "stop being creepy" after that? If you briefly greeted a woman at a party and then some "well meaning gentleman" immediately approached you and told you to stop creeping everyone out, wouldn't you tune him out, too?</div><div><br /></div><div>Thinking about this further, I also realize there's another group of men that are going to be in the same boat - <i>younger men with zero experience with women who are dealing with women that don't know how to communicate rejection effectively because they have zero experience with men</i>. Considering how many teenagers are firmly convinced, either through Hollywood or hormones (I haven't decided which - someone page a psychiatrist) that romance confers telepathy to both partners if it's "true love", it doesn't take a leap of imagination to think of a scenario where a young woman decides, "Well, I'm touching his shoulder, but not in <i>that</i>&nbsp;way, so he should know I'm just being polite and friendly" at the same time that a man thinks, "Wow! She's touching me! She must be interested!", which then leads to a correspondingly inevitable confrontation later that day that leads to a series of angsty blog articles shared across the MRA/Feminist banks of the Tumblrsphere. Then, we fast-forward a few weeks and the woman says something <a href="http://feministing.com/2015/10/22/why-is-it-so-hard-for-women-to-reject-creeps/" target="_blank">like</a>,&nbsp;</div><blockquote class="tr_bq">There’s another reason why I don’t like to go places alone — and it has nothing to do with my own failings. I’m afraid of being approached by men who want to chat me up, or ask me on a date. I don’t know how to reject them — the fact is, it doesn’t matter how polite I am, things can turn dangerous in a split second.&nbsp;</blockquote><blockquote class="tr_bq">[...]&nbsp;</blockquote><blockquote class="tr_bq">"It’s awkward that they would put you in this sort of social position in the first place. I guess men feel it’s necessary because they tend to require more direct communication while women pick up more on feelings, social cues, etc. While we feel we’re making it obvious that we’re not interested or only want to be friends, men think that we are in fact interested and showing our interest."</blockquote><div>So, what do we do about this? Feminists have a point - men <i>can</i>&nbsp;<a href="http://whenwomenrefuse.tumblr.com/" target="_blank">turn</a> <a href="https://www.instagram.com/byefelipe/" target="_blank">dangerous</a>&nbsp;(or at least ill-tempered) in a split second if rejected. Obviously, this isn't true of all men, or perhaps even most men, but, as I discussed previously, even at a rate of 1 in 5,000 (a rather low estimate of the number of men that are rapists), there's a pretty good chance that a woman is sharing a public space with a rapist at some point in her life, and there are a lot of other unpleasant things men can do to a woman that don't involve rape or sexual assault. There is a simple, straightforward solution to this problem - <a href="http://everydayfeminism.com/2015/06/girls-asking-guys-out/" target="_blank">encourage women to make the first approach</a>, that way they're the ones in control of the situation - but then that would mean "<a href="http://elitedaily.com/dating/men-pssies-women-need-start-asking-men-dates/746965/" target="_blank">women are doing all the work</a>".</div><div><br /><i>*rubs bridge of my nose while sighing audibly*</i><br /><i><br /></i>Ignoring society's failure to apply simple predicate logic for a second, though, let's be honest with ourselves - if women were encouraged to make approaches, it wouldn't solve the problem. As women will be happy to tell you, <a href="http://www.womenshealthmag.com/sex-and-love/tips-for-women" target="_blank">quite</a> <a href="https://www.reddit.com/r/AskMen/comments/1b2cb6/single_guys_tell_me_why_you_arent_approaching/" target="_blank">a</a> <a href="http://www.lovepanky.com/women/dating-men-tips-for-women/7-reasons-men-dont-approach-you-and-how-to-fix-this" target="_blank">few</a> <a href="http://edumckaytion.com/blog/men-notice-women-anymore/" target="_blank">women</a> <i>aren't</i>&nbsp;<a href="http://madamenoire.com/401012/reasons-men-dont-approach-you/" target="_blank">approached</a>, and they're not happy about it. Realistically, the only guys that are going to consistently get approached are precisely the same women that are consistently approached - the top 20% (or less) most attractive guys in the bar. Everybody else is going to get filtered out as "background radiation" - they're neither handsome nor ugly enough to draw attention so they're never noticed. Since most of the "creepy" people women complain about aren't in that top 20%, they're still going to have to make approaches to get noticed, which is going to lead us right back here once again, especially as long as there's a large enough group of people out there that insist on using "creepy" as a synonym for "unattractive person".<br /><br />What's the solution? <i>I honestly don't know</i>.<br /><br />What I do know is that we can't simultaneously believe that <a href="http://www.doctornerdlove.com/2012/06/privilege-entitlement-dating/all/1/" target="_blank">men</a> <a href="http://justinattraction.com/2013/06/you-do-not-have-a-right-to-sex/" target="_blank">approach</a> <a href="http://broadblogs.com/2011/12/12/men-who-hate-pretty-women/" target="_blank">women</a> because they think they're entitled to sex while we're simultaneously <a href="http://elitedaily.com/dating/why-men-dont-have-balls-anymore/" target="_blank">complaining that men won't approach women</a>. We can't have a society where <a href="http://uptownmagazine.com/2013/07/why-women-look-desperate-when-they-approach-men-and-how-to-stop/" target="_blank">women are considered "desperate" if they approach</a> at the same time we're telling men that they may approach <a href="http://everydayfeminism.com/2013/01/feminist-guide-to-non-creepy-flirting/" target="_blank">if and only if they follow a very particular set of rules</a>, especially when the first of those rules <a href="http://www.doctornerdlove.com/2014/06/5-times-shouldnt-approach-women/" target="_blank">violates another set of rules</a>. If we're <i>lucky</i>, that is the path to&nbsp;<a href="https://en.wikipedia.org/wiki/Language_of_flowers" target="_blank">neo-Victorian flower exchanges</a>, which might be useful for the descendants of <a href="https://en.wikipedia.org/wiki/Tulip_mania" target="_blank">Dutch tulip stock owners</a>, but is less useful for those of us that would prefer courtship rituals to take less than a few years to complete while each side initiates the first few delicate feelers of interest through friends-of-friends in front of neutral intermediaries.<br /><br />Quite a few of us, believe it or not, do not see Jane Austen novels as something worthy of emulation. Not even <a href="http://www.amazon.com/Pride-Prejudice-Zombies-Classic-Ultraviolent/dp/1594743347/ref=sr_1_1?ie=UTF8&amp;qid=1449897336&amp;sr=8-1&amp;keywords=pride+and+prejudice+and+zombies" target="_blank">the ones with zombies</a>.<br /><br />So what do we do? Personally, I think we have to accept that some people are going to approach when they shouldn't, some people won't approach when they should, and there's not enough virtual ink on the Internet to keep that from happening. An opt-in "<a href="http://markmanson.net/fuck-yes" target="_blank">fuck yes or no</a>" approach might help - if we taught everyone that, if you're not seeing clear, unambiguous signs of interest almost instantly, that's a "no", that would not only help those who are less adept at reading non-verbal social cues behave according to more sensible, less "creepy" defaults, but would also take a lot of the pressure off of women to make a clear, confrontational rejection - but that's not going to keep people from making potentially inappropriate approaches in the first place. It would also help if we could decide, once and for all, whether or not we should encourage women to make the first approach, or at least decide whether or not men are immature and worthless if they <i>don't</i>&nbsp;make that first approach. It would also help if every side of this issue realized that we all want the same thing, more or less - to be loved by people we love and to not be forced to cause pain to others. Rejection hurts on both sides - it's not fun - so if someone is rejecting you, it's because it's the least worst of the options available to them. If you don't want the sting of rejection to feel so sharp, don't force someone into slapping your face before you get a clue.&nbsp;</div></div>Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com4tag:blogger.com,1999:blog-612052649872821494.post-39011761530593395012015-12-10T18:16:00.001-08:002015-12-10T18:21:45.229-08:00Odds and ends<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Uiyh9_x7kwc/Vmovx7exFOI/AAAAAAAAA30/lIZ0gZJqdOg/s1600/ChristmasTree.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="268" src="http://1.bp.blogspot.com/-Uiyh9_x7kwc/Vmovx7exFOI/AAAAAAAAA30/lIZ0gZJqdOg/s400/ChristmasTree.png" width="400" /></a></div><br />Hey everyone - I have a few posts rummaging around in the background (including a follow-up to <a href="http://www.retroactiveramblings.com/2015/11/why-do-men-defend-creeps.html" target="_blank">my last post</a>), but until they're done, here are a couple things to tie everyone over:<br /><br />I've been posting on the LP Nevada's blog lately:<br /><ul><li><a href="http://www.lpnevada.org/gun_militias" target="_blank">Gun rights have nothing to do with militias</a></li><li><a href="http://www.lpnevada.org/the_case_for_a_30_hour_minimum_wage" target="_blank">The case for a $30/hour minimum wage</a></li></ul><div>The first post is a more serious look at an issue raised by <a href="https://popehat.com/2015/12/07/you-are-not-going-to-resist-the-government-with-your-guns/" target="_blank">Marc Randazza on Popehat</a>, though, for the record, I didn't read his article before I posted mine, which is a shame since he made my point better than I did. Moving forward, though, there's a strong chance that most of my political blogging is going to end up on the LP Nevada blog unless I feel the need to be contrarian and chew certain libertarians a new one.</div><div><br /></div><div>On a more tech-ish note, we're being encouraged at work to decorate our offices. Here's the Christmas tree I put up on our door:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-3k4PDZArunE/VmoxaofoTNI/AAAAAAAAA4A/0MXdCkZAEfA/s1600/IMAG1056.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://2.bp.blogspot.com/-3k4PDZArunE/VmoxaofoTNI/AAAAAAAAA4A/0MXdCkZAEfA/s640/IMAG1056.jpg" width="362" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Though it's not obvious, there are some hidden spaces in there - if you want to run this yourself, copy and paste the following: </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">@ECHO OFF</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">CLS</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">SETLOCAL EnableDelayedExpansion</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">FOR /L %%G IN (1,1,10) DO (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _Str=*</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>FOR /L %%H IN (1,1,10) DO (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %%H LSS %%G (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _Str=*!_Str!*</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>) ELSE (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _Str= !_Str!</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>ECHO:!_Str!</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">)</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">SET _Str=</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">FOR /L %%I IN (1,1,20) DO (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %%I GEQ 10 (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %%I LEQ 12 (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _Str=!_Str!=</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>) ELSE (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _Str=!_Str!&nbsp;</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>) ELSE (</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _Str=!_Str!&nbsp;</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">)</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New, Courier, monospace;">ECHO:%_Str%</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Until next time...</div></div>Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com2tag:blogger.com,1999:blog-612052649872821494.post-10562642330601440052015-11-29T19:13:00.000-08:002015-11-29T19:17:33.661-08:00Why Do Men Defend Creeps?<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-IXVcG6_KDYs/Vlu_a8sIr6I/AAAAAAAAA2g/6tkNX0Vc6oI/s1600/8707625103_7406d55b3a_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="http://1.bp.blogspot.com/-IXVcG6_KDYs/Vlu_a8sIr6I/AAAAAAAAA2g/6tkNX0Vc6oI/s400/8707625103_7406d55b3a_o.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/quimgil/8707625103/in/photolist-egsRzi-pwTi9g-5wBwpM-gG2sHv-gG1PAM-8MX23t-7NwNCv-6k3kSi-oKju4o-8MZZ3J-oS5TDU-pJZqQE-qEjPdp-s2v7iV-abgsPZ-Cd4ye-f75VL6-oiaFXw-abgtMZ-abgxbM-nPAcF8-abjDJy-abgMJt-abjA9A-abjm6m-AkBN2a-dbRixj-qtzFb7-8MXbWk-oQNqnW-abgvTa-pvdeWT-dBVrWe-abgXfn-8Yna3W-abgsc8-7CAdon-4oscSJ-bAmaA7-7YuPYJ-abh2hK-abh1La-abgZKt-abgZmk-abgVWK-abgrEF-abgra4-abgthK-71irP7-osS7dg" target="_blank">Lone creeper</a> by <a href="https://www.flickr.com/photos/quimgil/" target="_blank">Quim Gil</a> is licensed <a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA 2.0</a></td></tr></tbody></table>Fun fact: I’m an admin for a feminist forum. I’m not sure how it happened, exactly - my bet remains a drunken, drug-fueled dare at a Burning Man kick-off party somewhere in Southern California that I was hundreds of miles away from - but, be that as it may, I’ve been reading quite a bit of feminist content lately and attempting to approach it evenhandedly enough to execute my duties with a modicum of professionalism. One recurring topic that pops up from time to time is this:<br /><div><br /></div><div><b>Why do men defend creeps?</b><br /><b><br /></b></div><div>It’s a good question. Why are people asking it?<br /><br />**********</div><div><br />A common refrain among the feminist community, especially since the UCSB shooting a couple years ago (<a href="http://blog.colbornemmx.com/2014/05/the-ucsb-shooting-puas-and-hashtag.html">an incident I wrote about</a>), is that “Men fear rejection, women fear rape”:<br /><br /><blockquote class="twitter-tweet" lang="en"><div dir="ltr" lang="en">While men fear rejection, women fear rape and murder. Saying "no" shouldn't be dangerous. <a href="https://twitter.com/hashtag/YesAllWomen?src=hash">#YesAllWomen</a></div>— Stop Patriarchy (@StopPatriarchy) <a href="https://twitter.com/StopPatriarchy/status/471142328309014528">May 27, 2014</a></blockquote><br />I’ve talked to several women through the years about this idea and received near-universal agreement about the sentiment behind it. To really understand this sentiment, though, it needs to be unpacked a bit further. Most “women fear rape” the same way that soldiers in Iraq were instructed to “<a href="https://en.wikiquote.org/wiki/James_Mattis">be polite, be professional, but have a plan to kill everybody you meet</a>,” and for many of the same reasons. That advice was given to soldiers in Iraq because, while most Iraqis wouldn’t hurt American soldiers and were reasonably friendly and accommodating, all things considered, it only took one in a group to choose differently for everything to go sideways. It would only take one Iraqi to decide that perhaps today is a good day to die, strap some bombs to their body, and approach a convoy; one Iraqi to <a href="http://www.alternet.org/story/56761/confessions_from_u.s._soldiers_in_iraq_on_the_brutal_treatment_of_civilians">talk a child into stopping a convoy so that they can stage an ambush</a>; one Iraqi to plant a roadside bomb. It might be one Iraqi in a hundred, it might be one Iraqi in a thousand - either way, it just takes one. The soldiers can’t know in advance <i>which</i> Iraqi it would be that would make that choice, so they had to assume, once they left their base, that it could be <i>any</i> Iraqi, at <i>any</i> time, that might make that choice - and they had to plan accordingly.<br /><br />So it is with women and rape.<br /><br />According to the Bureau of Justice Statistics, for women between the ages of 18 to 24 in the United States, <a href="http://www.bjs.gov/index.cfm?ty=pbdetail&amp;iid=5176">anywhere from 6.1 to 7.6 per 1,000 are a victim of sexual assault or rape</a>. The vast majority of reported sexual assaults and rapes <a href="http://www.bjs.gov/index.cfm?ty=pbdetail&amp;iid=4594">are committed by people close to the victim</a> - family members, friends, or acquaintances - but it’s not so vast for women to write off strangers entirely. Using some rough arithmetic and estimation, given that up to 1 in 100 are a victim of reported sexual assault and rape, and given that 1 in 5 victims of sexual assault or rape are assaulted by people unfamiliar with them, that works out to about 1 in 500 women that are a victim of sexual assault or rape by a stranger. This is about the same probability of being diagnosed <a href="http://www.aane.org/about_asperger_syndrome/asperger_faqs.html">with Asperger’s</a>, being diagnosed with <a href="http://www.clevelandclinicmeded.com/medicalpubs/diseasemanagement/cardiology/hypertrophic-cardiomyopathy/">hypertrophic cardiomyopathy</a>, <a href="http://greatist.com/health/your-top-20-fears-and-how-much-you-should-worry">dying from a foodborne illness</a>, or being diagnosed with <a href="http://www.cdc.gov/ncbddd/sicklecell/data.html">sickle cell anemia at birth if you’re Black</a>. In other words, it’s not common, but it’s not uncommon. Since rapes have to be committed by someone - thus far, the number of rapes by inanimate objects remains low - we can safely assume that anywhere from 1 in 500 of the men surrounding each woman (assuming each women is raped by a different stranger) to, say, 1 in 5,000 men (assuming the serial rapist model) are potential rapists. Those aren’t high odds, but, if you live in a major metropolitan area, it’s highly possible that you’ll pass 5,000 different men over the course of a year.<br /><br />Note that the 1 in 5,000 number is probably a safe lower bound - there’s considerable debate about whether or not sexual assault numbers are underreported or not and by how much, with the infamous <a href="http://college.usatoday.com/2015/09/21/controversial-1-in-5-sexual-assault-statistic-validated-in-new-national-survey/">“1 in 5” surveys</a> taking center stage of the debate. Even at this low of a number, though, there’s a strong chance that, over the course of a year, a woman’s going to be in the same room as someone willing and capable of raping a stranger. It might be on the bus, it might be at a concert, it might be at a club, it might be in school, but it’s bound to happen sooner or later. So, how do women identify who might be capable of doing this before they are placed in danger?<br /><br />Enter the creepy guy.<br /><br />It’s important at this point to identify what “being creepy” is, exactly. A good definition that crossed my vision recently was <a href="http://markmanson.net/harassment">this</a>:<br /><blockquote class="tr_bq">Creepiness occurs when someone demonstrates sexual intent while undermining or disregarding the recipient’s personal autonomy or consent.</blockquote>Simply put, a person who’s willing to disregard someone’s personal autonomy or consent regarding sex - which, I’d argue, is the textbook definition of <i>someone capable of being a rapist</i> - is probably going to be alarmingly consistent about it. They’re going to be creepy. They’re not going to <a href="http://www.huffingtonpost.com/entry/dear-men-women-dont-owe-you-anything_55d24e00e4b07addcb43c3d4">take no for an answer when they approach a woman online</a>. They’re <a href="http://www.theguardian.com/commentisfree/2015/aug/20/sexual-harassment-women-curfew">not going to respect personal privacy</a> - maybe they’ll catcall, maybe they’ll touch someone that doesn’t want to be touched. They’ll make sexual advances against a captive audience, like someone sitting next to them on a long flight (like the person brought up in the article I pulled the definition of “creepy” from) or perhaps <a href="http://geekfeminism.org/2011/07/12/sexual-harassment-discussion-in-the-atheist-and-skeptical-communities/">a long, late night elevator ride</a>. Chances are, someone willing to do those things and cross those boundaries is much more likely to rape or sexually assault someone than someone that isn’t willing to engage in those behaviors. Naturally, people sense this intuitively and react accordingly.<br /><br />And yet, some <a href="https://robertlindsay.wordpress.com/2012/07/22/creepy-is-woman-speak-for-an-unattractive-man-who-shows-interest-in-me/">men</a> <a href="http://thehairpin.com/2010/12/the-worst-thing-a-woman-can-call-a-man/">defend</a> creeps. Not all men, of course - there are quite a few outspoken critics of creep defending, like <a href="http://goodmenproject.com/featured-content/socially-awkward-excuse-hesaid/">Dr. NerdLove</a>, and <a href="http://whatever.scalzi.com/2012/08/09/an-incomplete-guide-to-not-creeping/">John Scalzi</a> - but it’s still more than a few. What’s going on?<br /><br />**********<br /><br />It’s time to unpack the second half of that refrain: Men fear rejection.<br /><br />To be clearer, most men don’t fear <i>individual rejection</i> - they fear <b>rejection</b>. Being rejected by someone that you’re attracted to isn’t fun - we’ve all been there - but being rejected by <i>everybody</i> is scary. Being viewed as “unfuckable” is scary. Being viewed as unworthy of sexual desire is <i>scary</i>. This is what men fear, and like anyone else, when men are facing this fear head-on - perhaps because they’ve been rejected by just about everybody they’ve approached, perhaps because they’ve talked themselves into seeing themselves as “unfuckable” - they react irrationally. If you’re afraid of spiders and you see one in the bathroom, right when you get out of the shower, you’re not going to capture it in your hand and bring it outside - <i>you’re going to smash the shit out of it</i>. You <a href="http://www.rgj.com/story/news/nation-now/2015/11/27/police-domestic-violence-call-actually-man-trying-kill-spider/76443042/">might even scream while you’re at it</a>. <a href="http://dune.wikia.com/wiki/Litany_Against_Fear">Fear is the mindkiller</a>, especially when you’re naked and dripping.<br /><br />And just about every man on the planet has felt this exact fear at some point in their lives. Including me.<br /><br />This might sound kind of strange, but when some men defend creeps, they’re doing so from a position of empathy. They remember that fear and, when they see a million women agree in unison that yes, this particular man, <i>he’s</i> creepy, <i>he’s</i> unfuckable, <i>he’s</i> unworthy of sexual desire - that hits a nerve. The adrenaline starts flowing, the flashbacks from failed awkward attempts at expressing desire growing up come back (remember, men are often still the ones expected to make the first approach), the laptop is <i>right there</i> - to the barricades! Defend our brothers in arms!<br /><br />**********<br /><br />Want to know something else I learned from being an admin of a feminist forum? Men aren’t the only ones that fear rejection, that fear complete and utter desexualization. Imagine a man <a href="http://www.theestablishment.co/2015/11/12/my-right-to-be-sexualized-feminism-beauty/">writing something like this</a>:<br /><blockquote class="tr_bq">It doesn’t help when there are, from within the feminist community, cries (often of the second wave “Male gaze!!! MALE GAZE!!!” timbre) of, “Well, why are you so obsessed with being sexy anyway? Is that all women can be? Sexy? It’s ok to be ugly! It’s ok to not be pretty!”&nbsp;</blockquote><blockquote class="tr_bq">Yes. Yes, of course it’s ok. The problem is that terms like “pretty” and “ugly” have been dropped on us, like rigid, rubric lead weights, without our having any say in what defines them. Being pretty isn’t the best thing a person can be, nor is ugly the worst. But who gets to decide what pretty is? Who gets to decide if I’m pretty?&nbsp;</blockquote><blockquote class="tr_bq">Isn’t pretty for me to define?&nbsp;</blockquote><blockquote class="tr_bq">[...]&nbsp;</blockquote><blockquote class="tr_bq">But I want people to know that sexiness is not a privilege, saved for those who earn it. Sexiness is for anyone that wants it.</blockquote>This is a piece written by a woman who’s stating, clearly and concisely, that, just because a person is conventionally sexually unattractive, that doesn’t mean they don’t have the right to see themselves as sexy. Everybody has the right to see themselves as sexy, as worthy of desire by <i>someone</i> - or, failing that, at least the right to see themselves as a human being. For men, being “creepy” is a big part of being seen as sexually unattractive - a big enough part, in fact, where I can't imagine a man writing that last sentence with any seriousness without an asbestos-lined monitor, a locked credit report, his cell phone number in his neighborhood SWAT team's speed dial, and frequent lodging points with his neighborhood's Witness Protection program.<br /><br />Now imagine if someone responded to the article on sexual attractiveness with something similar to <a href="http://captainawkward.com/2012/08/11/the-c-word/">the following</a>:<br /><blockquote class="tr_bq">It is unfair. It’s okay that it’s unfair. You know why? Because whether someone likes you enough to want to be your friend, to want to hug you when they see you and let you into their personal space, wants to flirt with you, or wants to joke around with you about certain topics IS a subjective decision they get to make. If Commander Logic comes up to me and puts her arm around me, that’s a friendly bit of affection from a trusted friend. If Joe or Jane New Person sees that and thinks “that’s how Jennifer likes to be greeted” and does the same thing, they’re going to get to watch me jump out of my skin because: Bad Touch! I get to set different boundaries for different people.&nbsp;</blockquote><blockquote class="tr_bq">I feel like a lot of the people who are looking for a rubric on how to make sure they aren’t being creepy are the same people who are looking for a rubric on how to pick up dating partners. They want rules and steps that will guarantee a certain outcome, and they don’t like being told how much of it is subjective and totally out of their hands. But other people – the people you want to date, the people you want to be friends with – have their own tastes, opinions, likes, and dislikes. To imply that there is some kind of system that guarantees that other people will like you or to make it a question of fairness robs them of agency.</blockquote>It’s unfair that you’re not considered pretty. It’s okay that it’s not unfair. Being seen as attractive and pretty IS a subjective decision that they get to make. Sorry.<br /><br />¯\_(ツ)_/¯<br /><br />Right about here is where every woman reading this develops a violent, sudden case of empathy. The adrenaline starts flowing, the flashbacks from not experiencing failed awkward attempts at expressing desire from that really cute guy (or girl) they were really into growing up come back (remember, women are often still the ones expected to wait for the first approach), the laptop is <i>right there</i> - to the barricades! Defend our sisters in arms!<br /><br />Save your breath. I’m on your side, at least as much as I’m on anyone’s. Hang tight - we’re almost done. <i>Then</i> you can roast me to your heart’s content.<br /><br />**********<br /><br />At this point, I want to be clear about a couple of things:<br /><br /><ul><li>It’s not okay to be creepy.</li><li><a href="http://www.theatlantic.com/sexes/archive/2013/06/its-okay-to-call-a-guy-creepy/277256/">It’s okay to be creeped out</a>.</li></ul><br />Men, it’s natural to put yourself in other people’s shoes, especially when you identify with them and their struggles, <i>especially when you’re experiencing those struggles yourself</i>. I understand the fear. I understand the pain. I’ve been there. I get it. I’ve been the awkward guy. If I lived in an area full of elevators in high school, I probably would’ve tried to ask a girl out in one, too, without thinking through the logistical and emotional ramifications of that. But here’s the thing - adult creepers <a href="http://realsocialskills.org/post/128649149597/a-post-for-men-about-creepy-men">take</a> <a href="http://captainawkward.com/2012/08/07/322-323-my-friend-group-has-a-case-of-the-creepy-dude-how-do-we-clear-that-up/">advantage</a> of that empathy. Being a creeper isn’t the same thing as being physically unattractive, though there’s certainly a non-trivial overlap between those that are “being unattractive” and those whose behaviors are viewed as “being creepy” (to borrow from a <a href="https://screen.yahoo.com/sexual-harassment-000000677.html">particular SNL skit</a>). There's little we can do about physical attractiveness - going to the gym and wearing better clothes won't make you taller, wealthier, or funnier - but we <i>can </i>do something about guys being creepy.&nbsp;The only way to make a creeper stop creeping is to call them out for being creepy - period, full stop. If you know what’s good for you, you will call them out on it, too.<br /><br />Why? Because creeps ruin it for the rest of us.<br /><br />Let’s say you’re a guy in mixed company, you see an attractive woman, and you want to get her attention. Do you think it’s going to be easier when there’s someone:<br /><br /><ul><li>Touching her without her consent?</li><li>Making endless sexual innuendo the entire night?</li><li>Following them around everywhere?</li><li>Getting angry when she says no?</li><li>Trying to “score” with her and her friends as soon as any of them make eye contact with him?</li></ul><br />Of course not. <b>Creepy guys kill vibes</b>. Nobody wants to be around <a href="https://www.youtube.com/watch?v=Ux_RcmU1OYA">Uncle Lou</a>. Nobody wants to <i>be</i> Uncle Lou. If you see someone being an Uncle Lou, pull them aside and tell them to stop being an Uncle Lou. <a href="http://pervocracy.blogspot.com/2011/07/how-to-not-be-creepy.html">Tell</a> them what they’re doing that’s Uncle Lou-ish. Make it clear that, if they persist in being an Uncle Lou, you’re either going to escort them out of whatever venue you’re both sharing or you’ll find someone who will. Make it clear that, from that moment going forward, if they don’t alter their behavior, you will name names. You will take pictures. <a href="http://www.goodreads.com/quotes/1963-if-you-can-t-be-a-good-example-then-you-ll-just">If they can’t be a good example, then they’re just going to have to be a horrible warning</a>. Don’t let them oppression olympics their way out of it, either - a truly neuroatypical person isn’t going to say, “Oh, sorry - I’m autistic. I can’t help it.” No, they’re going to apologize and they’re going to ask what they can do to avoid that sort of behavior in the future. If you get any other response, you’re not dealing with a neuroatypical person - you’re dealing with a manipulator.<br /><br /><b>Creepers are manipulators.</b><br /><br />Remember that and treat them accordingly. Show no mercy. Save the empathy for those that deserve it. Do not let them manipulate your fears or your empathy to tell you otherwise.</div>Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com3tag:blogger.com,1999:blog-612052649872821494.post-85531447225729473572015-11-09T00:46:00.001-08:002015-11-09T11:20:26.360-08:00Resolution: Declaring War against Christmas<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-KgOXlBYkbQE/VkBcAw2HReI/AAAAAAAAA2M/bu8cYDyVa4k/s1600/rw87LgEH-4922-3281.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="315" src="http://1.bp.blogspot.com/-KgOXlBYkbQE/VkBcAw2HReI/AAAAAAAAA2M/bu8cYDyVa4k/s400/rw87LgEH-4922-3281.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The cup that launched a thousand tweets. (<a href="https://news.starbucks.com/news/starbucks-red-cups-2015" target="_blank">Starbucks</a>)</td></tr></tbody></table>Ladies, gentlemen, genderfluids and otherkin:<br /><br />Yesterday, November 7, 2015 -- a date which will live in infamy -- the United States of America was suddenly and deliberately attacked by <a href="http://www.buzzfeed.com/davidmack/first-they-came-for-our-venti-frappuccinos#.wuLMQ0gYo" target="_blank">Twitter and other social media forces of the Empire of Christmas</a>.<br /><br />The United States was at peace with that holiday and, at the solicitation of various merchants, was still in conversation with its Elvin representatives and Santa Claus looking toward the maintenance of peace and plentiful gifts from the Arctic. Indeed, for <a href="https://news.starbucks.com/news/starbucks-red-cups-2015" target="_blank">two weeks after Starbucks baristas had commenced distributing plain red cups</a>, the propaganda instruments for the Empire of Christmas lay silent. And while this silence did not implicitly state that it seemed trivial for Starbucks to cut printing costs by removing a few snowflakes and the like from some beverage containers, it contained no threat or hint of Culture War or of social media attack.<br /><br />It will be recorded that the distance from the nearest Starbucks to immediate internet mob-fueled outrage makes it obvious that <a href="https://en.wikipedia.org/wiki/Planck_length" target="_blank">Planck length</a> is not, in fact, the shortest measurable distance. Even so, the culture warrior allies of the Empire of Christmas deliberately sought to deceive the United States by false statements and expressions of hope for continued cultural peace.<br /><br />The attack yesterday on social media has caused severe damage to American humor and journalistic integrity. I regret to inform you that very many American likes and shares have been lost. In addition, American sighs have been reported torpedoed on the high seas between Facebook and Instagram.<br /><br />For <a href="https://en.wikipedia.org/wiki/Christmas_controversy" target="_blank">decades</a> the Empire of Christmas has claimed, time and again, that the American people have been at war with it. For decades both the people and the political leadership of America have routinely and without objection denied this claim.<br /><br />Today that ends.<br /><br />On our careful, wary watch, Christmas has annexed November, October, the <a href="https://en.wikipedia.org/wiki/Sudetenland" target="_blank">Sudentenland</a>, and part of September. Now Christmas demands Labor Day and the <a href="https://en.wikipedia.org/wiki/Free_City_of_Danzig" target="_blank">Free City of Danzig</a>. For too long we have appeased this irredentist regime. For too long we told ourselves there would be peace in our time. America shall have no more of it. The line must be drawn <i>here</i>. We shall hold <i>this </i>ground.<br /><br />I move that this blog welcomes the formation of a movement representing the united and inflexible resolve of the nation to prosecute the war with Christmas to a victorious conclusion.<br /><br />We have before us an ordeal of the most grievous kind. We have before us many, many long weeks of struggle and of suffering. You ask, what is our policy? I can say: It is to wage war, by social, commercial and satirical, with all our might and with all the strength that God can give us; to wage war against a monstrous tyranny, never surpassed in the dark, lamentable catalog of human attention deficit disorder driven clickbait. That is our policy. You ask, what is our aim? I can answer in one word: It is victory, victory at all costs, victory in spite of slight annoyance, victory, however short and ephemeral the road may be; for without victory, there is no survival. Let that be realized; no survival for the pre-Christmas season, no survival for all that the refusal to wear red and green at the same time has stood for, no survival for the urge and impulse of the ages to not gorge incessantly in the commercial spirit of Christmas, that humankind will move forward towards its goal. But I take up my task with buoyancy and hope. I feel sure that our cause will not be suffered to fail among men, women, deis, magis, sagits, kyuus, toks, feys, firs, virs, xirs, thons, zirs, and <a href="http://askanonbinary.tumblr.com/pronouns" target="_blank">other assorted otherkin</a>. At this time I feel entitled to claim the aid of all, and I say, "come then, let us go forward together with our united strength, at least until something else distracts us five minutes from now."<br /><br />So come then, let us go forward together! Together our boots shall march on the North Pole by December 25th - if not this one then the next, assuming we don't forget about this before then! Together, with solidarity, we shall rise up and defeat the Jolly Green &amp; Red Menace!<br /><br />For liberty! For fraternity! For equality!<br /><br />Viva la revolution!Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-55235997074668344512015-10-08T21:12:00.006-07:002015-10-08T21:14:07.337-07:00Mansplaining Feminism<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-La_Jbv0cLhI/Vhc-bDOQ0EI/AAAAAAAAA1s/syQ8RVxgYW4/s1600/6955395525_fd996e7947_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="270" src="http://1.bp.blogspot.com/-La_Jbv0cLhI/Vhc-bDOQ0EI/AAAAAAAAA1s/syQ8RVxgYW4/s400/6955395525_fd996e7947_o.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/ssoosay/6955395525/in/photolist-bACdLv-7VMcT1-2255K-hDYLm-bhzt9M-xtjdcJ-69ZZqP-5d89Ws-qSMjxu-aNYfvD-aNYfmg-9W8M6n-5daoK3-5d64QB-sHPMpH-nvQWh-5fMm5R-4eMWtK-duhDNv-6HwFFZ-itWdmx-eT1Jzv-fEKkEL-7uxWNL-nvQNQ-yGbhi-xF9v75-7uxWBh-5NTbEK-7iJCNf-kNtwT5-znxTz-yaS9e-Mi1g3-98c31G-98c2QA-3by3hg-au2dwK-pWWiyz-pWHtaq-pWHsyW-qTHxGn-qBgj5z-qB96oW-pTMkkY-9RN9Ds-77Ka7m-77Ff9a-77Ff66-77Kaco" target="_blank">Status Update: I'm Doing Nothing</a> by <a href="https://www.flickr.com/photos/ssoosay/" target="_blank">Surian Soosay</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><b style="font-family: Arial; font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">This was originally posted as a comment in a feminist group that I somehow have admin access to. How <i>that</i> happened should be a fascinating story, but it's sadly pedestrian - the original admin was taking a vacation and she felt I'd be too relaxed and easygoing to do anything detrimental to the group. The post has been edited slightly to take advantage of the fact that it's posted on a page that supports inline HTML links, as opposed to Facebook which inexplicably doesn't.</b></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Trigger warning: LONG.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">I thought about posting this as a comment, but decided the point was large enough to warrant its own post.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">I'm going to explain, as best as I can, why a lot of feminists get bent out of shape about #notallmen and often reply, on the extreme end, with #maletears and #killallmen. My target audience is primarily male (i.e. some of the more difficult guys that find themselves arguing with feminists here), though I’m sure there are a few women that are perplexed by this issue as well and may benefit from what you’re about to read. To do this, I'm going to lean hard on my experience as an active participant in the Libertarian movement and, by necessity, do quite a bit of mansplaining (i.e. potentially talking out of my ass). If you're a feminist and believe I'm wildly off base, feel free to say so in the comments, but please remember that I'm not trying to explain feminism to you - I'm trying to explain it to others that see only a very cherry-picked version of it, so certain details and nuances will be glossed over or explained using potentially problematic language that, I hope, resonates better to my target audience than academic feminist terminology.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Libertarianisn, in its modern form (i.e. the form you usually bump into on the Internet these days), was founded to oppose the oppression caused by the governments of the United States of America - local, state, and federal. More specifically, it often focused on the oppression caused by the governments of the US against white people (white males more often than not, though <a href="http://alf.org/" target="_blank">ALF</a> members will happily point out that feminists were better represented in the LP than most political parties - I call this "damning with faint praise"), which should be a pretty familiar problem among feminists at this point - in fact, let’s call this form White Libertarianism, since it nicely parallels the background and interests of White Feminism and exhibits some of the same frustrating, myopic behavior due to its limited perspective. As an example, if you see a "libertarian" <a href="https://www.facebook.com/confusedproputin?fref=ts" target="_blank">cheering on Putin because he's poking a stick in the US government's eye</a> (at the cost of innumerable Russian, Syrian, Ukrainian, and Georgian lives), that's White Libertarianism privileging its oppression by the US government while ignoring the oppression of others across the globe by other governments, such as the Russian government.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Ron Paul is a textbook White Libertarian.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">The biggest issue with the limited perspective of White Libertarianism, however, at least when we’re talking about the role of the Libertarian movement in the US, is that most fairly affluent white people (like me!) only deal with the government maybe twice a year - once when we file our taxes and once when we go to the DMV. Some more affluent white people might deal with the government a little more often and experience additional frustrations when doing so - say, when they’re trying to get a permit to renovate their garage, or open a business, or what have you. Some might also deal with the government when they’re dealing with their children in school, though their experiences with government school are generally far more positive than everyone else’s. Occasionally, we might get pulled over for a minor traffic infraction, at which point we can usually count on being treated fairly and professionally, if curtly. This, needless to say, is a markedly different experience from the experience of poor people - especially people of color - in the United States, which, in turn, is an infinitely more positive experience than those on the wrong end of graft-infested governments in Eastern Europe or South America, or governments that openly and blatantly privilege certain tribes in Third World countries.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Which brings me to the following question: What is the role of government workers in the Libertarian movement?</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">From a White Libertarian perspective, government workers potentially look like natural allies. After all, they get to witness the inefficiency of the government every day of their working lives. They get to watch politicians promise them fat pensions in one hand, then refuse to pay for them in the other. They get to watch politicians decide to remove “waste and fat” by adding various pointless rules and regulations to their jobs, rules and regulations that often cost more to implement than they could ever conceivably save (I wrote a blog post ages ago about this - link in the comments). Plus, a lot of White Libertarians know government workers - government work is a decent professional job, if you can get it, that pays well and has decent benefits. Consequently, if you’re a college-educated White Libertarian, chances are you know more than a few government workers personally and you know that they’re generally decent, hardworking people. So, why not leverage that additional experience and frustration with government inefficiency and harness it to the Libertarian movement?</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Because, if you’re not a White Libertarian, government workers are collaborators. They’re the ones in power. They’re the ones bashing down doors at 2 AM <a href="https://en.wikipedia.org/wiki/Kathryn_Johnston_shooting" target="_blank">killing your grandmother</a> and <a href="http://www.cnn.com/2014/10/07/us/georgia-toddler-stun-grenade-no-indictment/" target="_blank">throwing flashbang grenades in your child’s crib</a>. They’re the ones <a href="http://www.washingtonpost.com/news/wonkblog/wp/2015/03/04/17-disturbing-statistics-from-the-federal-report-on-ferguson-police/" target="_blank">pulling you over every week for some made up traffic infraction and taking your money</a>. They’re the ones <a href="http://dailycaller.com/2015/01/30/the-7-most-egregious-examples-of-civil-asset-forfeiture/" target="_blank">seizing your car using civil asset forfeiture laws</a>. They’re the ones telling you <a href="http://www.pbs.org/newshour/rundown/kansas/" target="_blank">what food you can buy and what neighborhoods you get to live in</a>. They’re the ones threatening to arrest you because you’re walking home from work - which you wouldn’t be doing if they didn’t impound your car - and <a href="http://www.motherjones.com/politics/2010/03/texas-racist-laws-drinking-while-brown" target="_blank">they don’t like the way you look</a>. They’re the ones <a href="http://www.nbcnews.com/news/world/doctors-without-borders-33-unaccounted-after-hospital-bombing-n440761" target="_blank">bombing hospitals</a>. They’re the ones <a href="http://www.theguardian.com/us-news/2015/jun/02/cia-sexual-abuse-torture-majid-khan-guantanamo-bay" target="_blank">torturing prisoners</a>. They are the problem. #KillAllStatists #KillAllCops #CopTears #FuckThePolice. What’s their place in the Libertarian movement? Dead, their backs against the wall, with their heads nailed to pikes placed across the street from the nearest police station or City Hall as a warning to others. They are gangsters enforcing their will at the point of their guns. They deserve no quarter or mercy.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Before a Libertarian jumps in - I exaggerate slightly. <a href="http://christophercantwell.com/2014/12/22/dead-cops-chose-fate/" target="_blank">But only just</a>. Read comments on Cop Block sometime. There’s a reason so many Libertarians are fanatics about the <a href="https://wiki.mises.org/wiki/Principle_of_non-aggression" target="_blank">Non-Aggression Principle</a> - it’s because it’s explicitly designed to keep people that think like this from taking over the movement.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Trouble is, when you’re talking about exterminating (or something close to) all government workers, you’re talking about somebody’s friends, neighbors, and family members. Those who know government workers personally - cops, teachers, civil servants, and so on - will not, under any circumstances, allow a group of angry people to seriously harm them. In fact, if you try to sell Libertarianism to them using that sort of language - a language of hate, bitterness, and revenge - they’ll reject it automatically. They’ll radicalize themselves to oppose you if they feel you’re dangerous enough to actually do harm. If you live in, say, North Korea, perhaps that opposition is worth it - perhaps those that work for the government truly are beyond redemption and the only option is violent revolution. If you lived in Rwanda during the genocide in the ‘90s, the solution wasn’t to appease the sensibilities of the murderous Hutu gangs that were rounding up Tutsis - it was to either kill more of them than they killed of your tribe, if you could, or run away as fast as possible if you couldn’t. If you lived in Apartheid South Africa and were on the wrong side of the government imposed social order, the solution was…</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Wait, what’s that? Apartheid in South Africa was overthrown more or less peacefully? <a href="http://www.nobelprize.org/nobel_prizes/peace/laureates/1993/" target="_blank">A couple people got the Nobel Prize for pulling it off</a>? Hmm. I wonder if there’s a lesson there.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">This, I think, is one area where White Libertarianism can actually bring some much needed perspective to the movement. We actually know government workers. We eat with them, drink with them, talk with them. We know that, for the most part, they’re people, just like the rest of us, trying to do as good of a job they can with the tools they have. Government teachers usually want our children to learn. Government police usually want our neighborhoods to be safe. We also know that there’s a reason these people follow unjust policies and unjust laws, at least in the United States, and it’s a good one - the laws and procedures they follow, at least *theoretically*, were written and enacted with input from citizens of all socioeconomic and racial backgrounds. If they start picking and choosing which ones to follow, they’ll probably end up privileging their own experiences and opinions over the experiences and opinions of those that theoretically had their voices heard in the political process. Remember, if we encourage police officers to use their own judgment when deciding which laws to enforce, we don’t get to pick and choose *which* police officers exercise their judgment, nor do we get to pick and choose which way their judgments fall. They might choose to ignore the laws that “unjustly” prevent them from performing police brutality, for example, or might choose to ignore the laws that “unjustly” punish their coworkers when they engage in abusive behavior.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Now, does this mean a kindler, gentler, more inclusive approach toward government workers is the right solution for Libertarianism across the globe? Not at all. I’m not even sure it’s the right approach in all parts of the United States - I think it would work well in Reno (where I live), for example, where our civil servants are fairly professional and have a decent reputation, but would be an utter disaster in places like Ferguson, where the local governments were explicitly created to further the interests of segregationists and small-town tyrants. I think there’s room for both well-meaning civil servants and the <a href="https://en.wikipedia.org/wiki/Battle_of_Athens_(1946)" target="_blank">Battle of Athens</a>.&nbsp;</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Personally, I get the impression that White Feminism is trying to drive the same point home among the broader feminist movement. Yes, poorer, less privileged men are almost universally going to be reactionary against the feminist project - after all, when a person doesn’t have any control over their own life but sees an opportunity to control another’s, they’ll frequently take it (this is the path from which petty bureaucrats are formed). However, what several White Feminists are trying to say (and this is the part where my ass potentially does the talking) is that they’re seeing more and more men become open allies of the overall project. They’re seeing men, especially among the more affluent, better educated group, learn the goals of feminism, learn how those goals benefit themselves as well as women, and are consequently signing on to help advance the project. Since a lot of these men are in positions of power and privilege, they’re pretty useful to have as allies - they’re actually in positions to move public policy and the social culture in a more feminist direction. On the other hand, these men are used to being respected, valued, and listened to, and if feminists won’t listen, well… who will? <a href="https://www.reddit.com/r/TheRedPill" target="_blank">/r/TheRedPill</a>?</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">On the other, other hand, part of the problem is that there’s a class of men that are, by default, used to being respected, valued, and listened to while everyone else is ignored.&nbsp;</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Of course, they’re the ones with the levers of power to begin with, which is bad…</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">But some of them are willing to share, which is good!</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">But they’re not willing to give them up entirely, which is bad...</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">But they’re willing to listen to feminists while wielding their levers of power, which is good!</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">But their levers of power contain potassium benzoate…</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">Uhh… am I being detained? Am I free to go?</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">So, to wrap things up, if you’re not a feminist and you see a feminist rant about #NotAllMen, understand that there are very good reasons for that rant. Not all women are privileged enough to live, work, and be surrounded by generally reasonable men, and those women really need to get their voices heard. Additionally, a lot of the more reasonable men are also spoiled, privileged brats that need to sit down and shut up once in awhile and let the people that know what they’re talking about do the talking, something which you’d recognize if you think about the Pointy Haired Bosses in your life (as an IT worker, I can’t begin to count the number of times I’ve had my job explained to me by someone that doesn’t know how to reboot their computer). If they’re following it up with #killallmen and #maletears, well, there’s probably a pretty good reason for that, much of it probably involves a considerable amount of personal trauma, and if you walked a meter in her shoes, you’d probably feel the same way. If you don’t believe me, ask a convicted felon how they feel about the government. Or ask someone from a country where their government doesn’t even pay lip service to the idea of basing their authority on the consent of the governed. Same idea, oftentimes the same oppressor.</span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;"><br /></span></span></div><div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial;"><span style="font-size: 14.6667px; line-height: 20.24px; white-space: pre-wrap;">With that, over 2000 words later, I am done. #endrant</span></span></div><div><br /></div>Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-79668859353354810802015-06-07T16:17:00.000-07:002015-06-07T16:17:08.623-07:00I Had Oatmeal For Breakfast<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-sNPGI9Js-NY/VXTQHBqgdaI/AAAAAAAAAwY/-z6ormh_GOU/s1600/359386784_1f543957ea_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://3.bp.blogspot.com/-sNPGI9Js-NY/VXTQHBqgdaI/AAAAAAAAAwY/-z6ormh_GOU/s400/359386784_1f543957ea_o.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/nate/359386784/in/photolist-xKXaS-8JCpZm-6298FZ-6xv4AX-bq5hzS-9Nv7zi-bzx7tC-9Nv7Cg-9vmcUp-k5iTEi-4GTniD-a94hjA-ebKrQq-bphGcr-dMnCke-dMtdkb-74v2EV-e4ZQwd-7Y8yj1-6okQ9W-e4TW4V-9nYuee-7yvJdA-ebUPdH-8EbVaW-fD5zd8-7yrVpp-6RdDQo-ebUP1v-95Posz-8XysWt-8XBvR1-6YP9P-9kqQc-7akGmN-o4xiH3-ebDNvp-ebUNYk-eb2yNu-6a8qWt-4GTnhP-5cu9xH-NthrS-ectaoY-2TFLku-5w2LhX-7cC4XA-ebj2Qi-gPHD7r-85iHMi" target="_blank">oatmeal</a> by <a href="https://www.flickr.com/photos/nate/" target="_blank">Nate Steiner</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table>I had oatmeal for breakfast.<span id="goog_1483867169"></span><br /><br />Or did I? Is that all I really had for breakfast? Well, no - there was a pat of butter and a tablespoon of brown sugar in my oatmeal, plus I had a large cup of coffee with it. So, I really had a bowl of oatmeal with brown sugar and butter, plus a cup of coffee for breakfast.<br /><br />Clearly I must be hiding something. We must dig deeper.<br /><br />What time did I have breakfast? 11 in the morning? Well, that's not breakfast time - <a href="http://www.mcdonalds.co.uk/ukhome/whatmakesmcdonalds/questions/food/breakfast/what-time-does-mcdonalds-start-serving-breakfast.html" target="_blank">McDonald's stops serving breakfast at 10:30</a>. So, clearly, I didn't have breakfast at all - I had brunch. Therefore, I had oatmeal with brown sugar and butter, plus a cup of coffee for brunch.<br /><br />Clearly my story is unraveling. What do I have to hide?<br /><br />Are we even sure I had oatmeal? The box said oatmeal on it, <i>or so I say</i>, but it might not actually contain oatmeal. After all, I could have emptied the contents of the box and refilled it with something else - farina, or barley, or rice, or rye, or some other cereal grain. It might not have even contained a cereal grain at all. Who knows what was really in the box? It could have ground up cricket corpses in there for all we know. Will I let the public examine the contents of the box? Will I let anybody come in, examine my dishes and trash, and confirm that I did indeed eat oatmeal? Will I let anyone examine my plumbing for oatmeal-containing waste? Well, no, that's a rather serious privacy violation right there, and I don't really think that's necessary. It's just a bowl of oatmeal I had for breakfast...<br /><br /><i>Or is it?</i><br /><br />You know what else waits a long time before meals and eats later in the day? Reptiles. Snakes famously eat large meals, then digest them for a week. Snakes don't eat breakfast, lunch and dinner the way we do; neither do other reptiles, since they're cold blooded and don't need as much energy as warm blooded mammals. Isn't it <i>a little suspicious</i>&nbsp;that I don't seem to need as much energy as your average mammal? Isn't it <i>a little suspicious</i>&nbsp;that I overslept through breakfast and don't have as high of a metabolism as your average human? Isn't it <i>a little suspicious</i>&nbsp;that I've never openly denied being a <a href="http://en.wikipedia.org/wiki/Reptilians" target="_blank">Reptilian</a>? I've lied about everything else - what I had for breakfast, or whether I even <i>had</i>&nbsp;breakfast or not. I've been evasive about everything else - I won't let anyone verify my claims about my <i>so-called "breakfast"</i>&nbsp;independently.<br /><br /><i><b>What do I have to hide?</b></i><br /><i><b><br /></b></i>What? I'm just asking questions.<br /><br />The truth is, I really did have oatmeal for breakfast, at least in the conversational sense of talking about "oatmeal" and "breakfast". Trouble is, any moment in time is like an <a href="http://en.wikipedia.org/wiki/Irrational_number" target="_blank">irrational number</a> - if you examine any moment far enough, you get steadily increasing levels of precision without end. It's physically impossible to know "the full story" about anything because any story in any measurable moment in time is infinitely deep and infinitely wide. Do we look for "the full story" down to the subatomic level? Do we examine "the full story" in a cosmic sense? Do we even possess the ability to measure "the full story" in either extreme, or in any other extreme we can possibly conceive of? Of course not. All we can&nbsp;do is establish that any story is "true" up to a certain level of resolution, then decide which level of resolution we need to look at. Sometimes, it makes sense to decide that "π = 3.14", like if you're trying to calculate the area of a circle on a cocktail napkin at a bar to impress someone. Other times, it makes sense to dig deeper and declare that "π = 3.141592654", like if we're building a bridge and need "exact" measurements of load, stress, and dimension.<br /><br />What we can't do - what we must <i>never</i>&nbsp;do - is decide that, since&nbsp;π does not, in fact, equal 3.141592654 - since, if we dig deeper, it actually equals 3.14159265<b>39</b>&nbsp;- then "the story of&nbsp;π" must be all wrong and&nbsp;π actually equals 2 or 5. No amount of digging and analysis changes the simple fact that&nbsp;π equals "roughly 3", or "roughly 3.1", or "roughly 3.14", or so on. Proving that the 4 in the billionth's place is "secretly" a 3 because the number in the ten-billionth's place is a 9 does not destroy the truth of&nbsp;π or the truth of the values of the more significant digits, nor does it prove that there's a conspiracy to hide "the real value of π" from anyone. Similarly, proving that I didn't have plain oatmeal doesn't disprove that I had oatmeal - it just means you discovered a less significant digit in the story of my breakfast. Whether that particular piece of data is still important when looking at the story of my breakfast is subjective - sometimes it is, sometimes it isn't. It might be significant if I was talking to my doctor about my diet and the doctor told me to cut sugar and fat out. It's probably less significant if someone asked me what I had to eat for breakfast to get a good idea of how hungry I'll be when it's time for lunch; on the other hand, the fact that I had breakfast at 11 might be worth mentioning, or it might not be if I didn't have much oatmeal because I knew I'd be eating lunch a couple hours later. Either way, no amount of questioning or investigation will empty my stomach, turn me into a reptile, or make the ratio of a circle's circumference to its diameter 5.<br /><br />It can't be done. Don't let anyone else tell you otherwise.Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-65543099044857608402015-05-14T13:45:00.002-07:002015-05-14T13:45:27.095-07:00Stupid PowerShell Tricks: Launching an Elevated CMD Prompt from CMD<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-d2rOMChkHYY/VVUEZ0IK0CI/AAAAAAAAAvc/WLzMw4aNd8w/s1600/ElevatedPrompt.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="362" src="http://4.bp.blogspot.com/-d2rOMChkHYY/VVUEZ0IK0CI/AAAAAAAAAvc/WLzMw4aNd8w/s400/ElevatedPrompt.png" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A non-elevated prompt creating an elevated prompt</td></tr></tbody></table>One of the minor annoyances of working in a Windows environment is that, though <a href="http://ss64.com/nt/runas.html" target="_blank"><span style="font-family: Courier New, Courier, monospace;">RunAs</span></a> is a closer approximation of <a href="http://ss64.com/bash/sudo.html" target="_blank"><span style="font-family: Courier New, Courier, monospace;">sudo</span></a> than it ever was back in the days of Windows XP, it still won't give you UAC-accepted Administrator access (i.e. the Windows equivalent of "root").<br /><br />PowerShell, on the other hand, labors under no such restrictions, thanks to the&nbsp;<a href="http://ss64.com/ps/start-process.html" style="font-family: 'Courier New', Courier, monospace;" target="_blank">Start-Process</a><span style="font-family: inherit;">&nbsp;cmdlet.</span><br /><br />As luck would have it, <span style="font-family: Courier New, Courier, monospace;">Start-Process</span> <a href="https://technet.microsoft.com/en-us/library/hh849848.aspx" target="_blank">includes a <span style="font-family: Courier New, Courier, monospace;">-Verb</span> argument</a>, which accepts the following:<br /><br /><span style="font-family: Courier New, Courier, monospace;">File type Verbs&nbsp;</span><br /><span style="font-family: Courier New, Courier, monospace;">--------- -------&nbsp;</span><br /><span style="font-family: Courier New, Courier, monospace;">.cmd------Edit, Open, Print, Runas&nbsp;</span><br /><span style="font-family: Courier New, Courier, monospace;">.exe------Open, RunAs&nbsp;</span><br /><span style="font-family: Courier New, Courier, monospace;">.txt------Open, Print, PrintTo&nbsp;</span><br /><span style="font-family: Courier New, Courier, monospace;">.wav------Open, Play</span><br /><br />If you feed it the <span style="font-family: Courier New, Courier, monospace;">Runas</span> flag, PowerShell will dutifully run whatever process you feed it with an administrative prompt. Consequently, if you feed <span style="font-family: Courier New, Courier, monospace;">powershell.exe</span> the following within CMD:<br /><br /><span style="font-family: Courier New, Courier, monospace;">powershell.exe -Command "Start-Process cmd.exe -Verb RunAs"</span><br /><br />You'll end up with an administrative CMD prompt.Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com1tag:blogger.com,1999:blog-612052649872821494.post-46921994537286247512015-04-29T10:59:00.000-07:002015-04-29T10:59:00.031-07:00The Libertarian Buffet<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-3feW7y_46r0/VUD7-iayUyI/AAAAAAAAAvA/Ve1pDd2m82w/s1600/4425982039_752bc49b3f_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-3feW7y_46r0/VUD7-iayUyI/AAAAAAAAAvA/Ve1pDd2m82w/s1600/4425982039_752bc49b3f_o.jpg" height="322" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/rugybugynicknamepooh/4425982039/in/photolist-7K7jga-69AytE-7LX4Nr-6rkED3-eYuqUE-fYntJv-6hkUxx-9Bkxmo-phdEgh-aT2eYP-6hq5AA-7avVfv-6hkUP2-gGo3TK-oj96fi-7qUt16-e2ekCH-7MM1E1-9aLNyc-2pgsj-5yAUFS-euvu7z-bPUCVF-6hq5GU-6hkUX6-euyG6s-EUgXM-2H2n1X-9BkxnA-QophG-oMEApE-nefQc-jm4oox-6hq6jS-4w2c1d-647ow9-6hq5NU-bb6Jo-aor8AZ-9Q1BM-EUgXg-BoeSm-e6jVPF-6rB3rk-6hkUHT-75KoC7-cTPAMy-brtGEy-7kgHBm-dL94w3" target="_blank">meatloaf</a> by&nbsp;<a href="https://www.flickr.com/photos/rugybugynicknamepooh/" target="_blank">karen H. nickname.{ pooh}</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a></td></tr></tbody></table>Let's start at the beginning: I love a good metaphor. Or analogy. Or simile. <a href="http://www.copyblogger.com/metaphor-simile-and-analogy-what%E2%80%99s-the-difference/" target="_blank">Call it whatever you want</a>, I don't really care. A couple weeks ago, I ran across a really good one, courtesy of <a href="http://cafehayek.com/2015/04/insipidness-guaranteed.html" target="_blank">Don Boudreaux</a>&nbsp;- suppose you were a restaurant owner who was tasked with selling a single dish to over 100 million people. Which dish would you choose? Mexican? Cajun? Too spicy. Sushi? Too exotic. Lamb? Too gamy.<br /><blockquote class="tr_bq">You go down a long list. &nbsp;Eventually, you settle upon something that is unquestionably bland and common and uninspiring – something like a plain hamburger, or perhaps a dish of mild meatloaf with mashed potatoes topped only with butter. &nbsp;Anything more exotic than such offerings will, while being much preferred by a few million of the people whose patronage you’re trying to win, will be rejected by a majority of the people. &nbsp;Your rival, of course, faces the same incentives..</blockquote>This same dynamic, he goes on to explain, is why presidential candidates are so utterly boring and insipid. The goal isn't to become beloved, since that's virtually impossible - it's to be less intrinsically offensive than the other candidate.<br /><br />Though this is certainly accurate, it's also profoundly <i>depressing.</i><br /><i><br /></i>Now, it's no big secret that I'm <a href="http://lpnevada.org/david-colborne" target="_blank">a rather serious fan</a> of a bit more variety in our political diet. Speaking as a card-carrying Libertarian (seriously, the national LP will send you a card if you <a href="https://www.lp.org/membership" target="_blank">become a member</a> - it's quite handy for scraping ice off a windshield if you break your ice scraper), I view Libertarians as a group of people that see a menu with two entrees - a plain hamburger and a mild meatloaf with mashed potatoes topped with butter - as a moral affront upon our political culinary senses. So, we set about to create a new restaurant, one that won't even try to sell dishes to 100 million people, but will instead focus on bringing new and novel tastes to the political public. We'd get the dishes out by creating a political potluck, where each person would be free to bring whatever dish they want, just so long as they respect the right of those around them to also bring separate dishes to the potluck. Want to try <a href="http://reason.com/blog/2013/12/30/slate-wonders-why-libertarian-party-insi" target="_blank">support for gay marriage in the '70s</a>? Yeah, we can do that. <a href="http://www.independentpoliticalreport.com/2008/07/libertarians-help-san-francisco-prostitution-decriminalization-measure-get-national-publicity/" target="_blank">Legalized prostitution</a>? No problem. <a href="http://www.theatlantic.com/politics/archive/2013/04/the-libertarian-party-is-now-accepting-bitcoin-donations/274935/" target="_blank">Bitcoins as campaign contributions</a>? Done and done.<br /><br />The trouble with the potluck model of political restauranteuring, however, is that some people just aren't very good cooks. Some people, in fact, are the political equivalent of <a href="http://en.wikipedia.org/wiki/Typhoid_Mary" target="_blank">Typhoid Mary</a> and are in every bit as deep of denial about their poisonous nature as she ever was. The mainstream parties do a decent job of keeping those cooks out of the kitchen; sure, a bad apple sneaks in <a href="https://larouchepac.com/" target="_blank">every now and then</a>, but they usually get plucked out once they start acting like a political sous-chef. At the Libertarian Party Buffet, however, <i>all</i>&nbsp;dishes are theoretically welcome. So, some people bring plates full of live worms and insist they're actually hamburger. Some people bring a plate of raw ground beef - it's "purer" than a cooked meatloaf or hamburger, you see. Some people show up with edible underpants and a bowl full of flavored condoms. Some people scrape some fuzzy mold off of some beans and hard tack they left in the root cellar "back in the day", warm it back up, and bring it to the buffet. Still others show up with a tin full of "special brownies". Occasionally, someone shows up with a plain hamburger made with grass-fed beef instead of the usual cheap corn-fed beef (see, it's different!), which rather misses the point of the buffet. Still others show up with a plate of ghost peppers and a bowl of <a href="http://store.davesgourmet.com/ProductDetails.asp?ProductCode=DAIN" target="_blank">Insanity Sauce</a> to dip them in. Then there are the ones that show up with a bunch of fried chicken, watermelon, and purple-colored water because they think it'll appeal to "those people". Or the people that try to serve a bunch of "<a href="http://www.amazon.com/Salt-Himalayan-Chemicals-Non-gmo-Organic/dp/B007V8A34M" target="_blank">chemical-free non-GMO organic halal kosher pink Himalayan salt</a>". Or - and these are my personal favorite - the people who bring a bunch of pretentiously plated food for people to "look at" - God help you if you actually attempt to "defile" the "art" with your hunger.<a href="https://www.blogger.com/blogger.g?blogID=612052649872821494#1">*</a><br /><br />What's the problem with that? Well, some people are showing up to the buffet with some really neat and incredible dishes. There's some <a href="http://thelibertarianrepublic.com/how-do-we-communicate-libertarian-ideas-effectively/" target="_blank">excellent</a> <a href="http://bleedingheartlibertarians.com/2015/04/eitheror-vel-aut-aut/" target="_blank">fusion</a> <a href="http://cathyreisenwitz.com/blog/2015/03/31/heterosexual-christians-want-the-government-out-of-their-bedroom-too/" target="_blank">food</a> getting cooked up here lately, along with some <a href="http://reason.com/archives/2015/04/29/the-time-to-limit-nsa-snooping-is-now" target="_blank">excellent</a> <a href="http://www.coyoteblog.com/coyote_blog/2015/04/my-plan-to-help-african-americans.html" target="_blank">traditional</a> <a href="http://popehat.com/2015/04/29/cops-we-need-rights-more-than-you-citizen/" target="_blank">dishes</a>. Trouble is, can you run a restaurant where nine out of ten dishes on the menu are fantastic - better than anything else offered anywhere else, in fact - but that tenth dish makes everyone who tries it violently ill? How long will it take until some unfortunate person tries "Chef's Special #10", or just happens to be downwind of the kitchen while it's cooking?<br /><br />So, what's the solution? Do we kick the bad chefs out of the kitchen? To be fair, we <i>could. </i>It would fly in the face of the Libertarian Party Restaurant ethos, and who knows, maybe one of the dishes being "vetted" out of the restaurant might be really, <i>really</i>&nbsp;good, but we could. How would we do that? Who would be in charge of the "vetting" process?<br /><br />Alternatively, we can rely on public shaming, which seems to be the default solution for now. Shout out from the rooftops that, hey, "Chef's Special #10" is <i>horrible</i>, <i>no good</i>, and <i>probably dangerous</i>. Tell everyone and their mother that Specials 1-9 are <i>way</i>&nbsp;better. Scream at the chef that keeps bringing in that toxic waste in that ancient avocado-colored crock pot to <i>stop coming here, damn it</i>. Make it clear that we don't want to be known as "that restaurant that serves worms and 'organic' Himalayan sea salt and moldy beans" - we want to be known as the restaurant with lots of really tasty dishes, so many that everybody can find something they enjoy.<br /><br />Will it work? I don't know, but I'm excited to find out.<br /><br /><a href="https://www.blogger.com/null" id="1">*</a> This list of dishes wasn't pulled completely out of my waste orifice - enjoy TLR's <a href="http://thelibertarianrepublic.com/top-10-worst-kinds-of-libertarians/" target="_blank">Here Are The Top 10 Worst Kinds Of Libertarians</a>.Anonymoushttp://www.blogger.com/profile/00559189787607852538noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-64758688299276573532015-04-22T23:42:00.000-07:002015-04-22T23:42:09.666-07:00Why the Soviet Union fell<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-DUVTLn3wAM4/VThtEKd-H-I/AAAAAAAACxc/RKJeFrbjBQE/s1600/1434119192_e943a0f3d0_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-DUVTLn3wAM4/VThtEKd-H-I/AAAAAAAACxc/RKJeFrbjBQE/s1600/1434119192_e943a0f3d0_o.jpg" height="300" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/14097896@N06/1434119192/in/photolist-3bJeEY-7Kacyk-7KoX7v-7SbT8L-7DJWd7-7KgwzK-7S94Zt-7FRGBK-54n8hB-7DzoXw-7DyKR9-icxio-aufZHJ-7DvUtL-7KpPha-7KpPFk-7y7xW1-7kCqij-778Qx4-7DKcVu-7KtKao-7KpPpr-7Dxqk1-7DtqBz-7DFh1V-nM7ZfW-7DuWZR-7DyKHS-7znx9Z-7JNkVi-7FEH74-7DuXbH-7KdyQY-7Sc6p7-7JRokb-7c7qb8-75497L-6Di6AC-4KiD1X-752UBx-3apSrQ-4feFkL-7zrieG-7zriwm-7JR2RJ-CarSx-9D6eDq-9D6eDs-7bsGMo-7pWhMG" target="_blank">Lenin, Soviet Union</a> by <a href="https://www.flickr.com/photos/14097896@N06/" target="_blank">rlzobreaker</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table>I've read a <a href="https://play.google.com/store/books/details/Francis_Spufford_Red_Plenty?id=PioE2EDcuMsC" target="_blank">fair</a> <a href="https://play.google.com/store/books/details/Anne_Applebaum_Gulag?id=fCurJRhH-GgC" target="_blank">number</a> of <a href="https://play.google.com/store/books/details/Robert_Service_Spies_and_Commissars?id=hYbw25xe-FwC" target="_blank">books</a> about the Soviet Union recently. Each book has done a good job of explaining the problems with the Soviet experiment - the brutality that was used to install the system during the October Revolution; Stalin's symptomatic and seemingly random cruelty; the way politics and ideology bled into every single corner of Soviet life, <a href="http://en.wikipedia.org/wiki/Lysenkoism" target="_blank">even the sciences</a>, <a href="http://en.wikipedia.org/wiki/Suppressed_research_in_the_Soviet_Union" target="_blank">stalling technological progress</a>; the inherent inefficiencies of the command economy, especially as implemented under "Socialism in One Country"; and so on. None of them, however, explained why the Soviet Union collapsed. Sure, the system wasn't as efficient as capitalism, but North Korea and Cuba have both proven that's not enough to prevent a totalitarian "socialist" government from maintaining power. North Korea's mass starvation in the 1990's proved that a major disaster isn't enough to topple a totalitarian government (as if the <a href="http://en.wikipedia.org/wiki/Holodomor" target="_blank">Holodomor</a> wasn't sufficient to prove this already), so why is Chernobyl considered one of the keys to the collapse of the Soviet Union? Why was Gorbachev so unsuccessful in his attempts to reform the Soviet system? What made the Soviet Union different? What happened?<br /><br />Halfway through the first chapter of <i><a href="http://www.amazon.com/Russians-Hedrick-Smith/dp/0812905210/ref=sr_1_1?ie=UTF8&amp;qid=1429761579&amp;sr=8-1&amp;keywords=the+russians" target="_blank">The Russians</a></i>, I immediately understood.<br /><br />Pretend you work in a widget factory for a multinational conglomerate. It's a big, sprawling mess of a company, with as many employees as you can imagine and locations all over the world. To keep the company moving in nominally the same direction, several policies and procedures have been crafted and they are <i>strictly</i>&nbsp;enforced. To ensure the company's procedures are followed and losses are minimized, the company utilizes a sophisticated system of intelligence gathering - surveillance cameras wherever possible, paid bonuses to employees that tattle on their coworkers, transfers to unpleasant departments for people that are found guilty of minor transgressions, and termination of employees caught doing anything halfway major.<br /><br />One of the rules that all divisions of the company must follow is they are not allowed to buy anything from external vendors if it's being made internally - since the company is quite large and makes all sorts of things, this means the company sources most of its supplies internally. From pens to automobiles to produce to machine parts, the company makes near everything for itself, which ensures that its competition never profits from the company; if the company can't make something, it usually tries to find as close to a substitute as it <i>can</i>&nbsp;make internally, if possible, while it tries to find a way to ultimately supply that thing internally in the long run. This even extends to news and entertainment - since the company owns some newspapers, radio stations, and TV stations, only company-owned newspapers, radio programs, and TV shows are allowed on company grounds. Another rule that employees of the company must follow - and failure to abide by this rule will lead to <i>swift</i>&nbsp;termination - is they are expressly forbidden from talking to employees of competing companies, lest they leak "trade secrets". Since the company makes and sells just about anything and everything, that effectively means that employees of the company can only safely socialize and talk among themselves. To further restrict potential leaks, the company strongly discourages employees from even talking among each other, especially to employees from other divisions.<br /><br />From your perspective, your particular division doesn't seem to be run particularly well. In fact, near as you can tell, it's run unconscionably poorly. There are frequent supply issues - sometimes you end up with the wrong parts, sometimes the quality of the parts is extremely poor, sometimes you just don't end up with the supplies you need at all. Consequently, your division has serious difficulties satisfying the needs of other divisions that rely on your widgets, to say nothing of your company's customers. Though you and your coworkers generally do your best, you each catch yourselves sometimes letting things slip, letting a substandard widget or two through - better they receive a bad widget than no widget at all, right? Besides, the company has strict quotas about what each division is supposed to produce, and the penalties for failing to produce enough widgets - of any quality - are best left unsaid. On top of the supply and production issues, your division also suffers from a steadily ratcheting culture of micromanagement. For example, management determined one day that it took you 38 seconds to walk from the time clock to the widget press; consequently, if you ever take 39 seconds, you are supposed to lose an hour of pay due to "laziness". One of your coworkers was informed that "shock workers" - the best workers from other widget factories - only required a 74-degree deflection from the top of the press lever to the bottom, which was more efficient than pushing the press down as far as possible due to the reduced range of motion and reduced wear and tear on the press; however, when your coworker attempted to apply this advice, he found that his press wouldn't always cut the widget all the way through the metal. Even so, failure to adhere to management's policies and procedures was strictly frowned on; the last thing your coworker needed was for you or one of your coworkers to turn him in for using a 75-degree deflection and collect that informer's bonus while he and his family were transferred to North Dakota.<br /><br />Despite it all, though, your division muddles through and keeps producing widgets. Believe it or not, you and your coworkers take pride in your work. Sure, your division may be one of the most poorly run divisions in the company, but you each get it done when it matters and still find a way to deliver. In your own, imperfect way, you and your division are helping to make the company you work for successful. Fellow coworkers around the world - <i>around the world!</i>&nbsp;-&nbsp;count on you and your widgets, a fact that's brought up during every employee meeting, in every internal newsletter, and sometimes even in the company news broadcasts. Not everyone can say their work is relied upon across the world.<br /><br />To make sure nobody in the world is let down by your poorly run division, you and your coworkers bend the rules a bit. In exchange for you re-pressing some of your coworker's widgets, he'll sometimes clock you in while you're already walking to your press - this way you don't get in trouble for walking too slowly between the time clock and the press and he doesn't get in trouble for improperly pressing his widgets. You have similar arrangements with other coworkers to work around some of the other rules put into place by management, and vice-versa; though this means you could inform on half of the plant if you so desired, they could also inform on you in a heartbeat. None of you really want to do that, though - if the rules weren't bent, the widgets wouldn't get made and none of you would get paid. Sometimes, you even bend the rules a bit and talk to people outside the company - none of them make <i>widgets, </i>so it's probably not competing, right? - or even sneak in some tools and supplies from outside of the company when nobody's looking. Sure, maybe one of the conglomerate's other divisions is losing business because of this, but some of the tools and supplies you're bringing in are <i>really good</i>&nbsp;- way better than anything you can find internally, assuming you can even find it in the first place - and, after all, your job is to produce widgets, right? As long as your division meets its widget quote, it's <i>surely</i>&nbsp;all good.<br /><br />Again, the alternative is best left unsaid.<br /><br />One day you wake up and one of your friends from outside the company is calling you. You answer and they immediately ask if you're okay, if you're all right, if your coworkers are all right. "Of course we are," you reply, "why wouldn't we be?" "There was a terrible accident at one of your factories - it's in all the news!", they exclaim. "I'll look into it," you declare, then get ready for work. Once you get to the factory, everything appears normal. Your coworkers are still making widgets, parts and supplies (such as they are) are still coming in like normal. There are no announcements over the intercom and the internal company newsletter mentions nothing out of the ordinary. Surely there was no disaster, you decide, and tell your friend as much once you get home.<br /><br />A week later, you spot a terse notice in the company newsletter - "Sprockets from the Tennessee Valley factory will be unavailable until further notice." That's it - no explanation, no further details. Even so, that sole sentence is rather strange. You can't think of a single time that the company shut down an entire supplier without some sort of planning, some sort of announcement beforehand. This is very peculiar.<br /><br />A week after that, a letter from the new CEO thanks the Tennessee Valley factory workers for their "sacrifice" and also thanks the company's internal disaster response team for their "service to the factory workers". "Remaining factory workers", the CEO further explains, "will be transferred to other factories."<br /><br />Two weeks later, a couple of new factory workers arrive. They look like they haven't slept in ages. They claim they're from "Kentucky", but neither of them say much else. They barely talk to each other and <i>never</i>&nbsp;talk to anyone else. At first, you and your coworkers decide they must be informants - these two aren't willing to "scratch your backs", nor do they seem particularly interested in letting anyone else "scratch theirs". After about a month or so, though, none of you notice any odd firings or transfers, so each of you decide these two just must be the quiet type and leave them alone.<br /><br />A year passes.<br /><br />You and your coworkers are really starting to like the new CEO. He's much younger than any previous CEO you can remember, and the company news all show him visiting and conversing with other division workers - <i>really</i>&nbsp;conversing with them, not just lecturing at them or letting them parrot company-sourced motivational phrases. Your father, who also worked for the company when he was your age, mentioned there being a CEO like this one when he was your age, but "that CEO didn't last long". You hope this new CEO lasts a while.<br /><br />Recently, the new CEO announced two new changes to the rules. First, he announced, the company was going to pursue a policy of "Openness" - though employees were still forbidden from talking to employees of competing firms, they were now expressly encouraged to talk to each other, even if they were in separate divisions. Next, he announced the company was going to pursue a policy of "Restructuring" - it was no longer forbidden for company divisions to purchase goods from competing companies.<br /><br />Finally!, you and your coworkers thought to yourselves. Now you can get supplies and parts from <i>anywhere</i>&nbsp;- no more waiting on unreliable internal suppliers of dubious quality. Surely you'll be producing your quota of widgets in no time. However, you and your coworkers quickly discover that you actually <i>can't</i>&nbsp;- there's no money. It was one thing sneaking in the occasional used tool or scrap when times were tight - none of your competitors minded that - but it turns out it's something else entirely when you want a regular supply of something at a consistent quality. In fact, now that your division is a potential customer, your competitors are even keeping a closer eye on their leftovers.<br /><br />Meanwhile, as you and your coworkers grow increasingly confident in talking to each other - <i>really</i>&nbsp;talking to each other - about work, about life, and even talking to people in other divisions about these things, you begin to realize that your division isn't particularly poorly run - <i>all</i>&nbsp;of the company's divisions are poorly run. Every single coworker you talk to from every other division shares with you the same stories you know so well - of failed supply lines, lousy quality, and endemic micromanagement. Near as any of you can tell, <i>none</i>&nbsp;of you have made anything bought by anyone other than another company division; the company swears it has billions upon billions in sales, but none of your coworkers are making enough widgets or anything else to meet internal demand, much less enough to sell to the public. This, you suspect, explains why your division has no money to buy anything.<br /><br />At the same time, you also discover that several other divisions also had some silent transfers, just like the two guys that showed up at your factory a year ago. Some of them, it turns out, are actually willing to talk about what happened now, and the stories they tell leave you awestruck. They describe, independent of one another and with near-total fidelity between each of them, a horrific cataclysm, one that killed several of their coworkers and led to <i>entire cities</i>&nbsp;being evacuated. The pollution from the cataclysm destroyed nearby forests and rendered much of the surrounding countryside uninhabitable. The kicker? <i>The factory is still open.</i>&nbsp;Despite the disaster, despite the devastation, the company still insists that factory workers show up at the remains of the factory each day and keep the lines that weren't destroyed operational. You can't believe it - surely, after a disaster like that, they would shut down such an unsafe factory, or spend some time rebuilding it so such a disaster would never occur again, or... or <i>something.</i><br /><i><br /></i>If they won't shut that factory down, if they won't make <i>that </i>one safe after something like that, how do you and your coworkers know that <i>your</i>&nbsp;factory is safe?<br /><br />You and your coworkers decide it's time for action. You collectively decide to do something unprecedented and talk to your manager. Understand, this sort of thing is never&nbsp;done - everybody fears management, the threat of transfer, the threat of <i>termination</i>&nbsp;far too much to ordinarily consider something like this - but you and your coworkers feel your lives are on the line. Much to your shock and amazement, when you share your concerns with your manager, the manager actually <i>agrees with you and your coworkers</i>. In fact, the manager says something downright amazing:<br /><br />"I'm not showing up here again until they get this place fixed up, and I don't think any of you should, either."<br /><br />Then, even more amazingly, the manager left.<br /><br />At first, you and your coworkers are at a loss. Do you keep working? Do you go home? Something like this has never happened before - a manager has never, <i>ever</i>&nbsp;walked off the floor like that. On the other hand, the manager did tell all of you to go home... right? You and your coworkers talk among yourselves for a bit, trying to sort out what to do next. Finally, after a while, one of your coworkers announces that, "screw it", they're going home. Then, a little while later, another one makes the same announcement and leaves. Then another. Then another. Before long, it's clear to the rest of you that there won't be enough workers around to run the factory, so all of you might as well just head home.<br /><br />What you don't realize is that, while this is going on in your widget factory, the same conversations are happening in every other division in the company, and many of them are making the same decision yours did. Before long, none of the divisions are able to work - since your factory isn't making widgets anymore, any division that relied on your widgets has to shut down, which causes other factories and offices down the line to shut down as they lose their supplies of whatever divisions the widgets were supplying, and so on. Just like that, the entire company collapses, one division at a time like a row of dominoes, first slowly, then really, <i>really</i>&nbsp;quickly as each small failure in the company cascades into progressively larger and larger ones. It doesn't take any time at all before, one day, you wake up and read in the newspaper that the company you work for - the company you <i>worked</i>&nbsp;for - is now bankrupt and liquidating its assets.<br /><br />**********<br /><br />That, more or less, is what happened to the Soviet Union. It might - <i>might </i>- have been able to survive Chernobyl if a hard-line Stalinist was at the helm and carefully controlled information about the disaster, or at least left everyone so fearful about the consequences of speaking up that they'd continue to work anyway. It might - <i>might</i>&nbsp;- have survived (or even thrived!) after Glasnost and Perestroika if Chernobyl didn't prove that the people in charge of the USSR had been all too willing for far too long to sacrifice everything - people, the countryside, <i>everything</i>&nbsp;-&nbsp;for the sake of the system as it was written on paper. It might - <i>might</i>&nbsp;- have survived losing in Afghanistan, might have survived the oil glut of the 1980's, might have survived the effort required to keep the <a href="http://en.wikipedia.org/wiki/History_of_East_Germany#Developing_international_debt_crisis" target="_blank">increasingly</a> <a href="http://en.wikipedia.org/wiki/1980s_austerity_policy_in_Romania" target="_blank">dysfunctional</a> satellite states in the Warsaw Pact economically viable, might have endured the Soviet Union's increasingly expensive adventurism in Africa. But the Soviet Union couldn't survive all of these things - not with a polity that, by the 1970's, the time period <i>The Russians</i>&nbsp;describes, was already doing everything within its power to work around the system to meet their needs. Once it became clear, <i>crystal</i>&nbsp;clear, that the system <i>didn't mean well</i>, that the system simply <i>didn't work</i>, it didn't take long before everyone just stopped pretending to live under its rules anymore.<br /><br />And that was that. That was the end.<br /><br />In short, by the 1970's, the communist experiment, at least in the Soviet Union, was already done. Everybody had been working around it for <i>generations</i>&nbsp;by that point. They tolerated working around the system because they thought that, well, maybe it's <i>kind</i>&nbsp;of working - who knows? There was a time, especially in the 1950's and 1960's, when it really did look like it was working, when it really did look like it might catch up to the capitalist countries in the West. There were Soviets flying to space, advanced Soviet military hardware going toe-to-toe against the West in Vietnam and Africa, even the standard of living was slowly but steadily improving. But, once the Soviets started comparing notes with each other, once the Soviets started comparing notes with what was really going on outside the Soviet Union, and once the Soviets came to grips with their past - not all of it, not even <i>close</i>&nbsp;to all of it, but enough of it - they realized that enough was enough.<br /><br />Will that happen here some day? Why didn't it happen in Cuba or North Korea? What happened in China? These are good questions, but they will have to wait for another day.David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-18906743485305107052015-04-15T17:00:00.000-07:002015-04-15T17:00:17.357-07:00Remotely Rearming Microsoft Office 2010/2013<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-sXDWAwoRA_w/VS7Kf4Yr_qI/AAAAAAAACxE/yYwtCha3E14/s1600/7408451314_0bb1cca4c2_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-sXDWAwoRA_w/VS7Kf4Yr_qI/AAAAAAAACxE/yYwtCha3E14/s1600/7408451314_0bb1cca4c2_o.jpg" height="355" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/jurvetson/7408451314/in/photolist-bvcbis-jB3M44-c7PG79-72SJuQ-dhZrKM-atAnS1-bi4yL6-85tMTG-atHJJo-chEftd-djkSiW-acqro-bEWnc2-4FAqy9-qj5FUY-qmmL9e-9mvMsP-657TrS-chEjh3-qj5FW1-9mqRC4-bs52Uo-pdpBA8-foyaSv-foNrqy-dPuGGx-pbNJxn-ejZr8a-9M2QU4-qmbzcv-6oqRAV-6VXNYF-q4NUn3-6oqUMD-5zWDAn-6ov3Mw-6oqRQZ-6ov4bh-qvmH3p-qveu6q-nGBNma-foyazx-6Ye5Dw-awbMMT-5wheuH-36D3tY-5JTnAB-7x5hc2-kWLGx-9ANyUd" target="_blank">Tesla Robot Dance</a> by <a href="https://www.flickr.com/photos/jurvetson/" target="_blank">Steve Jurvetson</a> is licenses <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table>When it comes to work, I live and die by the following motto:<br /><blockquote class="tr_bq"><i>If it's worth doing twice, it's worth doing automatically.</i></blockquote>With that motto in mind, I ran into an issue. When setting up our computer lab image, I forgot to rearm the source image's Microsoft Office installations - this caused all of our lab PCs to share the same Office activation ID, which in turn led our KMS server to attempt to activate them as if they were all the same computer. Consequently, within a week, I faced some rather confused coworkers who were wondering why Microsoft Office was telling them that it wasn't properly licensed. Meanwhile, whenever I fired up <a href="https://technet.microsoft.com/en-us/library/hh824953.aspx" target="_blank">VAMT</a> to perform a volume activation via KMS, each of the client PCs reported the following error message:<br /><blockquote class="tr_bq">0xC004F038 The software Licensing Service reported that the computer could not be activated. The count reported by your Key Management System (KMS) is insufficient. Please contact your system administrator.</blockquote>When I checked the activation count on our KMS server for Microsoft Office (<a href="http://blogs.technet.com/b/odsupport/archive/2010/06/01/office-2010-kms-installation-and-troubleshooting.aspx" target="_blank"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">cscript slmgr.vbs /dlv all</span></a>), I noticed that the current count was 1 - since we definitely have more than one computer in our computer lab, something clearly wasn't right. This led to a bit of Google sleuthing, which revealed articles that addressed this very issue for <a href="http://blogs.technet.com/b/odsupport/archive/2010/06/14/troubleshooting.aspx" target="_blank">Microsoft Office 2010</a> and <a href="http://blogs.technet.com/b/office_resource_kit/archive/2013/06/05/why-isnt-kms-counting-activation-requests.aspx" target="_blank">Microsoft Office 2013</a>. Trouble was, I was in no position to re-image all of our computer labs, nor was I in a mood to walk up to an innumerable number of PCs and manually run a script, nor was I in a mood to reboot every single computer in the building.<br /><br />Luckily, I didn't have to. Thanks to <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">psexec</span>, a rather handy part of the <a href="https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx" target="_blank">Sysinternals Suite</a>, I was able to modify the script for remote execution:<br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">@ECHO OFF<br />SETLOCAL EnableDelayedExpansion<br /><br />SET _OSPPreArmPath="C:\Program Files (x86)\Common Files\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPREARM.EXE"<br />SET _OSPP10Path="C:\Program Files (x86)\Microsoft Office\Office14\ospp.vbs"<br />SET _OSPP13Path="C:\Program Files (x86)\Microsoft Office\Office15\ospp.vbs"<br /><br />FOR /F "tokens=2 delims=,= usebackq" %%G IN (`dsquery computer ou^=<i>Your PC OU</i>^,dc^=<i>YourInternalDomain</i>^,dc^=<i>YourInternalDomainSuffix</i> -limit 0`) DO (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _Target=^\^\%%G<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ECHO:Rearming Office...<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PSEXEC !_Target! %_OSPPreArmPath%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PSEXEC !_Target! cscript.exe /nologo %_OSPP10Path% /act<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PSEXEC !_Target! cscript.exe /nologo %_OSPP13Path% /act<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PSEXEC !_Target! reg add "HKLM\Software\Microsoft\Office\14.0\Common\OSPPREARM" /f<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PSEXEC !_Target! reg add "HKLM\Software\Microsoft\Office\15.0\Common\OSPPREARM" /f<br />)</span><br /><br />Some caveats:<br /><ul><li>This assumes that you're using a 32-bit installation of Microsoft Office on your PCs, which, unless you're dealing with <i>really</i> big Excel files or something, you <a href="https://support.office.com/en-sg/article/Choose-the-32-bit-or-64-bit-version-of-Office-2dee7807-8f95-4d0c-b5fe-6c6f49b8d261?ui=en-US&amp;rs=en-SG&amp;ad=SG" target="_blank">probably should be</a>.</li><li>It assumes that all of your PCs are in the same OU, or at least are all nested inside the same OU. Note that you can run this on a parent OU and it'll work on all PCs in any child OUs.</li><li>Make sure to fill in <i>YourInternalDomain</i> and <i>YourInternalDomainSuffix</i> with information appropriate for your environment.</li><li>You'll need to run this script in an administrative command prompt from a directory that contains <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">psexec</span> - or, alternatively, you'll need to copy <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">psexec</span> to some place previously listed in your PATH, or add the location of <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">psexec</span> to your PATH.</li><li>All of the affected computers will need to be on.</li><li>I personally found that, even after running this script, it wasn't a bad idea to double-check licensing information in VAMT and reactivate any PCs that were Out of Grace. I will note, though, that the KMS server actually did hand out licenses successfully to those PCs after running this script.</li></ul>If you need to run the script on a particular computer:<br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">@ECHO OFF<br />SETLOCAL EnableDelayedExpansion<br /><br />SET _OSPPreArmPath="C:\Program Files (x86)\Common Files\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPREARM.EXE"<br />SET _OSPP10Path="C:\Program Files (x86)\Microsoft Office\Office14\ospp.vbs"<br />SET _OSPP13Path="C:\Program Files (x86)\Microsoft Office\Office15\ospp.vbs"<br /><br />SET _Target=^\^\%1<br />ECHO:Rearming Office...<br />PSEXEC %_Target% %_OSPPreArmPath%<br />PSEXEC %_Target% cscript.exe /nologo %_OSPP10Path% /act<br />PSEXEC %_Target% cscript.exe /nologo %_OSPP13Path% /act<br />PSEXEC %_Target% reg add "HKLM\Software\Microsoft\Office\14.0\Common\OSPPREARM" /f<br />PSEXEC %_Target% reg add "HKLM\Software\Microsoft\Office\15.0\Common\OSPPREARM" /f</span><br /><br />Then just save the script and call it with <span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><i>scriptname</i>.cmd <i>computername</i></span> (e.g. <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">reactivateoffice.cmd LABPC-1</span>). The same caveats as above more or less apply.David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-19664231563415815182015-04-09T22:36:00.003-07:002015-04-09T22:36:34.579-07:00In defense of small-l libertarianism<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-vTHkfzf5t2g/VSdg68op8_I/AAAAAAAACww/Zqw82r7sekY/s1600/7980886456_dfb55f55c8_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-vTHkfzf5t2g/VSdg68op8_I/AAAAAAAACww/Zqw82r7sekY/s1600/7980886456_dfb55f55c8_o.jpg" height="266" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="http://www.flickr.com/photos/denalinps/7980886456/in/photolist-daf8uC-frSCBu-ot4g6F-87QnJS-7kmnN1-7sfogn-9WYXV5-9YXLaq-fkTAkM-avNabG-hAMvLg-br4cJt-gqCpmC-6F5hcV-6Xn6mD-qp5oK8-byxY5t-9YXGXf-5mcDse-oMznQV-4WLdQN-6dPWqi-jGaJ3k-3Loa6u-pKm7k9-pLPFNC-fBbRPi-5pyqkp-4y3Amp-7khuWK-amXdfU-nSN5ao-7b1mnd-amUoAn-amXcTC-9D6qzp-pUrtV-88qTeD-ocEqbE-8htWbJ-7jjY73-3euB3k-86eF7E-6odpjd-7kmoE5-4iEvJ-5uLHK1-pRpTsk-7dAyd4-7jm5bU" target="_blank">Two porcupines</a> by <a href="https://www.flickr.com/photos/denalinps/" target="_blank">Denali National Park and Reserve</a> is licensed under <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table>My name is David Colborne, and I'm a small-l libertarian.<br /><br />Having been active in libertarian circles for a number of years, I've had several people ask me why I'm not a full-throated anarchist. Don't I think the initiation of force is evil? Don't I think government is inherently coercive? Why settle for <i>smaller</i> government, for <i>minimal </i>government, when I should clearly be advocating for <i>no</i> government as a matter of philosophical principle? My short answer has usually been, "Perhaps, but I'm not really sure that would work". My longer answer has been to throw such people at Scott Siskind's <a href="http://raikoth.net/libertarian.html" target="_blank">Non-Libertarian FAQ</a> and then try to go through it point-by-point, but even that felt like it was dancing around the core issue that really prevents me from embracing Full Metal Anarcho-Capitalism. <br /><br />Then, while reading Meaningness' <a href="http://meaningness.com/systems-crisis-breakdown" target="_blank">Systems of meaning all in flames</a>, I came across this passage:<br /><blockquote class="tr_bq">Any serious system has a network of justifications that answer all “why” questions—not perfectly, but well enough for most people most of the time. So it <i>ought </i>to work.</blockquote>That's when it hit me - "Big L" Libertarianism, the kind of Libertarianism you see presented from the <a href="http://mises.org/" target="_blank">Ludwig von Mises Institute</a>, the kind you sometimes see from the&nbsp;<a href="https://c4ss.org/" target="_blank">Center for a Stateless Society</a>, the kind you hear argued about at Libertarian conventions where people throw <a href="http://blog.colbornemmx.com/2014/04/the-right-way-wrong-way-and-murray.html" target="_blank">Murray Rothbard quotes</a> at one another, is a <i>system</i>. Oh, sure, it's a heavily decentralized one (in theory), but it's still definitely a system.<br /><br />Don't believe me? Ask it questions.<br /><br />Okay, will there be law in an Anarcho-Capitalist society? Sure - there will be <a href="http://en.wikipedia.org/wiki/Polycentric_law" target="_blank">competing forms of law</a> that individuals can choose from. Will there still be a police system? Absolutely - <a href="http://www.notbeinggoverned.com/private-policing-law-enforcement-adjudication-stateless-society/" target="_blank">there will be several, in fact</a>. <a href="https://c4ss.org/market-anarchism-faq/but-what-about-the-roads" target="_blank">But what about the roads</a>? And so on. How are these questions answered? The same way any system answers questions - it makes certain base assumptions:<br /><ol><li>The initiation of physical force against persons or property, the threat of such, or fraud upon persons or property, <a href="http://wiki.mises.org/wiki/Principle_of_non-aggression" target="_blank">is evil</a>.</li><li>Since government requires physical force to enforce its edicts, it is therefore, by nature, <a href="http://c4ss.org/market-anarchism-faq/what-is-a-government-or-state" target="_blank">evil</a>.</li><li>Even if government didn't require physical force to enforce its edicts, it suffers from <a href="http://www.econlib.org/library/Essays/hykKnw1.html" target="_blank">the knowledge problem</a> - its information is incomplete - so it must, by its very nature, also be incompetent.&nbsp;</li><li>Therefore, all optimal solutions to all political problems must therefore be small, decentralized, self-governing voluntary organizations, i.e. <a href="http://c4ss.org/market-anarchism-faq/what-will-a-stateless-society-look-like" target="_blank">a stateless society</a>, with all <a href="http://c4ss.org/are-market-anarchists-for-or-against-capitalism" target="_blank">services provided via a free market of exchange</a>.</li></ol>Then, using these assumptions, it solves for X. Worried about militaries? If they exist, they should purely be defensive in nature (see point 1), they should be voluntarily staffed (1, 4), and they should be voluntarily paid for (1, 4). How will this pay for nuclear weapons? It won't - nuclear weapons are inherently immoral due to the collateral damage incurred by detonating one (1). Okay, what about a social safety net? Easy - use private charity (4). Anything else, such as income redistribution, would violate all four tenets above, and probably be more harmful to boot since it's impossible for the anyone implementing a forced income redistribution scheme to know how much income needs to be transferred to poor people to meet their particular needs. <br /><br />See? It's a system. It has rules. You can ask those rules questions and they'll answer them. It <i>ought</i> to work.<br /><br />And that's my problem.<br /><br />Simply put, I don't believe in systems, even ones based on ideological assumptions I happen to share. Even a system like Anarcho-Capitalism, one that is ostensibly decentralized, still requires everyone to play by the rules. Everyone has to believe that, even if 99 out of 100 people in a neighborhood think it's a <i>really</i> good idea to put up sandbags next to their river right before it floods, they are not allowed to use physical force to secure "consent" from the lone straggler. Those 99 people further must believe that "trespassing" under those circumstances is "physical force". Philosophically, if it's really a problem, they can just install sandbags around the property line of the lone straggler and let what may come - it may not be quite as expedient, but it's morally <i>right</i>, and that's what matters, isn't it?<br /><br />Perhaps, but good luck convincing enough people for the system to work.<br /><br />Don't get me wrong, I think it's a wonderful idea. I'm sure there are plenty of arguments<i> </i>about why <i>this</i> system will work, why <i>this</i> system is morally right and good, why <i>this</i> system will lead to more happiness, health, and so forth. I'm sure they're all <a href="http://en.memory-alpha.org/wiki/Futurama" target="_blank">fascinating, and logical, too</a>. None of that matters. There will be failures - perhaps warlords, perhaps <a href="http://www.amazon.com/gp/product/1400030927/" target="_blank">violent feuds between competing companies</a>, perhaps something totally unanticipated. Either way, it won't matter - eventually, people will tire of the problems of <i>this</i> system and replace it with something else, one that fixes these problems (and inevitably introduces new ones). This is, in my opinion, the lifecycle of all systems.<br /><br />So what's the alternative?<br /><br /><i>There isn't one</i>. Well, more accurately, there are several of them - you could probably paint me comfortably in a corner somewhere between political existentialism and nihilism and probably get "close enough for government work". My personal belief is that the philosophies behind Anarcho-Capitalism are arguably the most morally sound, that they make an excellent framework to consider differing political choices against, but that, as the old saw goes, "no plan survives contact with the enemy". When in doubt, we should try policies and prescriptions that move us in a Libertarian, potentially Anarcho-Capitalist direction, but we should also be willing to <i>stop</i> if we're not getting the desired results and try policies and prescriptions from other frameworks if they get us closer to the desired results than we were getting using the Libertarian framework.<br /><br />Take defense, for example.<br /><br />Any defense plan that calls on me to accept that, while defending my apartment, I may lose the lives of at least one member of my family is not what I would call an <i>ideal defense plan</i>. Similarly, any defense plan that requires me and my neighbors to suffer through about a decade or so of brutal occupation before we finally wear down our oppressors is also not what I, or any of my fellow voting neighbors, would call an ideal defense plan. Instead, we're probably going to collectively decide, with near total unanimity, that we should do everything possible to ensure that <i>no</i> fighting happens in our backyards, even if that potentially means periodically invading or destroying the backyards of those sketchy people across the street. Because of this, neither I nor my neighbors will ever voluntarily choose a strictly Non-Aggression Principle compliant defense structure if an alternative is available - we're not going to wait for others to invade our neighborhoods, in other words, before defending them. Not if we have the option to make those others defend <i>their</i> neighborhoods first.<br /><br />Perhaps if we're feeling <i>really</i> principled, we might justify this on the grounds that, well, the Non-Aggression Principle also prohibits <i>threats</i> of violence, and, well, those people over there look awfully threatening...<br /><br />Ah, but wait! - you're thinking to yourself - what if the other neighborhood makes the same decision? Well, congratulations - you just demonstrated that, even in a presumably stateless society, war will still happen. In fact, since individual neighborhoods will have far less effective methods of deterrence than your average nuclear arsenal or aggressively funded military-industrial complex, there's a pretty good chance that wars will be <i>more</i> common in a stateless society than they are now, even if they might in aggregate be considerably less destructive and shorter than the "total wars" of the 20th century - what's stopping either neighborhood from misjudging their opposing neighborhood's strengths or intentions? Consequently, if we really want a more peaceful, liberty-friendly environment, one in which people are free to do what they will without worrying incessantly about whether their paranoid neighbors from across the street might feel threatened and react accordingly, we shouldn't necessarily rule out a society in which one particular organization has a monopoly on violence - preferably an organization that all of us, including the paranoid neighbors, have some limited control individually but near-total control in the aggregate. Granted, history has shown issues with this approach as well, but it still seems to beat seasonal raids whenever someone's low on salt or bacon. Besides, whenever there are organizations competing for the right to commit violence for citizens in an area, the <i>first</i>&nbsp;thing <i>everyone</i>&nbsp;in the area wants is for the competition to <i>stop, </i>preferably before the competing organizations kill and maim everyone. Then again, small, local civil wars usually don't last for long periods of time or involve genocide like larger state-run conflicts, <a href="http://en.wikipedia.org/wiki/Somali_Civil_War" target="_blank">except</a> <a href="http://en.wikipedia.org/wiki/First_Congo_War" target="_blank">when</a> <a href="http://en.wikipedia.org/wiki/Second_Congo_War" target="_blank">they</a> <a href="http://en.wikipedia.org/wiki/Kivu_conflict" target="_blank">do</a>, so there's that.<br /><br />Perhaps I'm wrong about defense, though. Maybe <a href="http://raikoth.net/libertarian.html#coordination_problems" target="_blank">Scott's wrong about fish</a>, despite <a href="http://www.news.com.au/travel/world-travel/africas-biggest-lake-is-on-the-verge-of-dying/story-e6frfqai-1227288467660" target="_blank">further evidence to the contrary</a>. Maybe the 19th century was <a href="http://www.pbs.org/wgbh/amex/carnegie/sfeature/mh_blue.html" target="_blank">wrong about private police forces</a>&nbsp;and <a href="http://en.wikipedia.org/wiki/Company_scrip" target="_blank">private scrip</a>. Maybe if we re-privatize everything and get government out of the way once more this time will be different. It's possible - it's not the 19th century anymore, after all, and a lot of our beliefs, customs and technology have evolved dramatically since then. That counts for quite a bit, actually - it's a little harder to keep a "company store" going when Amazon's always around the corner, and it's a little harder to try to drum up business for your private security agency when everyone can record everybody. Maybe this time will be different. But, if it's not, if our attempts at increasing liberty result in, paradoxically enough, less liberty for most people, we need to retain the philosophical flexibility required to change tack and not confuse the path with the destination.<br /><br />That's why I'm a small-l libertarian. Maybe you are too?David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-74763383654765533172015-04-03T17:44:00.000-07:002015-04-03T17:44:15.395-07:0010 Best Places in Reno to Play PAC-MAN in Google MapsThis year's April Fool's Day "prank" from Google - a <a href="http://en.wikipedia.org/wiki/List_of_Google_hoaxes_and_easter_eggs#April_Fools.27_hoaxes" target="_blank">long and storied tradition</a> - was <a href="https://support.google.com/maps/answer/6178227?hl=en" target="_blank">adding <i>PAC-MAN</i> to Google Maps</a>, which, of course, inevitably led to several articles like <i>Wired'</i>s <a href="http://www.wired.com/2015/04/google-pac-man/" target="_blank">The Top 15 Spots To Play <i>PAC-MAN</i> In Google Maps</a>. Of course, all of these lists focus on trendy, hip locations, like New York, San Francisco, Boston, or other trendy, hip locations that house online journalists or that online journalists aspire to live in, which is a shame - there are plenty of great places to play <i>PAC-MAN</i> that don't involve places with $40 parking.<br /><br />With that in mind, here are the ten best places I could find in Reno (okay, "Reno/Sparks and other nearby areas"), in alphabetical order:<br /><div style="text-align: center;"><br /></div><div style="text-align: center;"><span style="font-size: large;"><b>Arrowcreek</b></span></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-1FKQSXsyag4/VR8uQWVZmAI/AAAAAAAACvQ/NblzUS484EY/s1600/Arrowcreek.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-1FKQSXsyag4/VR8uQWVZmAI/AAAAAAAACvQ/NblzUS484EY/s1600/Arrowcreek.png" height="242" width="400" /></a></div><br />I honestly expected more from Arrowcreek, along with other developments of its type. I figured the winding paths would make for some interesting <i>PAC-MAN</i> mazes; however, it turns out that Google's implementation of the game strongly prefers dense, packed neighborhoods compared to sprawling, spread out ones. Even so, Arrowcreek made for a few fun rounds - East Desert Canyon Drive makes for an excellent escape from the ghosts based on High Vista and Indian Ridge.<br /><br />It gets better from here, though.<br /><br /><div style="text-align: center;"><b><span style="font-size: large;">California Ave.</span></b> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-4ufA_qGZhHI/VR8uQTAFGFI/AAAAAAAACvU/D7L3Y0FZ5m4/s1600/CaliforniaAve.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-4ufA_qGZhHI/VR8uQTAFGFI/AAAAAAAACvU/D7L3Y0FZ5m4/s1600/CaliforniaAve.png" height="242" width="400" /></a></div><br />Now we're talking. The triangle where Liberty, Arlington and California meet was an absolute hellscape of frantic maneuvering and button mashing. Meanwhile, the old Southwest streets led to some rather interesting escapes.<br /><br /><div style="text-align: center;"><span style="font-size: large;"><b>Caughlin Parkway</b></span> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Mm-CmVJahxM/VR8uQdLMwUI/AAAAAAAACvY/FGvf8Jg0kSU/s1600/CaughlinPkwy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Mm-CmVJahxM/VR8uQdLMwUI/AAAAAAAACvY/FGvf8Jg0kSU/s1600/CaughlinPkwy.png" height="242" width="400" /></a></div><br />Though most of the newer subdivisions didn't lend themselves to effective <i>PAC-MAN</i>ing due to their relative lack of density, the shopping area around Caughlin Parkway lent itself nicely, especially when McCarran Boulevard was included. Thankfully, ghosts can't change lanes - less thankfully, neither can you if you have ghosts coming at you from both sides of McCarran.<br /><br /><div style="text-align: center;"><span style="font-size: large;"><b>The Legends at Sparks</b></span> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-2-jWXKbD90c/VR8uRNpt2cI/AAAAAAAACvc/vplpb7e3LSE/s1600/LegendsMarina.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-2-jWXKbD90c/VR8uRNpt2cI/AAAAAAAACvc/vplpb7e3LSE/s1600/LegendsMarina.png" height="242" width="400" /></a></div><br />This was actually the first place I played <i>PAC-MAN </i>on, in no small part because of the roundabouts and because I drive by the place every time I go to work. Between Sparks Boulevard's three lanes on the right, the various roundabouts and exits, and the random little blind corners by the big box retail stores (good luck cleanly navigating near Target), you're in for quite the ride.<br /><br /><div style="text-align: center;"><span style="font-size: large;"><b>Mountain View Cemetery</b></span> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Dd-uIRYwmLw/VR8uRfkSq-I/AAAAAAAACvg/Pp3j7EA7tuI/s1600/MountainViewCemetery.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Dd-uIRYwmLw/VR8uRfkSq-I/AAAAAAAACvg/Pp3j7EA7tuI/s1600/MountainViewCemetery.png" height="242" width="400" /></a></div><br />The fact that Google made it possible for me to run away from ghosts as Pac-Man in a cemetery tickled me to no end. That Mountain View Cemetery actually makes a surprisingly decent <i>PAC-MAN</i> maze was icing on the cake. Be careful, though - all northbound lanes lead to the entrance to the cemetery on the right.<br /><br /><div style="text-align: center;"><b><span style="font-size: large;">Pyramid &amp; Victorian, Sparks</span></b> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-rS_ZfJDTwrw/VR8uRkvdnyI/AAAAAAAACvk/8j86HOi5h7s/s1600/PyramidandVictorian.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-rS_ZfJDTwrw/VR8uRkvdnyI/AAAAAAAACvk/8j86HOi5h7s/s1600/PyramidandVictorian.png" height="242" width="400" /></a></div><br /><i>PAC-MAN</i> really prefers older, denser neighborhoods, so I thought to myself, why not try a game on the oldest, densest neighborhood in Sparks? The results, like Sparks itself, were quite straightforward.<br /><br /><div style="text-align: center;"><span style="font-size: large;"><b>Stead &amp; Silver Lake</b></span> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-HHfZKgK9YE8/VR8uSPrIEII/AAAAAAAACvo/mvx6T9Jnl2k/s1600/Stead-SierraShadows.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-HHfZKgK9YE8/VR8uSPrIEII/AAAAAAAACvo/mvx6T9Jnl2k/s1600/Stead-SierraShadows.png" height="242" width="400" /></a></div><br />The Sierra Shadows Mobile Home Park - the squarish area that the ghosts spawn in on the left - drew my eye, and I'm glad it did. It serves as a nice and dangerous counterpoint to the otherwise sprawling, meandering streets of the newer housing developments in Stead on the right.<br /><br /><div style="text-align: center;"><span style="font-size: large;"><b>University of Nevada, Reno</b></span> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-hjQNYgLsmss/VR8uSah_g6I/AAAAAAAACvs/uvurLafJdl0/s1600/UNR.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-hjQNYgLsmss/VR8uSah_g6I/AAAAAAAACvs/uvurLafJdl0/s1600/UNR.png" height="242" width="400" /></a></div><br />I don't think it would be an exaggeration to declare it a criminal offense to do something like this without including UNR somehow. I was rather surprised with how detailed Google Maps decided to make the maze out of UNR's footpaths - you can not only clearly see Lawlor (the round circle at the top), but you can also see the better part of UNR's parking and street system.<br /><br /><div style="text-align: center;"><span style="font-size: large;"><b>Verdi</b></span> </div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-bxH2GQ2R1Dw/VR8uSgPxMlI/AAAAAAAACv8/aO087-VOqhI/s1600/Verdi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-bxH2GQ2R1Dw/VR8uSgPxMlI/AAAAAAAACv8/aO087-VOqhI/s1600/Verdi.png" height="242" width="400" /></a></div><br />Ah, Verdi... small, simple, straightforward, green. Much like the actual town itself, come to think of it.<br /><br /><div style="text-align: center;"><span style="font-size: large;"><b>Wingfield Park</b></span></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-n4JAyz1Hdo4/VR8uSxnvQBI/AAAAAAAACvw/TkzkUZfAU3c/s1600/WingfieldPark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-n4JAyz1Hdo4/VR8uSxnvQBI/AAAAAAAACvw/TkzkUZfAU3c/s1600/WingfieldPark.png" height="242" width="400" /></a></div><br />Most of downtown Reno honestly doesn't map up very well due to the larger casinos, but, the older, tighter area by the river turned out nicely. Have fun navigating around the Truckee.<br /><br />So, there you have it - the ten best places I could find to play <i>PAC-MAN </i>in or near Reno. If you, like me, are watching the progress bar move listlessly and need to kill some time, you could certainly do worse things than trying to find ten better ones.David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-26185425535052941532015-03-25T22:29:00.003-07:002015-03-25T22:29:49.935-07:00Government in action - a parable<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-i16wAOHSw-A/VROEDCyz2sI/AAAAAAAACtU/dUqj4C_5hhQ/s1600/5173034755_2ff827da1d_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-i16wAOHSw-A/VROEDCyz2sI/AAAAAAAACtU/dUqj4C_5hhQ/s1600/5173034755_2ff827da1d_o.jpg" height="300" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/peretzpup/5173034755/in/photolist-8T8a1p-7P1EAR-azNhQm-99BLzG-azKC6r-azKByK-b9JPVx-9XFX2r-ioatvP-4kWrkh-8F7wBc-io9LJm-8FctpL-3n2jXR-9Z9VVm-9Z724P-8Kp5Fu-3n6KnS-rmfs8S-eQz5ES-csikT-8S4tuE-4j3STA-ncmesh-yigie-oNSSgB-oNFHDa-cHhe8E-fT8hj-qnEFGX-8eG5uT-p48d9U-a7pP4G-pBwmbr-oNSkAb-im2m3k-9qaQWu-7xv79w-im2m5K-dmtyCY-im2mae-im1Rbo-im1F1W-84v8Yp-4nzZxV-im1EZ3-RQxy-978C3-hJwKeR-jKdzwr" target="_blank">red tape</a> by <a href="https://www.flickr.com/photos/peretzpup/" target="_blank">Eugene Peretz</a> is licensed under <a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA 2.0</a>.</td></tr></tbody></table><i>All characters appearing in this work are fiction. Any resemblance to real persons, living or dead, is purely farcical.</i><br /><i><br /></i>Once upon a time, there was a government worker. She was a good, conscientious, publicly minded individual of high morals, higher standards, and impeccably professional decorum and bearing. Her job was to prepare a report for the State, a job which she had performed without complaint for over two decades, which, according to a state law that was drafted in the 19th century, was to be mailed to the State Capitol about a half hour away every quarter for review and submission. This report was a fairly large, heavy document, totaling at least a hundred pages, and was consequently not particularly cheap to send via post.<br /><br />One day, a politician was searching around for examples of <i>waste</i>&nbsp;and <i>fraud</i>. He noticed that this report had ostensibly been generated by the same person for over two decades, but he didn't believe it. Surely, he thought to himself, this lazy public servant had found a way to delegate it to one of her coworkers while she sipped some tea and added public funds to her overly fat pension plan! Clearly, he thought to himself, what this public servant needed was <i>greater transparency</i>. So, he drafted a piece of legislation, which was approved by like-minded politicians, that required our government worker to drive the report to the State Capitol herself so that the politicians in the Capitol could ask the government worker questions and confirm that she did, indeed, write the report in question.<br /><br />The government worker was annoyed, but she had served in public service long enough to know not to take the whims of politicians seriously. She performed her duty faithfully - every quarter, she drafted the report, got into her car, drove to the State Capitol, handed it to an administrator that would politely nod and ask a few perfunctory questions about its contents, then she would drive back to the office. Being a good, conscientious, publicly minded individual of high morals and higher standards, she faithfully recorded her mileage and her time, all of which were spent performing State business, and submitted them for reimbursement every quarter, just like she was supposed to.<br /><br />One day, another politician was searching around for examples of <i>waste</i>&nbsp;and <i>fraud</i>. He noticed that the cost of submitting this particular report had increased dramatically - what used to cost only $5 in postage every quarter suddenly jumped to $30 in mileage reimbursements and an hour and a half of experienced public servant labor! This politician was no fool - there was no way this government worker was consuming $30 in gas driving to the State Capitol, which was about a half hour away, and back. Furthermore, why was it taking this worker an hour and a half to drive to the Capitol, drop off the report, and then return? He knew from experience it only took a half hour to get to the state worker's office from the Capitol - multiply that time by two to cover both legs of the trip and it should only take an hour. So, he drafted a piece of legislation, which was approved by like-minded politicians, that required our government worker to use a state-owned car - this would save money since state mileage would be reimbursed at cost, not IRS reimbursement rates - and required the government worker to submit the report and return back to her office in an hour or less.<br /><br />The government worker was annoyed, but she had served in public service long enough to know not to take the whims of politicians seriously. She did, however, have a problem - her office did not have a state-owned car issued to it. So, she submitted a requisition for a new car, using the newly-passed piece of legislation as justification, which was summarily approved. In order to meet her hour-long window, she also started to take some liberties with the speed limit when driving to the Capitol to submit her report - this didn't sit well with her high morals, higher standards, and impeccably professional decorum and bearing, but, if pressed, she felt she could explain to her fellow state employees that, since the law demanded she drive fast enough to submit the report, answer any questions asked, and return in an hour or less, she must therefore drive fast enough to accommodate that legislative requirement.<br /><br />One day, yet another politician was searching around for examples of <i>waste </i>and <i>fraud</i>. He noticed that the cost of submitting this particular report had increased dramatically - what used to only cost $30 in mileage reimbursements and an hour and a half of experienced public servant labor every quarter suddenly cost over $20,000 thanks to a recently requisitioned new car and sundry maintenance expenses! Furthermore, he recently received complaints from his constituents about how state employees in state-owned cars weren't respecting the rules of the road and were passing them like they were standing still. This, the politician decided, simply could not stand. So, he drafted a piece of legislation, which was approved by like-minded politicians, that required government workers to adhere to the speed limit when driving state-owned cars and required state workers to drive the same state car for longer periods of time so the state would buy fewer new cars.<br /><br />The government worker was annoyed, but she had served in public service long enough to know not to take the whims of politicians seriously. She did, however, have a problem - it was physically impossible for her to drive to the Capitol, submit the report, field any questions asked, and drive back in an hour or less while adhering to the speed limit. She thought about the problem for a bit, rereading the offending piles of legislation that circumscribed how she must discharge her duties, and then made some phone calls. The law required three things - for her to use a state-owned car, to submit the report and return to her office in an hour or less, and to adhere to the speed limit - but at no point did it say where she was to drive <i>to</i>. So, she drove to a nearby helicopter pad, chartered a flight to the pad next to the Capitol, and made it with time to spare. She couldn't think of very many public servants with enough creativity, drive, and willingness to embrace this sort of out-of-the-box thinking to serve the demands of the public.<br /><br />One day, yet another politician was searching around for examples of <i>waste</i>&nbsp;and <i>fraud</i>. He noticed that the cost of submitting this particular report had increased dramatically - what used to only cost $20,000 in car purchasing and maintenance suddenly cost tens of thousands of dollars each quarter for <i>private helicopter rides</i>&nbsp;of all things! He simply couldn't believe it. Clearly these public servants were not getting the message - belts needed to be tightened and this sort of wanton extravagance had to be nipped in the bud. So, he drafted a piece of legislation, which was approved by like-minded politicians, that forbade government workers from chartering personal helicopter flights for official business.<br /><br />The government worker was annoyed, but she had served in public service long enough to know not to take the whims of politicians seriously. She did, however, have a problem - it was still physically impossible for her to submit this report by car, the airport took too long, and the helicopter was the only thing close enough and fast enough to get her to the Capitol within her legislatively mandated hour long window. Very well, she thought to herself - she knew what she needed to do. Within a quarter, she secured a helicopter pilot's license - the costs of which she billed to the State - requisitioned a helicopter, and even requisitioned a helicopter pad for her office, which she justified via her new legislatively mandated requirements. To her mild amazement, her requisitions were approved; the measures she was taking were, after all, the only way she could possibly perform her job according to the requirements set forth by statute. Thus, she proceeded to fly a brand new, state owned helicopter from her office to the Capitol, report in hand, each and every quarter.<br /><br />One day, yet another politician was searching around for examples of <i>waste</i>&nbsp;and <i>fraud</i>. He noticed that the cost of submitting this particular report had increased dramatically - what used to only cost tens of thousands of dollars each quarter for a chartered helicopter suddenly cost tens of <i>millions</i>&nbsp;of dollars for helicopter flying lessons, a brand new helicopter, and associated maintenance personnel and parts! This wasn't just out of hand, it must have been downright criminal! - and all of this just to submit some stupid report every quarter. So, he drafted a piece of legislation, which was approved by like-minded politicians, that eliminated the report and those responsible for generating it from the books.<br /><br />The government worker was no longer annoyed - she was unemployed - but not for long. Thanks to her new helicopter license and flying experience, she found work flying chartered helicopters for well-heeled clients. The politicians that put her out of a job were all reelected owing to their ability to slash <i>waste</i>&nbsp;and <i>fraud - </i>especially the last one, which save taxpayers tens of millions of dollars!<br /><br />And that's the story of how the government saved itself $5 in postage each quarter.David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-78412056992581896722015-03-23T22:12:00.001-07:002015-03-23T22:12:52.799-07:00Libertarians don't hate government workers - but conservatives do<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container tr_bq" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-3YfyyxtUMQI/VQ-M-K-aa1I/AAAAAAAACtA/nPWxGaNtusY/s1600/2629090174_b4686cb16e_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-3YfyyxtUMQI/VQ-M-K-aa1I/AAAAAAAACtA/nPWxGaNtusY/s1600/2629090174_b4686cb16e_o.jpg" height="266" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="http://www.flickr.com/photos/allaboutgeorge/2629090174/in/photolist-9DZXw7-9tSQau-9tPToa-51fyM8-9DX5xe-9DX5tV-9DZXdu-9DZXfE-9DX5pc-9DX5rt-9DX5mP-9DZXbd-51jLUW-51fyUg-9tPMxg-9tSYeC-9tPUKr-9tQ1v2-9jFDFh-3Dc71-51jMZY-rojE1x-51fzme-9tSPjb-3Dc73-aDxDTb-8eX4Q4-51fA5t-51jKiy-51jLy1-51jN7q-51fzVV-51fw38-9tSEY9-9tSM7s-9tSH7C-9tSR9y-9tSy9j-9tPygT-9tPZDz-9tSCiN-9tPVoe-9tSL3y-9tSUCw-9tPFED-9tPDzc-9tPMak-9tPxWv-9tPYMK-9tSZwo" target="_blank">This is what a union looks like (iii)</a> by <a href="https://www.flickr.com/photos/allaboutgeorge/" target="_blank">George Kelly</a> is licensed under <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table><a href="http://www.rgj.com/story/news/2015/03/22/collective-bargaining-reform-union-nevada-legislature/25108709/" target="_blank">An article in the Reno Gazette-Journal</a> covered how the Reno City Council has decided to "take a position of active neutrality" on collective bargaining changes being proposed during this year's legislative session:<br /><blockquote>Republican lawmakers, fresh off taking the majority in the Nevada Legislature for the first time in decades, are pursuing sweeping changes to the state's collective bargaining law, which sets the ground rules for how local governments wrangle with their public employee unions over salaries and benefits.&nbsp;</blockquote><blockquote>If successful, the changes would shift power to local government managers. They also could take public employee unions out at their financial knees.&nbsp;</blockquote><blockquote>[...]&nbsp;</blockquote><blockquote>The old council also had an aggressive legislative agenda geared toward convincing state lawmakers to give city management "greater authority" in labor negotiations and more control over the city's pocketbook.&nbsp;</blockquote><blockquote>But in one of its first political moves this year, the new council gutted the collective bargaining agenda that city lobbyists had planned to take to Carson City this year, replacing it with a deceivingly simple one-line position statement:&nbsp;</blockquote><blockquote>"The City of Reno will take a position of active neutrality" on collective bargaining changes to "maintain and place value on the relations the city has with its employees."</blockquote>Most of the proposals <a href="https://www.leg.state.nv.us/App/NELIS/REL/78th2015/Bill/1559/Overview" target="_blank">floating in the Legislature</a> are ones that I can happily get behind - getting rid of seniority-based promotions and personnel retention, expand options for laying off public employees (Nevada law currently only allows local governments to lay off public employees&nbsp;<a href="https://www.leg.state.nv.us/NRS/NRS-288.html#NRS288Sec150" target="_blank">due to lack of work or lack of money</a>&nbsp;- anything else immediately triggers mandatory bargaining with the representing public sector union), eliminating mandatory raises, increasing transparency during contract negotiations (though I think this idea might backfire - more on that in a bit), letting cities pocket a larger cushion when negotiating (though I think this idea might also backfire), and prohibiting local governments from collecting union dues are all measures that bring public sector employment in line with their private counterparts. Then, in the <a href="https://www.leg.state.nv.us/App/NELIS/REL/78th2015/Bill/1559/Text" target="_blank">Legislative Council's Digest of AB182</a>, I read this:<br /><blockquote class="tr_bq">Section 1 of this bill also bars a local government employer from providing paid leave or paying any compensation or monetary benefits to an employee for time spent by the employee in performing duties or providing services to an employee organization.&nbsp;</blockquote>***<br /><br />Several years back, I worked for what was, more or less, a family-run company in a small town. Most of my coworkers were from this town - they lived close to each other, their children went to the same schools, they socialized together after work, and so on. I, however, commuted in from out of town - it was about an hour drive each way, give or take, depending on weather and traffic. This wasn't a huge deal for me - I grew up in suburban Los Angeles, so I was pretty much raised on the idea that driving long distances to get to work wasn't beyond the pale, and the job paid considerably more than the job that preceded it and had better benefits to boot.<br /><br />One night, at the tail end of my work day, I overheard my boss complaining about how she found out from a friend that one of my coworkers had used her vacation time to go to a Mary Kay conference so she could start making a little extra money on the side. This upset my boss greatly - how <i>dare</i>&nbsp;this employee betray&nbsp;the company this way? I was confused by this reaction, so I confronted my boss about it - why was it my boss' business what my coworker did on her own time, as long as she wasn't directly competing against my boss? My boss replied that it showed disloyalty - if my coworker still had profitable labor to provide after her shift was complete, she should have approached my boss about performing additional work that could have further profited the company. After a bit more back and forth, this led me to say something that, in retrospect, was weapons-grade immature and pathologically stupid, especially in early 2009:<br /><blockquote class="tr_bq">"I am so glad I don't live in this town. As far as you know, I could be going home every night, moonlighting on the side, banging prostitutes, and snorting lines of blow, and <i>you would never find out about it.</i>"</blockquote>That I wasn't immediately fired after that outburst can be safely attributed to the following:<br /><ol><li>My boss and I had worked together long enough at that point where she knew I was <i>mostly</i>&nbsp;joking to make a point.</li><li>My job is the sort of job that's somewhat challenging to hire for in a hurry. Not impossible, mind you, but challenging enough where it's usually not worth the effort.</li><li>I'm <i>really</i> good at my job.</li></ol><div>Though it was, beyond any reasonable shadow of doubt, the most blindingly&nbsp;stupid tone available to communicate the simple message that I value my privacy and the privacy of those around me and require those around me to do the same, I still stand by the point I made that night - I am not owned by my employer and do not respond well to employers that think that, just because they cut me a check every two weeks or so, that gives them the right to dictate what I do on my own time. In return for this consideration, I generally make it a point to avoid doing things on my own time that would raise any employer's ire - for example, I have work tomorrow, so I'm sober and will be going to bed soon so that I get enough sleep to be productive at work in the morning. I also don't talk ill about my employer, especially in public - if I have a problem with my employer, I'm going to bring it up with them, not with someone who has no control over the situation; plus, it's rude to talk ill about your customers, which, in effect, is what my employer is to my labor. I also don't compete against my employer, though I'll note that I spent quite a few years as an IT consultant providing services for companies that actively competed against each other without any issue whatsoever; in fact, I'd argue that I was able to provide for these competing companies better by working for all of them and thus achieving a better understanding of their industry as a whole than I would have if I was "faithful" to any particular one of them. They generally must have agreed since the consulting company I worked for was known as an "expert" in IT services in our area for legal and dental businesses, which is what drew competing legal and dental firms to do business with us. However, irrational as I personally think it might be, I do understand that more than a few employers are <i>particular</i>, to put it mildly, about employees moonlighting for competitors on the side, so I concede to today's social and employment norms and let that particular issue go.</div><div><br /></div><div>In short, I won't make it your business to know my business, so <i>stay out of my business</i>, please and thank you. What I do with the compensation I receive in return for my labor is my business and nobody else's.</div><div><br /></div><div>***</div><div><br /></div><div>Libertarians are absolutely fanatical against collectivism. As Ayn Rand (yes, yes, <a href="http://aynrandlexicon.com/lexicon/libertarians.html" target="_blank">not really a Libertarian per her own self-categorization</a>, but if someone out there finds me a libertarian that disagrees with her on this, let me know and I'll pick someone else) <a href="http://aynrandlexicon.com/lexicon/racism.html" target="_blank">put it</a>:</div><blockquote class="tr_bq">"Racism is the lowest, most crudely primitive form of collectivism. It is the notion of ascribing moral, social or political significance to a man’s genetic lineage—the notion that a man’s intellectual and characterological traits are produced and transmitted by his internal body chemistry. Which means, in practice, that a man is to be judged, not by his own character and actions, but by the characters and actions of a collective of ancestors.&nbsp;</blockquote><blockquote class="tr_bq">Racism claims that the content of a man’s mind (not his cognitive apparatus, but its content) is inherited; that a man’s convictions, values and character are determined before he is born, by physical factors beyond his control. This is the caveman’s version of the doctrine of innate ideas—or of inherited knowledge—which has been thoroughly refuted by philosophy and science. Racism is a doctrine of, by and for brutes. It is a barnyard or stock-farm version of collectivism, appropriate to a mentality that differentiates between various breeds of animals, but not between animals and men.&nbsp;</blockquote><blockquote class="tr_bq">Like every form of determinism, racism invalidates the specific attribute which distinguishes man from all other living species: his rational faculty. Racism negates two aspects of man’s life: reason and choice, or mind and morality, replacing them with chemical predestination."</blockquote><div>This fanaticism against collective identity, in fact, even extends to government workers. Don't believe me? Try the following searches - I just did expecting to find a plethora of "all government workers are parasites of the people" posts:<br /><br /><a href="https://www.google.com/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=lewrockwell.com%3Agovernment%20worker" target="_blank">lewrockwell.com:government worker</a><br /><a href="https://www.google.com/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=c4ss:government+worker" target="_blank">c4ss:government worker</a><br />- As an aside, the closest C4SS gets to painting government workers as evil collaborators is <a href="http://c4ss.org/content/21813" target="_blank">this article</a>, which says the following:<br /><blockquote class="tr_bq">Now, some will argue that public workers are not part of the productive class, and are parasites just like congress. But is that really fair? Sure, some or all of them may be foolish for believing that their job is funded through anything but theft. Some may also know that they are parasites, and don’t care. <b>At the same time, we anarchists should be careful about judging other people from our lofty position as non-public workers and realize that for many people, no matter how duped they have been, regard their job at a public museum or a park as just that – their job.</b> For them this “shutdown” is an example of how much the State does not care about them, and here lies our opportunity for discourse on the political class’s war on the productive class.</blockquote><a href="https://www.google.com/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=reason.com:government+worker" target="_blank">reason.com:government worker</a><br /><a href="https://www.google.com/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=thelibertarianrepublic.com:government+worker" target="_blank">thelibertarianrepublic.com:government worker</a><br />- This TNR article, which suggests shutting down most of the federal government forever, looks <a href="http://thelibertarianrepublic.com/lets-shut-federal-government-forever/" target="_blank">mildly threatening</a>:<br /><blockquote class="tr_bq">Undoubtedly many of the government employees who would be impacted are good people and the human factor can’t be overlooked in all this.</blockquote>Oh. Well, never mind. Want to know <a href="https://www.google.com/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=government+workers+are+evil" target="_blank">who <i>really</i>&nbsp;thinks government workers are evil</a>?<br /><br /><ul><li><a href="http://everything2.com/title/Life+of+a+government+employee" target="_blank">Government workers</a></li><li><a href="http://colorlines.com/archives/2011/02/who_are_all_these_evil_public_workers_black_people.html" target="_blank">Enemies of black people</a>?</li><li><a href="http://www.city-data.com/forum/politics-other-controversies/643039-why-do-most-government-workers-have-9.html" target="_blank">Former government workers</a></li><li>Definitely <a href="https://hbr.org/2014/11/why-government-workers-are-harder-to-motivate" target="_blank">not Harvard Business Review</a> - this is actually a good article that I can't recommend reading enough.</li><li><a href="http://www.governmentnews.com.au/2015/01/do-workers-have-the-right-to-bad-mouth-their-employers/" target="_blank">Government workers (again)</a></li><li>Conservatives, sort of - this particular one <a href="http://townhall.com/columnists/johnhawkins/2011/03/08/5_reasons_unions_are_bad_for_america/page/full" target="_blank">just hates government <i>unions</i></a></li><li><a href="http://www.progressillinois.com/posts/content/2014/09/22/worker-advocates-fearful-rauners-anti-labor-agenda" target="_blank">According to government union representatives</a>, conservatives again</li><li>Definitely <a href="http://transplantportation.com/2011/03/30/evil-government-workers-or-the-politics-of-jealousy/" target="_blank">not this former government worker</a></li><li><a href="http://www.vice.com/read/government-employees-are-evil-trolls-v14n10" target="_blank">Patton Oswalt</a></li></ul><div>I'm not going to lie, I was more than a little surprised. At this point of this post, I was expecting to rant about how libertarians need to do a better job thinking of government workers as people, how we paint with such a broad brush, how we resort to extremist rhetoric that government workers are <a href="http://en.wikipedia.org/wiki/Kapo_%28concentration_camp%29" target="_blank">kapos</a>, collaborators of the men with guns that call themselves "the state", and... I couldn't find it. I couldn't find any of it. I tried. I really, <i>really</i>&nbsp;tried. Maybe I should try harder. But, at some point, when you're scouring the Internet, trying desperately to find a shred of evidence that proves you're right and you're not finding it, it's probably pretty safe to say that <i>it doesn't exist</i>.&nbsp;</div><div><br /></div><div>Are you surprised? I am - and I'm a libertarian. So, if libertarians - stalwart enemies of the state and all that - aren't, in fact, painting government workers as vicious parasites, <i><a href="https://www.google.com/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=government+workers+are+parasites" target="_blank">who is</a></i>?</div><div><ul><li><a href="http://theeconomiccollapseblog.com/archives/the-hard-working-american-vs-the-government-parasite" target="_blank">Millenialist preppers</a></li><li><a href="http://thebilzerianreport.com/federal-government-sucking-the-life-out-of-american-workers/farmtoon-1/" target="_blank">Conspiracy theorists</a> (see <a href="http://thebilzerianreport.com/new-school-shooting-used-to-destroy-the-second-amendment/" target="_blank">this</a>)</li><li><a href="http://www.sodahead.com/united-states/are-government-employees-overpaid-parasites/question-906743/" target="_blank">Whoever these people are</a> - the Flash ads killed my patience in short order</li><li><a href="http://politicaloutcast.com/2014/02/swelling-parasite-federal-government-rewards-recession/#" target="_blank">Another arch-conservative</a> in the Pat Buchanan mold (see <a href="http://politicaloutcast.com/2015/01/feeling-among-elites-christians-eradicated/" target="_blank">this</a>)</li><li><a href="http://www.washingtonpost.com/blogs/plum-line/post/mitt-romney-we-dont-need-more-cops-firefighters-or-teachers/2012/06/08/gJQAvOgDOV_blog.html" target="_blank">Mitt Romney</a>?</li><li><a href="http://www.quora.com/What-do-government-workers-really-contribute-to-society-Are-they-valuable-or-parasites" target="_blank">Not these people</a></li><li><a href="http://usatoday30.usatoday.com/money/economy/income/2010-08-10-1afedpay10_st_n.htm" target="_blank">USA Today</a>(!)</li><li><a href="http://fff.org/2013/09/26/permanently-lay-off-the-parasitic-sector/" target="_blank">The Future of Freedom Foundation</a>, sort of - they just don't like what government workers do is all</li><li>A rather <a href="http://investmentwatchblog.com/government-workers-make-double-over-private-sector-lew-rockwell-vs-government-parasite/" target="_blank">annoyed Lew Rockwell</a></li><li><a href="https://answers.yahoo.com/question/index?qid=20150107072842AA2hAN2" target="_blank">Yahoo! Answers</a> (also home of <a href="https://answers.yahoo.com/question/index?qid=20080820174408AAZkbcG" target="_blank">this intellectual gem</a>)</li></ul><div>So, if the top results are any indication, the people <i>really</i>&nbsp;treating government workers collectively and assuming that, merely by guilt of association, they're evil parasites that should be treated with utter disdain, are none other than arch-conservatives.</div></div><div><br /></div><div>I should have known.</div><div><br /></div><div>***</div><div><br /></div><div>Circling back around to AB182, I'm no longer surprised that it's being sponsored by the establishment conservative wing of the GOP instead of the group that John Ralston likes to derisively call "<a href="https://www.ralstonreports.com/blog/poll-hambrick-recall-has-little-chance-no-new-taxes-pledge-waste" target="_blank">the GOP Ass. Caucus/Citizen Outhouse wing of the Republican Party</a>" (e.g. <a href="https://www.ralstonreports.com/blog/bundyville-coming-carson-city" target="_blank">Michele Fiore and her allies in the Assembly</a>). Though Fiore and her friends certainly have their flaws (oh dear whatever deity I believe in right now, she <a href="http://talkingpointsmemo.com/livewire/michelle-fiore-guns-sexual-assault" target="_blank">most</a> <a href="https://www.ralstonreports.com/blog/fiore-has-had-seven-figures-liens-filed-against-her" target="_blank">certainly</a> does <a href="https://www.ralstonreports.com/blog/dr-fiore-cancer-fungus-can-be-flushed-out" target="_blank">have her flaws</a>), they do tend to lean libertarian-ish, and libertarians generally don't like telling people how to spend their time or their money. Sure, you're never going to hear a libertarian come out in favor of public sector unionization, but you're also never going to hear a libertarian claim that public sector employees should be legally forbidden from associating with unions - that would strike at the very core of freedom of association. Similarly, you're never going to hear a libertarian come out and say that public sector employees should be legally forbidden from spending their money on union dues if they wish - it's <i>their</i>&nbsp;money, after all, once we give it to them - and you're also not going to hear libertarians claim that public sector employees shouldn't be free to do what they wish with any other forms of compensation they receive, including paid time off. It's <i>their </i>vacation time, just as our paid time off is <i>ours </i>- libertarians don't believe in forcing others to do what we wouldn't be willing to voluntarily do ourselves.</div><div><br /></div><div>In fact, libertarians don't believe in forcing other people to do <i>anything at all</i>. Not even government workers.</div><div><br /></div><div>If we as a society could tell public sector employees how they're allowed to spend their paid time off - a key part of any hourly employee's compensation package - what would stop us from paying them exclusively in Buy Local certificates that are only good at local, tax paying businesses? What would stop us from demanding they only live in local houses or rent from local landlords? Once we decide that public sector employees are no longer people but are, in fact, <i>servants</i>, that we can dispense or dispose of as we wish, what stops us from subjecting them to any indignity we may wish to imagine? For libertarians, the answer is obvious - the fact that public sector employees are people, just as capable of free will and independent thought as the rest of us, is enough to make such ideas morally reprehensible to us. Conservatives, however, labor under no such moral compunction - and as long as that's true, and as long as conservatives keep getting elected, libertarians are going to have a tough time explaining to public sector employees why they shouldn't unionize.</div><div><br /></div><div>Perhaps - just perhaps - we libertarians should spend less time hanging out with conservatives and more time hanging out with public sector employees.&nbsp;</div></div>David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-91997124199695064442015-02-27T18:14:00.002-08:002015-02-27T18:14:33.604-08:00Running Dentrix without Local Admin or UAC Disabled<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-t52c-TwVbBk/VPEYa-reLPI/AAAAAAAACsY/zRXVedrU-AE/s1600/DentrixChartUAC.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-t52c-TwVbBk/VPEYa-reLPI/AAAAAAAACsY/zRXVedrU-AE/s1600/DentrixChartUAC.png" height="223" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Yep, this looks safe enough for me to put everyone's Social Security Number, medical history, and dental history into.</td></tr></tbody></table>I used to support more than a few <a href="http://dentrix.com/" target="_blank">Dentrix</a> installations back in the day. It was <i>not</i> fun - this particular Electronic Health Record (EHR) package, which is all the rage in dental practices across the US, <a href="http://elearning.dentrix.com/p7gc19zjyff/" target="_blank">requires local administrator access</a> (see page 8) for all users. It's also strongly encouraged to disable User Account Control so that users aren't constantly bombarded with UAC prompts whenever they try to use the software. Needless to say, this is a <i>highly</i> less-than-ideal way of running a piece of software that's ostensibly designed for HIPAA compliant medical practices, which is why I was thrilled to no end when I changed jobs and stopped supporting dental IT.<br /><br />Last Friday, I received an email. In it was a request that sent a chill down my spine:<br /><blockquote class="tr_bq"><i>We're teaching a class on Dentrix and need it installed in a computer lab.</i></blockquote>Images of fresh-faced students with local administrator access on computer lab PCs filled my mind. Now, this isn't the first time I've faced this - the usual solution is to set the PC to dual-boot, with the administrator image being off of the student lab domain. It's not a perfect solution, but it at least keeps the damage to a minimum and protects our student lab servers. However, this solution only works with technologically sophisticated instructors and users; the instructors that needed Dentrix are sophisticated <i>about Electronic Health Record systems</i>, but not so much about proper Windows booting protocol. <br /><br />I needed a better way. With some trial and error, I think I found one.<br /><br />The first reason Dentrix requires local administrator rights is because it places its data folders in its installation directory, which, by default, is <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">C:\Program Files (x86)\Dentrix</span> [<a href="https://www.blogger.com/blogger.g?blogID=612052649872821494#1">1</a>], and whatever user is running Dentrix must have sufficient access to write to these directories. So, the first step to the solution is to make it possible for standard users to write in the standard installation folder:<br /><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">cd %programfiles(x86)%<br />icacls Dentrix /grant "Users:(OI)(CI)(F)" /t</span></blockquote>I also, just on the safe side, granted write access to everything else installed with Dentrix:<br /><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">icacls "GURU LE" /grant "Users:(OI)(CI)(F)" /t<br />icacls "Guru Limited Edition Server" /grant "Users:(OI)(CI)(F)" /t<br />icacls "Business Objects" /grant "Users:(OI)(CI)(F)" /t</span></blockquote>Next, we need to move the installed desktop shortcuts to places accessible by everyone instead of just the profile that Dentrix was installed under:<br /><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">move %userprofile%\Desktop\*.lnk C:\Users\Public\Desktop</span> </blockquote><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">move "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Dentrix Learning Edition" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\"</span> </blockquote><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">move "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\GURU Limited Edition" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Guru Limited Edition"</span></blockquote>Oh, and fix the permissions on them, too:<br /><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">cd "C:\Users\Public\Desktop\"<br />icacls *.lnk /reset<br />cd "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\"<br />icacls * /reset</span></blockquote>That made it possible to run Dentrix as a standard user with UAC disabled. Now it was time to get around UAC. To do that, I followed the spirit of <a href="http://www.ghacks.net/2010/07/08/get-rid-of-uac-prompts-with-microsofts-application-compatibility-toolkit/" target="_blank">Ghack's guide on doing just that</a> - I installed the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=7352" target="_blank">Microsoft Application Compatibility Toolkit</a>, then created Application Fixes enabled RunAsInvoker for each of Dentrix's client-centered applications, while explicitly avoiding the database rebuild utilities like <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">_Rebuild</span> or <span style="font-family: &quot;Courier New&quot;,Courier,monospace;">_Rebuild2</span>. Namely:<br /><ul><li><b>Appt.exe</b> - Appointment List</li><li><b>Apptbook.exe </b>- Appointment Book</li><li><b>Chart.exe</b> - Patient Chart</li><li><b>Document.Center.exe - </b>Document Center</li><li><b>Document.Convert.Daemon.exe</b> - Document Convert Daemon</li><li><b>Document.UnfiledUtility.exe</b></li><li><b>Dtx.ThreeDDataLoader.exe</b></li><li><b>DtxLink.exe</b></li><li><b>DtxLinkNet.exe</b></li><li><b>DtxRx.exe</b> - Prescription Module Wrapper</li><li><b>DXPort.exe</b></li><li><b>Dxprint.exe</b> - Dentrix Print Module</li><li><b>DXWeb.exe</b></li><li><b>Famfile.exe </b>- Family File</li><li><b>Journal.exe</b> - Patient Journal</li><li><b>LabTrack.exe</b></li><li><b>Ledger.exe - </b>Ledger</li><li><b>Mailer.exe</b> - Mail Merge Utility</li><li><b>Office.exe</b> - Office Manager</li><li><b>Patpict.exe</b> - Patient Picture</li><li><b>PayerId.exe</b></li><li><b>Perio.exe</b> - Perio Module</li><li><b>PEXI.exe</b></li><li><b>Presenter.exe</b> - Dentrix Presenter</li><li><b>query.exe</b> - Query engine</li><li><b>Questionnaire.exe</b> - Questionnaire engine</li><li><b>QuickLabels.exe</b> - Quick Labels</li><li><b>RA.exe</b></li><li><b>SearchPayments.exe</b></li><li><b>Snapshot.exe</b></li><li><b>TimeClock.exe - </b>Time Clock</li><li><b>Totscr.exe</b></li><li><b>Tpman.exe</b></li><li><b>Trintf.exe</b></li><li><b>TxPlanner.exe</b></li><li><b>Wizard.exe </b></li></ul>Then it was time to use it:<br /><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">sdbinst "\\server\path\to\Dentrix\install\dentrix-fix.sdb"</span></blockquote><br />Note that I largely aimed with a shotgun instead of a scalpel - I basically whitelisted almost every single executable in the Dentrix folder I could find that I knew wasn't a database utility and wasn't something that already ran without UAC whitelisting (e.g. AppLauncher). I also excluded eSync's executables since we don't use eSync in our lab. Also note that, since this was a classroom environment, I didn't have to deal with integrating this with Dexis, Dentrix Image, SUNI, or the other, similarly broken imaging solutions that are used in the dental field - that said, the same solution might work. <b>I'll further note that, at least in my case, data integrity is not a high priority; since this is for a lab environment, it just needs to work well enough to get the point across, not remain stable through several Dentrix upgrades.</b> That last point is important since the Microsoft Application Compatibility Toolkit calculates checksums for each executable you add to your database - if Dentrix upgrades a particular executable, you'll need to re-whitelist it for it to work.<br /><br />The result? A Dentrix installation that let me, as a standard user, load up every Dentrix module I tried and make changes to patient records without a single UAC prompt.<br /><br />If anybody is actually brave enough to try this in the field, let me know - I'm genuinely curious. <br /><br /><a href="https://www.blogger.com/null" id="1">1</a>. Note that, for the purposes of my lab, we're instructing using Dentrix G4. Dentrix G5 is theoretically 64-bit native, so it might install in C:\Program Files on 64-bit systems. David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com4tag:blogger.com,1999:blog-612052649872821494.post-36037154043074364402015-01-24T01:45:00.000-08:002015-01-24T01:45:40.864-08:00Make Friends with the personal - not the political<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-uJ4VefcWwZs/VMNn2kB41ZI/AAAAAAAACsE/XGpFMY4KUbE/s1600/9607539015_a68d484710_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-uJ4VefcWwZs/VMNn2kB41ZI/AAAAAAAACsE/XGpFMY4KUbE/s1600/9607539015_a68d484710_o.jpg" height="223" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="http://www.flickr.com/photos/hinkelstone/9607539015/in/photolist-6daN8x-HeoCm-6deWK7-6daN2e-qcNsSs-6daNee-6Vpmne-4M5FQg-nskUda-fCZ9Cp-5pxscx-5pBKGj-64w95w-64w8TS-6hx9yd-ptQMmN-6t5Lyq-9uEo4T-6Vpmu4-5HJNeF-gB59hC-5vMtD6-5nPVLH-4M9Tby-4M5FxD-4M5JkT-4M5HW6-4M5GAk-7zgLXa-5uawfC-a7Tua1-9uEnSa-pL3U8B-4M5KKi-5DpJMY-5v2dQy-5v2dwU-5uWQdc-4M5K7x-4M5LKr-4M9WpN-4M9Wo1-4M5K56-4iHQDL-9uHnYE-6qoVdh-5v1WZW-5uWA3H-4RXYSe-ovL8oL" target="_blank">Moloch</a> by <a href="https://www.flickr.com/photos/hinkelstone/" target="_blank">Karl-Ludwig Poggemann</a> is licensed <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC BY 2.0</a>.</td></tr></tbody></table><br />When I first ran across <a href="http://www.slate.com/blogs/browbeat/2015/01/22/friends_chandler_bing_and_his_homophobia_are_the_worst_thing_about_watching.html" target="_blank"><i>Slate</i>'s moralist harangue</a> against <i>Friends</i> yesterday, my initial thought was, "Ah, this is obvious clickbait - pick something relatively non-offensive, choose a contrarian position against it, then let the clicks of outrage flow in". It looked like a classic <a href="http://slatestarcodex.com/2014/12/17/the-toxoplasma-of-rage/" target="_blank">toxoplasma</a>, an intentional <a href="http://slatestarcodex.com/2014/07/30/meditations-on-moloch/" target="_blank">summoning of Moloch</a> himself - intentional enough, in fact, that I assumed everyone else would see through it for what it was and let it silently die into obscurity.<br /><br /><a href="http://www.salon.com/2015/01/24/chandlers_treatment_of_his_gay_father_is_appalling_everything_critics_realized_while_watching_friends_in_2015/" target="_blank">I was wrong</a>.<br /><br />In my defense, I travel frequently in libertarian circles, where this sort of thing is such a predominant business plan of several notorious bloggers that <a href="http://attackthesystem.com/2014/12/24/libertarian-welfare-queens/" target="_blank">even sympathetic libertarians are getting sick and tired of it</a>, so what seemed obvious to me might be less so to others. Even so, I didn't seriously expect the idea that <i>Friends</i> needed some sort of moral and political deconstruction to actually receive anything resembling widespread support. And yet, there were so many bloggers that pursued this line of reasoning that this was the most "positive" conclusion that <i>Salon</i> could finish its roundup with:<br /><blockquote class="tr_bq">As <a href="http://www.vulture.com/2015/01/stay-tuned-friends-homophobic.html" target="_blank">Vulture’s Margaret Lyons wrote</a> in her “Stay Tuned” TV advice column, in response to a reader expressing discomfort with the show’s homophobia: “You can still love ‘Friends,’ but why would you want to love it like you did before? Love it the way you see it now, with the things you know now and the values you have now. I love ‘Friends,’ but I do not love its body or queer politics. Those things can be true at the same time.”</blockquote>Indeed they can, assuming all entertainment and life experiences <i>must</i> be filtered through a political or ideological lens. That, however, is a very bad idea - and a very old one.<br /><br /><div style="text-align: center;">**********</div><br />For whatever reason, I've been on a Soviet history reading kick lately. More recently, this has included <i><a href="https://play.google.com/store/books/details?id=PioE2EDcuMsC" target="_blank">Red Plenty</a>, </i>which came to my attention <a href="http://slatestarcodex.com/2014/09/24/book-review-red-plenty/" target="_blank">via Scott Alexander</a>, and my current read, Anne Applebaum's <a href="http://www.anneapplebaum.com/gulag-a-history/" target="_blank"><i>Gulag: A History</i></a>. One recurring theme of these books was how thoroughly the Soviet state and its ideology inserted itself into daily life, from scientific discovery to entertainment and beyond. See, from the Soviet Union's perspective, the New Soviet Man had to be consciously crafted - all bourgeois attitudes and mannerisms had to be cast out and replaced with a more socialist attitude. According to Soviet dogma, though they didn't quite phrase it quite this succinctly, <a href="http://en.wikipedia.org/wiki/The_personal_is_political" target="_blank">the personal was political</a> - as Trotsky put it, "You may not be interested in the dialectic, but the dialectic is interested in you." In order for the New Soviet Man to overcome his selfish, bourgeois habits, he needed to be reeducated so that he may better serve his fellow man according to his ability without requiring more than his need. To that end, artistic expression was <a href="http://en.wikipedia.org/wiki/Socialist_realism" target="_blank">closely proscribed</a> - so closely, in fact, that the CIA <a href="http://www.independent.co.uk/news/world/modern-art-was-cia-weapon-1578808.html" target="_blank">secretly sponsored abstract art</a> to undermine the Soviet government. Soviet biology, meanwhile, had been thoroughly destroyed by <a href="http://en.wikipedia.org/wiki/Lysenkoism" target="_blank">Lysenkoism</a>, which asserted, among other things, that plants behaved according to communist principles and that genetics (a rather dangerous concept for an ideology that requires people to be perfectly malleable like clay) was a "bourgeois" concept meant to undermine the revolution. Soviet plays and shows had to express uplifting, socialist attitudes, as did Soviet music. This concept was adopted by other Soviet-aligned regimes - Kim Jong-Il famously wrote about <a href="http://www.amazon.com/Art-Opera-Kim-Jong-il/dp/0898752035/ref=sr_1_1?ie=UTF8&amp;qid=1422082022&amp;sr=8-1&amp;keywords=kim+jong+il+opera&amp;pebp=1422082026475&amp;peasin=898752035" target="_blank">opera</a>, <a href="http://www.amazon.com/Art-Cinema-Kim-Jong-il/dp/0898756138/ref=asap_bc?ie=UTF8" target="_blank">cinema</a>, <a href="http://www.amazon.com/Art-Music-Kim-Jong-il-ebook/dp/B00I53C0XE/ref=asap_bc?ie=UTF8" target="_blank">music</a>, and <a href="http://www.amazon.com/Art-Architecture-Kim-Jong-il-ebook/dp/B00I53BZ6C/ref=asap_bc?ie=UTF8" target="_blank">architecture</a>, focusing on how to best align these disciplines within the greater socialist project.<br /><br />In short, everything - <i>everything</i> - had to advance the cause of communism and the revolution. Everything must show more concern for society, as defined by communism, than for the individual. Nothing could be enjoyed solely on its merits; everything must be enjoyed solely in the context of how it might better improve society.<br /><br /><div style="text-align: center;">**********</div><br />The Soviets and their Communist allies weren't the only ones, of course. Just before <i>Friends</i> came out, <a href="http://forerunner.com/forerunner/X0406_Quayles_Murphy_Brown.html" target="_blank">former Vice-President Dan Quayle famously blasted <i>Murphy Brown</i></a> because it failed to display sufficient concern for society:<br /><blockquote class="tr_bq">It doesn’t help matters when prime time TV has Murphy Brown – a character who supposedly epitomizes today’s intelligent, highly paid, professional woman – mocking the importance of a father, by bearing a child alone, and calling it just another “lifestyle choice.”<br /><br />I know it is not fashionable to talk about moral values, but we need to do it. Even though our cultural leaders in Hollywood, network TV, the national newspapers routinely jeer at them, I think that most of us in this room know that some things are good, and other things are wrong. Now it’s time to make the discussion public.</blockquote>This wasn't a new theme. In 1985, Tipper Gore, former wife of former Vice-President Al Gore, co-founded the <a href="http://en.wikipedia.org/wiki/Parents_Music_Resource_Center" target="_blank">Parents Music Resource Center</a>, which wished to provide greater control to parents over music that wasn't sufficiently deferential to the concerns of society. To that end, the <a href="https://www.youtube.com/watch?v=d65BxvSNa2o" target="_blank">PMRC staged a Senate hearing</a>, during which American government officials grilled various artists that were deemed "objectionable" by the PMRC about the content of their music. This led one targeted artist, Frank Zappa, to give <a href="http://downlode.org/Etext/zappa.html" target="_blank">a spirited defense of individual expression against the concerns of society</a>. I encourage you to stop right now and read the whole thing, but if you're feeling impatient, here's the start of it:<br /><blockquote class="tr_bq">The First thing I would like to do, because I know there is some foreign press involved here and they might not understand what the issue is about, one of the things the issue is about is the First Amendment to the Constitution, and it is short and I would like to read it so they will understand. It says:<br /><br /><i>Congress shall make no law respecting an establishment of religion or prohibiting the free exercise thereof, or abridging the freedom of speech or of the press or the right of the people peaceably to assemble and to petition the government for a redress of grievances.</i><br /><br />That is for reference.&nbsp;</blockquote><blockquote class="tr_bq">These are my personal observations and opinions. They are addressed to the PMRC [Parents’ Music Resource Centre] as well as this committee. I speak on behalf of no group or professional organization.&nbsp;</blockquote><blockquote class="tr_bq">The PMRC proposal is an ill-conceived piece of nonsense which fails to deliver any real benefits to children, infringes the civil liberties of people who are not children, and promises to keep the courts busy for years, dealing with the interpretational and enforcemental problems inherent in the proposal’s design.&nbsp;</blockquote><blockquote class="tr_bq">It is my understanding that, in law, First Amendment Issues are decided with a preference for the least restrictive alternative. In this context, the PMRC’s demands are the equivalent of treating dandruff by decapitation.</blockquote>Zappa then proceeds to explain not only why the PMRC's proposal is wholly inappropriate to a culture that ostensibly prizes freedom of expression, but also how the proposal actually obscures a hidden issue - a proposed tax on blank tapes, which was proposed by the recording industry to discourage copying of music while simultaneously serving as a handout to politically connected music companies. Whether the politicians of the time were opportunistically using the "cover fire" generated by the PMRC's proposals to sneak in a measure for their friends or whether the politicians themselves actually consciously generated the "cover fire" is certainly open to debate; whichever way it happened, though, it was crystal clear that the call for censorship had far less to do with any concerns for society and far more to do with the concerns of particular politically connected individuals.<br /><br />This, it should go without saying, mirrored the experience in every other country that insisted that all speech is political and must be controlled accordingly.<br /><div style="text-align: center;"><br /></div><div style="text-align: center;">**********</div><br />Again, however, this isn't a new idea. Even by the time of the October Revolution, European civilization had hundreds of years of experience with treating the personal as political. As the French Revolution spiraled out of control, the Reign of Terror left no corner of society untouched. The French people were <a href="http://en.wikipedia.org/wiki/Dechristianisation_of_France_during_the_French_Revolution" target="_blank">stripped of their religion</a> and even <a href="http://en.wikipedia.org/wiki/French_Republican_Calendar" target="_blank">their calendar</a>. Even by then, however, this was still old hat. Puritans <a href="http://en.wikipedia.org/wiki/Puritan#Restrictions_and_pleasures" target="_blank">famously banned several forms of entertainment</a> on the grounds that such pleasures interfered with their ideological struggle against sin, and personal enjoyment of such pleasures lacked sufficient concern for society - "idle hands are the Devil's playthings" and all that. <br /><br />Speaking of "idle hands", who came up with that saying? Why, it was <a href="http://en.wikipedia.org/wiki/Jerome" target="_blank">St. Jerome </a>in the 4th century.<br /><br />What's old is new again.<br /><br />As Mark Twain once said, "History doesn't repeat itself, but it does rhyme."<br /><div style="text-align: center;"><br /></div><div style="text-align: center;">**********</div><div style="text-align: center;"><br /></div><div style="text-align: left;">Interestingly, though you wouldn't know it by reading that <i>Salon</i> article today, quite a few people on the left are starting to realize that politicizing the personal really isn't a good idea. Fredrik deBoer noted a few months back that <a href="http://fredrikdeboer.com/2014/10/27/everything-personal-cant-be-political/" target="_blank">this tactic is a two-edged sword</a> (emphasis added by yours truly):</div><blockquote class="tr_bq"><div style="text-align: left;">I’ve really been genuinely disturbed by #GamerGate. Obviously, some of that is just the threats and harassment of women online. But it’s also disturbing how successful they’ve been in pressuring advertisers, and in getting parts of the media to credulously accept much of their narrative. To me, it’s indicative of the problems that come about when there’s no limit to how much we politicize the personal.<br /><br /><b>We on the left have argued for ages that “the personal is political.” We’ve told people that they should look for political resonance in every aspect of their personal lives, in order to see the hand of various oppressions at play in microcosm.</b> And we’ve incentivized that behavior in the way we always do, by treating the deployment of that kind of argument as a trump card against those who you’re arguing with. We have this <a href="http://fredrikdeboer.com/2014/04/29/bingo-cards-go-both-ways/" target="_blank">magic words theory</a> of argument where if you deploy certain terms like “tone policing,” the expectation is that you’ve won the argument and the other side has to stop arguing immediately. But those tactics don’t occur in a vacuum. <b>Campus conservatives, for example, have succeeded in so many of their provocations because they have very deftly adopted the tactics and vocabulary of the academic left and employed them for their own purposes.</b> And now we’re seeing the same thing from the GamerGate crew: this isn’t a fashion or hobby for me, it’s an identity. Your criticisms aren’t criticisms, they’re bullying. I’m not being blamed for bad behavior, I’m being oppressed.</div></blockquote><div style="text-align: left;">And by two-edged sword, I mean a giant sinkhole that swallows all who dare stare into it:</div><blockquote class="tr_bq"><div style="text-align: left;">Argument is like all other human behaviors: subject to conditioning through reward and punishment. <b>And we’ve created these incentives on the left: always politicize; always escalate; always ridicule.</b> We’re living with the consequences of those tendencies now. Unfortunately, I don’t know how we build a new left discourse, given that the two current modes of left-wing expression appear to be a) showily condescending ridicule and b) utter fury. I mean you can guess what the response by some will be to this essay: deBoer doesn’t think racism is real, he doesn’t think sexism is real, he wants people to just get over it when they’re the victims of sexism and racism. None of that is true. I write about the structural racism of our society constantly. I believe that we’re still a deeply, inherently sexist culture. (For example, you may have heard of #GamerGate.) And I absolutely believe that there are tons of daily encounters that demonstrate these problems, and that the victims of them should feel comfortable speaking out.<br /><br />I just also think that we have to be able to say “you know, I don’t think that your particular political critique here is correct” without being accused of failing to oppose racism and sexism in general. And I think that we have to recognize that, by treating claims of oppression as immediate conversation winners, without the expectation that people actually have to defend and support those claims with evidence, we make the appropriation of these techniques that we’re seeing with GamerGate inevitable.</div></blockquote><div style="text-align: left;">History has shown time and again what happens when you politicize the personal. When all personal action becomes a political statement, any personal action might command a political response. At best, this might involve a bit of hand wringing and calls for better "standards" and "taste". At worst, the ultimate embodiment of the political - the state - exercises its muscles, its guns, and its soldiers and provides the <a href="http://en.wikipedia.org/wiki/Reign_of_Terror" target="_blank">ultimate</a> <a href="http://en.wikipedia.org/wiki/Purges_of_the_Communist_Party_of_the_Soviet_Union" target="_blank">political</a> <a href="http://en.wikipedia.org/wiki/Cultural_Revolution" target="_blank">response</a>. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">This still doesn't stop people from trying. It never will.</div><div style="text-align: left;"><br /></div><div style="text-align: center;">**********</div><div style="text-align: left;"><br /></div><div style="text-align: left;">What really concerns me about the attempted politicization of <i>Friends</i> - beyond the raw ad-driven avarice that's powering it and which, by commenting on it, I'm contributing to - is that at least the Puritans and Tipper Gore and Dan Quayle were fighting for a fairly constant set of well known rules. Oh sure, there are some variations and oddities here and there <a href="http://tofspot.blogspot.com/2011/09/adam-and-eve-and-ted-and-alice.html" target="_blank">in terms of interpretation and how naively literally we should interpret the Bible</a>, but at least nobody's adding new chapters to the Bible on the fly (well, <a href="http://lds.org/" target="_blank">almost nobody</a>). The basic rules that the Pilgrims and Tipper and Dan were fighting for are more or less the same, though they might disagree individually on degree - choose activities that glorify God and family and shun just about everything else. They're not rules I agree with - I'm an atheist, personally - but they <i>are</i> rules, they <i>are </i>written down, more or less, and just about everybody in our cultural corner is generally familiar with them. Granted, they're rules that are almost explicitly designed to guarantee that you'll be guilty of <i>something</i> - just looking at someone and experiencing some sort of sexual attraction is technically a sin, after all, and if you're still full but keep eating, well, that's one too - but they're there. The rules being applied to <i>Friends</i>, however, are nowhere near that constant. Take Chandler's homophobia, for example. The show established pretty thoroughly that Chandler was an insecure loser (he worked in data entry, had troubles dating, and so on) that used sarcasm and humor as a defense mechanism and had various attitudes that you would expect from someone with some deep-seated insecurities about his position in the world. <i>Of course</i> he was homophobic - <i>that was the joke</i>. He was so insecure about his own ability to find love that he took it out on pretty much everyone else - fat people, homosexuals, his father, sometimes even his friends. That's why it was okay to laugh at him - he was clearly written to be a flawed, insecure, occasionally horrible human being that we could all relate to from time to time and poke fun of. He was a younger, hipper, somewhat less reactionary Archie Bunker. By laughing at him, we were laughing at our worst. It's the same reason Homer Simpson and Peter Griffin are funny. It's why people laugh at Stan Marsh. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">But that's no longer enough.&nbsp;</div><div style="text-align: left;"><br /></div><div style="text-align: left;">It was in the '90s, when <i>Friends</i> came out - even in that dark, almost medieval age of misogyny, trans-erasure, and structural racism, it was pretty clear that homophobia was the product of a reactionary, insecure mind, one that deserved derisive laughter and jest. However, just as the Puritans slowly turned the ratchet, then quickly; just as the Jacobins slowly turned the ratchet, then quickly; just as the Bolsheviks slowly turned the ratchet, then quickly; just as Mao's followers and their like in Cambodia and Vietnam slowly turned the ratchet, then quickly - now it is time to quickly turn the ratchet on the heretics and to truly identify and weed out the faithful, the followers of whatever Revolution we're celebrating and pushing today. To do so, we must cast away the past - if we do not, people might actually <i>learn something from it</i>, and we can't have that. We must continue to change what's acceptable. Homophobia is no longer a laughing matter since it is proof of dissent, and dissent is <i>most certainly</i> no laughing matter. Transphobia must be redefined from "fearing trans-gendered people" to "<a href="http://reason.com/blog/2015/01/15/womens-college-cancels-vagina-monologues" target="_blank">speaking openly of vaginas</a>". We must fight the patriarchy until it becomes clear that fighting the patriarchy no longer suitably identifies the truly faithful, at which point we shall <a href="http://everydayfeminism.com/2014/04/kyriarchy-101/" target="_blank">fight the kyriarchy</a>. We shall demand that businesses advertise to the revolution, then, once they start doing so, <a href="http://slog.thestranger.com/slog/archives/2014/01/28/to-queers-bitching-about-macklemore-and-ryan-lewis" target="_blank">tell them that the revolution is not for sale and <i>how dare they</i> co-opt our cause</a>. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">Humor is potentially subversive and subtle, so <a href="http://www.thenation.com/blog/179160/cancelcolbert-and-return-anti-liberal-left#" target="_blank">of course it must be crushed</a>. Socialist realism <a href="https://www.google.com/search?site=&amp;tbm=isch&amp;source=hp&amp;biw=1301&amp;bih=657&amp;q=north+korea+monuments&amp;oq=north+korea+monuments&amp;gs_l=img.3..0.660.2982.0.3059.21.9.0.3.3.0.388.1107.2-3j1.4.0.msedr...0...1ac.1.61.img..14.7.1116.gH9gD4b89R4" target="_blank">abhors subtlety</a>. Subtlety breeds variation and dissent. Can't have that.</div><div style="text-align: left;"><br /></div><div style="text-align: center;">**********</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Before anyone gets the wrong idea, conservatives shouldn't pat themselves on the back too hard right now. You had your turn - oh, believe me, <a href="http://en.wikipedia.org/wiki/Motion_Picture_Production_Code" target="_blank">you</a> <a href="http://en.wikipedia.org/wiki/Banned_in_Boston" target="_blank">had</a> <a href="http://www.archives.nysed.gov/a/research/res_topics_film_censor.shtml" target="_blank">your</a> <a href="http://en.wikipedia.org/wiki/House_Un-American_Activities_Committee" target="_blank">turn</a>. America knows what happens when you get to call the cultural shots:</div><div style="text-align: left;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-IJ-agNHFOf4/VMNjw9yRNxI/AAAAAAAACr8/VnudSP8ki1c/s1600/tumblr_mp62hhAo1Y1rl43cyo1_1280.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-IJ-agNHFOf4/VMNjw9yRNxI/AAAAAAAACr8/VnudSP8ki1c/s1600/tumblr_mp62hhAo1Y1rl43cyo1_1280.png" height="261" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">An <a href="http://calvinanddune.tumblr.com/image/56234161686" target="_blank">illustrative <i>Dune</i> quote</a> rendered by <a href="http://calvinanddune.tumblr.com/" target="_blank"><i>Calvin &amp; Muad'Dib</i></a></td></tr></tbody></table><div style="text-align: left;">Believe me, given the choice between arguing with a few semi-obscure left wing giblet-heads on the Internet and dealing with what happens when <i>you</i> get the keys... look, we're a long, long, <i>long</i> way from getting from "Let's politicize <i>Friends</i> for ad revenue!" to "Let's send anyone who finds <i>Friends</i> acceptable to a <a href="http://en.wikipedia.org/wiki/Kolkhoz" target="_blank"><i>kolkhoz</i></a> in Manitoba!" We are not <i>near</i> far enough from 90% of the legislation, attempted or ratified, that you've thrown at this country through the years. America fought long and hard to actually take "freedom of speech" seriously - don't think for a moment that we've forgotten how hard you fought us every step of the way.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">With that, I think I'm done here for the moment.</div>David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-65219631521317021062015-01-16T16:12:00.003-08:002015-01-16T16:12:40.873-08:00It is by caffeine alone I set my mind in motion...<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-3C7WBl7m0Oo/VLmcn9sF55I/AAAAAAAACrs/OwQ7Cu7x3pQ/s1600/MLWorkingDiv.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-3C7WBl7m0Oo/VLmcn9sF55I/AAAAAAAACrs/OwQ7Cu7x3pQ/s1600/MLWorkingDiv.png" height="116" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">“It is by caffeine alone I set my mind in motion. It is by the beans of Java that thoughts acquire speed, the hands acquire shakes, the shakes become a warning. It is by caffeine alone I set my mind in motion.” - <a href="http://en.wikiquote.org/wiki/Talk:Coffee" target="_blank">The Programmer's Mantra</a></td></tr></tbody></table>In my <a href="http://blog.colbornemmx.com/2015/01/experimenting-with-string-manipulation.html" target="_blank">previous post</a> regarding <a href="https://github.com/Oatworm/MathLibrary.cmd" target="_blank">MathLibrary.cmd</a>, I pointed out that division was well-night unusable - dividing a 101-digit number by itself took over <i>22 minutes</i>. This has led me, in fits and spurts, to find some ways to improve performance and streamline the code since I first started working on this over a month ago; unfortunately, most of my results had only provided incremental improvements at best.<br /><br />I made a mistake yesterday that changed all that.<br /><br />While fixing my subtraction code, which actually had a fairly subtle error that produced extra significant digits if the answer had fewer digits than either the <a href="http://en.wikipedia.org/wiki/Subtraction#Notation_and_terminology" target="_blank">minuend or the subtrahend</a>, I accidentally created some code with an <a href="http://en.wikipedia.org/wiki/Big_O_notation" target="_blank">O(n^2)</a> algorithm, which produced performance results that looked an <i>awful</i> lot like the results I was getting with my division algorithm. This led me to wonder if perhaps that might be the key to understanding where my problem was - was I iterating through my string, character by character, so often that I was killing my code? Or was something else holding it back?<br /><br />The answer to both questions turned out to be <b>yes</b>.<br /><br />First, a bit of technical background. When I first started working on MathLibrary.cmd, I explicitly wrote it in mind with the idea that I'd copy and paste blocks of it as needed for my Project Euler solutions. For example, if I was working on a problem that only needed addition, I'd just copy the part of the script that dealt with adding large numbers (:ExtAdd), along with whatever dependencies (:ExtMatchPad, :ExtDim). Consequently, I specifically built each portion of the script with the assumption that it would run independently. Meanwhile, in order to facilitate the elementary school style math (e.g. iterate through each digit of a large number, do some math against it, carry it to the next one, etc. - we're talking pre-Common Core algorithms here), I had to make sure that both numbers were more or less identically sized - otherwise I'd be adding, say, 9 to absolute emptiness, which would lead to <a href="https://www.youtube.com/watch?v=O3ZOKDmorj0" target="_blank">all sorts of unpleasantness</a>. So, to accommodate that, I'd get the length of each number string, then append 0's in either direction as needed.<br /><br />The mistake I made yesterday was that I got the length of my number string <i>over and over and over again</i>.<br /><br />Well shoot - why do that? What if I could get it once, store it, pass it to each subroutine, and have it arithmetically manipulated as needed instead of manually checking the length of the string each time? So, last night, that's what I tried - and it worked! I got about a 50% performance improvement from my script by doing that.<br /><br />Not bad - but still not good enough.<br /><br />Trouble is, 50% of 22 minutes is still over 10 minutes, which is just not practical if I need to run repeated division operations. I didn't need to drop my division runtime by 50% - I needed to drop it by at least an order of magnitude. What else could I try?<br /><br />This morning, I had a rather large, rather strong cup of gas station coffee. A bit later, I then had a flash of inspiration. Since multiplication is slow, I smartly decided when I first wrote the division algorithm to do it as rarely as possible - I'd multiply the divisor from 1 to 10, store the values in an array, then compare against those pre-calculated values to find the answer.<br /><br />What if I didn't multiply <i>at all?</i><br /><br />What I was really trying to do was add the divisor to itself ten times, and addition is <i>way</i> faster than multiplication. So, what if I just did that instead?<br /><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Testing division operations...<br />/01 OK 14:48:57.25 14:48:56.64 0:0:0.61<br />/02 OK 14:48:58.00 14:48:57.26 0:0:0.74<br />/03 OK 14:48:58.94 14:48:58.01 0:0:0.93<br />/04 OK 14:49:00.08 14:48:58.94 0:0:1.14<br />/05 OK 14:49:01.40 14:49:00.09 0:0:1.31<br />/06 OK 14:49:03.71 14:49:01.41 0:0:2.30<br />/07 OK 14:49:07.30 14:49:03.72 0:0:3.58<br />/08 OK 14:49:17.23 14:49:07.32 0:0:9.91<br />/09 OK 14:49:36.92 14:49:17.24 0:0:19.68<br />/10 OK 14:49:56.90 14:49:36.94 <b>0:0:19.96</b></span></blockquote>Ah - much better. Now, instead of taking over 20 minutes, division takes less than 20 <i>seconds</i>. Much more livable, especially since this means I can now meaningfully check and troubleshoot it and find little issues like this:<br /><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">MathLibrary.cmd 1 / 0.5<br />10.000000000000</span></blockquote>Oops - well, looks like I still have some work to do. David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-19479201020738466752015-01-15T17:05:00.000-08:002015-01-15T17:05:33.109-08:00Experimenting with string manipulationDivision using my <a href="https://github.com/Oatworm/MathLibrary.cmd" target="_blank">MathLibrary.cmd</a> script has always been slow. Really, <i>really </i>slow:<br /><blockquote class="tr_bq">/01 OK 11:21:39.08 11:21:37.99 <b>0:0:1.9</b><br />/02 OK 11:21:40.89 11:21:39.09 <b>0:0:1.80</b><br />/03 OK 11:21:43.92 11:21:40.90 <b>0:0:3.2</b><br />/04 OK 11:21:48.57 11:21:43.93 <b>0:0:4.64</b><br />/05 OK 11:21:54.78 11:21:48.58 <b>0:0:6.20</b><br />/06 OK 11:22:12.96 11:21:54.79 <b>0:0:18.17</b><br />/07 OK 11:22:53.36 11:22:12.98 <b>0:0:40.38</b><br />/08 OK 11:28:33.39 11:22:53.37 <b>0:5:40.2</b><br />/09 OK 11:50:13.04 11:28:33.40 <b>0:21:39.64</b><br />/10 OK 12:12:14.42 11:50:13.05 <b>0:22:1.37</b></blockquote>The bolded numbers are how long each unit test (/01, /02, etc.) took to complete in HH:MM:SS.mS format. Each test is a series of identical numbers (meaning the answer should always be "1") in increasing size - test /01, for example, is 2/2, while test /10 - which took over <i>22 minutes</i> - is dividing the same 101-digit number by itself.<br /><br />This is a problem.<br /><br />It's a problem because, at the end of the day, the goal of this script is to solve <a href="https://projecteuler.net/problem=3" target="_blank">the third Project Euler problem</a> - find the largest prime factor of a large enough number for CMD to choke on it - and in order to do that, I need to be able to calculate the square root of that number so I have an upper bound of prime factors to consider. In order to<i> </i>determine a square root by scratch, however, <a href="http://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method" target="_blank">the most straightforward method</a> that I can wrap my mind around uses iterative floating point division to get closer and closer to the square root until it's found. Obviously, an algorithm that takes over 20 minutes to divide two numbers isn't going to work if I have to divide two numbers over and over again.<br /><br />While running my unit tests, however, I discovered something curious:<br /><blockquote class="tr_bq">&nbsp;Testing subtraction operations...<br />-01 OK 10:55:41.34 10:55:41.16 0:0:0.18<br />-02 OK 10:55:41.82 10:55:41.35 0:0:0.47<br />-03 OK 10:55:43.21 10:55:41.82 0:0:1.39<br />-04 OK 10:55:46.00 10:55:43.22 0:0:2.78<br />-05 OK 10:55:59.50 10:55:46.02 0:0:13.48<br />-06 OK 10:55:59.61 10:55:59.52 0:0:0.9<br />-07 OK 10:55:59.88 10:55:59.63 0:0:0.25<br />-08 OK 10:56:00.93 10:55:59.88 0:0:1.5<br />-09 OK 10:56:02.84 10:56:00.94 0:0:1.90<br />-10 OK 10:56:05.72 10:56:02.84 0:0:2.88<br />-11 OK 10:56:05.82 10:56:05.72 0:0:0.10<br />-12 OK 10:56:06.07 10:56:05.82 0:0:0.25<br />-13 OK 10:56:07.13 10:56:06.09 0:0:1.4<br />-14 OK 10:56:09.04 10:56:07.13 0:0:1.91<br />-15 OK 10:56:11.93 10:56:09.04 0:0:2.89<br /><b>-16 <span style="color: red;">NO </span>10:56:12.05 10:56:11.93 0:0:0.12<br />-17 <span style="color: red;">NO </span>10:56:12.24 10:56:12.05 0:0:0.19<br />-18 <span style="color: red;">NO </span>10:56:13.56 10:56:12.25 0:0:1.31<br />-19 <span style="color: red;">NO </span>10:56:16.14 10:56:13.58 0:0:2.56<br />-20 <span style="color: red;">NO </span>10:56:27.52 10:56:16.16 0:0:11.36</b></blockquote>Note the "NO" results on the last five tests - these are tests that subtract two identical floating point numbers, which should return 0. Well, it turns out it wasn't <i>quite</i> doing that...<br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">C:\Users\ \Documents\GitHub\MathLibrary.cmd&gt;MathLibrary.cmd 0.2 - 0.2<br /><b>0.0</b><br /><br />C:\Users\ \Documents\GitHub\MathLibrary.cmd&gt;MathLibrary.cmd 14.320 - 14.320<br /><b>0.000</b></span><br /><br />Notice that the results - bolded for readability - aren't actually "0" - they're 0.however many significant digits were on the right of the number. This led me to put together a quick "strip trailing zeroes" routine, which is near-identical to the one used by the division subroutine:<br /><br /><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">&nbsp;&nbsp;&nbsp; :ExtSubtractStripTrailingZeroes<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CALL :ExtDim %_SubtractResult% _SubtractResLen _SubtractResDec<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_SubtractResDec% GTR %_SubtractResLen% GOTO ExtSubtractDoneStrippingTrailingZeroes<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _SubtractRInt=%_SubtractResult:~-1%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_SubtractRInt%==. (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _SubtractResult=%_SubtractResult:~0,-1%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; GOTO ExtSubtractDoneStrippingTrailingZeroes<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF NOT %_SubtractRInt%==0 GOTO ExtSubtractDoneStrippingTrailingZeroes<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _SubtractResult=%_SubtractResult:~0,-1%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; GOTO ExtSubtractStripTrailingZeroes<br />&nbsp;&nbsp;&nbsp; :ExtSubtractDoneStrippingTrailingZeroes</span></span><br /><br />Then I re-ran my tests:<br /><blockquote class="tr_bq">-16 OK 13:45:15.31 13:45:15.15 0:0:0.16<br />-17 OK 13:45:15.57 13:45:15.31 0:0:0.26<br />-18 OK 13:45:18.60 13:45:15.59 0:0:3.1<br />-19 OK 13:45:25.90 13:45:18.61 0:0:7.29<br />-20 OK 13:51:18.70 13:45:25.90 <span style="color: red;"><b>0:5:52.80</b></span></blockquote>The good news is they all passed. The bad news is they started taking longer - <i>much</i> longer in the case of the last test, which went from taking an already slow 11 seconds to taking close to 6 <i>minutes</i>. Something needed to be done. So, instead of looping via GOTO and truncating the string one digit at a time, I decided I'd try finding the position of the first trailing zero and then cut all of them at once:<br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; :ExtSubtractStripTrailingZeroes<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; CALL :ExtDim %_SubtractResult% _SubtractResLen _SubtractResDec<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; IF %_SubtractResDec% GTR %_SubtractResLen% GOTO ExtSubtractDoneStrippingTrailingZeroes<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; SET /A _SubStripMax=_SubtractResLen-_SubtractResDec+1<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; SET _SubStripOff=0<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; FOR /L %%G IN (1,1,%_SubStripMax%) DO (<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _SubStripPos=%%G<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CALL SET _SubZChk=%%_SubtractResult:~-!_SubStripPos!,%_One%%%<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF NOT !_SubZChk!==0 (<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; GOTO ExtSubtractFoundTrailingZeroes<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _SubStripOff=%%G<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp; &nbsp;:ExtSubtractFoundTrailingZeroes<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; IF %_SubZChk%==. SET /A _SubStripOff+=1<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; CALL SET _SubtractResult=%%_SubtractResult:~%_Zero%,-%_SubStripOff%%%<br />&nbsp;&nbsp; &nbsp;:ExtSubtractDoneStrippingTrailingZeroes</span></span><br />The result?<br /><blockquote class="tr_bq">-16 OK 15:12:51.19 15:12:51.05 0:0:0.14<br />-17 OK 15:12:51.41 15:12:51.19 0:0:0.22<br />-18 OK 15:12:52.83 15:12:51.42 0:0:1.41<br />-19 OK 15:12:55.59 15:12:52.84 0:0:2.75<br />-20 OK 15:13:08.87 15:12:55.61 0:0:13.26</blockquote>Much better.&nbsp; Granted, it's a little slower than it was when I wasn't cutting the zeroes out at all, but this was at least manageable. Then I took a second look at the first line of code from the original algorithm:<br /><br /><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">&nbsp;&nbsp;&nbsp; :ExtSubtractStripTrailingZeroes<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <b>CALL :ExtDim %_SubtractResult% _SubtractResLen _SubtractResDec</b></span></span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">ExtDim</span> iterates through each character of the string, manually counting its length and decimal position along the way. Realistically, we only need to run that once, not once per character. Moving things around a bit and reverting to the original algorithms gave me this:<br /><blockquote class="tr_bq">-16 OK 16:55:20.62 16:55:20.47 0:0:0.15<br />-17 OK 16:55:20.85 16:55:20.62 0:0:0.23<br />-18 OK 16:55:22.49 16:55:20.87 0:0:1.62<br />-19 OK 16:55:25.67 16:55:22.51 0:0:3.16<br />-20 OK 16:55:41.43 16:55:25.68 0:0:15.75</blockquote><br />So, even with my original algorithm fixed, the For loop method still remained faster, though nowhere near as much faster as I was hoping since the division zero stripping algorithm isn't as broken as my original subtraction zero stripping algorithm.<br /><br />I have some other ideas to move division along, though. Stay tuned... David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-47419278892210276082015-01-14T16:33:00.002-08:002015-01-14T16:33:55.710-08:00Performance Testing CMD<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-NvyqUc0KY0c/VLcK5QajNoI/AAAAAAAACrc/M2H9_mjuITw/s1600/DeOctalTest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-NvyqUc0KY0c/VLcK5QajNoI/AAAAAAAACrc/M2H9_mjuITw/s1600/DeOctalTest.png" height="141" width="400" /></a></div>I've remarked a <a href="http://blog.colbornemmx.com/2014/12/thoughts-on-windows-scripting.html" target="_blank">couple</a> of <a href="http://blog.colbornemmx.com/2015/01/extending-cmds-math-abilities.html" target="_blank">times</a> in the past about the inconvenience of CMD's insistence that all numbers that begin with a zero shall be treated as octal numbers. Since my <a href="https://github.com/Oatworm/MathLibrary.cmd" target="_blank">MathLibrary.cmd</a> project uses string manipulation to break down large and floating point numbers into chunks that CMD can actually handle, it'd be nice if I could break strings down into larger chunks and handle them "natively" instead of one digit at a time like I'm currently doing. However, every attempt I've made at doing so has actually led to a performance <i>penalty</i> since the overhead of "de-octalifying" - checking if a digit starts with a 0 and converting it to a decimal number - consumes any time I might otherwise save.<br /><br />This led me to consider what the most efficient method of "de-octalifying" a number in CMD might be. Three approaches that immediately came to mind were:<br /><ol><li>Append a "1" to the beginning of every number and apply the modulus operator against a known power of 10 to extract the desired number. For example, if I'm trying to de-octalify 0003, I'd append a 1 (10003), then <a href="http://en.wikipedia.org/wiki/Modulo_operation" target="_blank">modulus</a><a href="https://www.blogger.com/blogger.g?blogID=612052649872821494#1">*</a> that number against 10000. This is the traditional method seen in most Windows batch script examples that deal with this sort of problem.</li><li>Apply a series of If/Then statements that checks for the presence of leading 0's, then return the truncated result.</li><li>Similar logic as #2, only using a For loop to iterate through the number string.</li></ol>I then decided to write a script to test these algorithms, which can be found <a href="https://github.com/Oatworm/MathLibrary.cmd/blob/master/Testing/DeOctalTest.cmd" target="_blank">here</a>. A sample of the algorithms themselves:<br /><br />*** <br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">:TestModulus<br />&nbsp;&nbsp;&nbsp; SETLOCAL EnableDelayedExpansion<br />&nbsp;&nbsp;&nbsp; :: Accepts one parameter:<br />&nbsp;&nbsp;&nbsp; :: %1 - The digit to be de-octalized (passed by reference)<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SET _TestMod=1!%1!<br />&nbsp;&nbsp;&nbsp; SET /A _TestMod=_TestMod %% 1000000000<br /><br />&nbsp;&nbsp;&nbsp; ENDLOCAL &amp; SET %1=%_TestMod%<br />GOTO :EOF<br /><br />:TestIf<br />&nbsp;&nbsp;&nbsp; SETLOCAL EnableDelayedExpansion<br />&nbsp;&nbsp;&nbsp; :: Accepts one parameter:<br />&nbsp;&nbsp;&nbsp; :: %1 - The digit to be de-octalized (passed by reference)<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SET _TestIf=!%1!<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; IF %_TestIf:~0,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_TestIf:~1,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_TestIf:~2,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_TestIf:~3,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_TestIf:~4,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_TestIf:~5,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_TestIf:~6,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF %_TestIf:~7,1%==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _TestIf=%_TestIf:~-1%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _TestIf=%_TestIf:~-2%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _TestIf=%_TestIf:~-3%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _TestIf=%_TestIf:~-4%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _TestIf=%_TestIf:~-5%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _TestIf=%_TestIf:~-6%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _TestIf=%_TestIf:~-7%<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE SET _TestIf=%_TestIf:~-8%<br />&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; ENDLOCAL &amp; SET %1=%_TestIf%<br />GOTO :EOF<br /><br />:TestFor<br />&nbsp;&nbsp;&nbsp; SETLOCAL EnableDelayedExpansion<br />&nbsp;&nbsp;&nbsp; :: Accepts one parameter<br />&nbsp;&nbsp;&nbsp; :: %1 - The digit to be deoctalized (passed by reference)<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SET _TestFor=!%1!<br />&nbsp;&nbsp;&nbsp; FOR /L %%G IN (1,1,8) DO (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _TestZero=!_TestFor:~0,1!<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IF !_TestZero!==0 (<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SET _TestFor=!_TestFor:~1!<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ) ELSE GOTO TestForReturn<br />&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; :TestForReturn<br />&nbsp;&nbsp;&nbsp; ENDLOCAL &amp; SET %1=%_TestFor%<br />GOTO :EOF</span><br /><br />***<br /><br />Note that, of the three, the modulus approach is certainly the tersest of the bunch, which is arguably why it's the most popular. After testing it, there's another advantage:<br /><br />It's faster.<br /><br />My test script went through and truncated eight sets of numbers, plus processed a set that didn't need to be truncated at all. I chose this set because, owing to the Windows Batch Script environment's 32-bit signed integer limit, the largest number that can be processed by CMD is a 10-digit number (2147483647, to be more specific) - consequently, the largest block that I could subdivide addition and subtraction operations into would be a nine digit block (999999999 + 999999999 = 1,999,999,998, which is less than CMD's limit of 2,147,483,647), so that would be the largest block I would ever process. I then iterated through each digit in that set a thousand times, which I figured would be long enough to highlight any performance differences, and viewed the results:<br /><br /> <br /><table border="0" cellpadding="0" cellspacing="0" style="width: 256px;"><colgroup><col span="4" style="width: 48pt;" width="64"></col> </colgroup><tbody><tr height="20" style="height: 15.0pt;"> <td height="20" style="height: 15.0pt; width: 48pt;" width="64"><br /></td> <td class="xl63" style="text-align: right; width: 48pt;" width="64">Mod</td> <td class="xl63" style="text-align: right; width: 48pt;" width="64">If</td> <td class="xl63" style="text-align: right; width: 48pt;" width="64">For</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">1</td> <td align="right">3.1</td> <td align="right">3.15</td> <td align="right">3.66</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">2</td> <td align="right">2.85</td> <td align="right">3.7</td> <td align="right">3.53</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">3</td> <td align="right">2.8</td> <td align="right">2.99</td> <td align="right">3.39</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">4</td> <td align="right">2.68</td> <td align="right">2.9</td> <td align="right">3.23</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">5</td> <td align="right">2.59</td> <td align="right">2.82</td> <td align="right">3.1</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">6</td> <td align="right">2.5</td> <td align="right">2.72</td> <td align="right">2.92</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">7</td> <td align="right">2.42</td> <td align="right">2.63</td> <td align="right">2.77</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">8</td> <td align="right">2.31</td> <td align="right">2.54</td> <td align="right">2.61</td> </tr><tr height="20" style="height: 15.0pt;"> <td align="right" class="xl63" height="20" style="height: 15.0pt;">9</td> <td align="right">2.22</td> <td align="right">2.41</td> <td align="right">2.45</td> </tr></tbody></table><ol></ol>The y-axis in that table is how many digits would be returned - for example, "9" corresponds to 123456789, which wouldn't have any 0s removed at all, while "1" corresponds to 000000001, which would have eight 0s removed.&nbsp; The x-axis is the algorithm chosen for each iteration - either using the modulo operator, cascading If/Then statements, or a For loop. Time was measured in seconds. Notice that the modulus method of 0 truncation was consistently the fastest in each example, with If/Then being faster in most use cases than the For loop method.<br /><br />The takeaway from all of this? Sometimes the simplest methods really are the best, and sometimes traditions happen for a reason.<br /><br />*****<br /><a href="https://www.blogger.com/null" id="1">*</a> The modulo operator, usually expressed as "%" divides a numerator by a denominator, then returns the remainder. For example, 11 % 2 would give 1, which is the remainder after 11 / 2.David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-57124989686690043692015-01-03T22:28:00.003-08:002015-01-03T22:39:49.656-08:00Extending CMD's Math Abilities<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-HhDUoOBmyJI/VKjDDrgaoWI/AAAAAAAACrM/nLeko1czzFA/s1600/MathLibrary-Output.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-HhDUoOBmyJI/VKjDDrgaoWI/AAAAAAAACrM/nLeko1czzFA/s1600/MathLibrary-Output.png" height="202" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Sample output from MathLibrary.cmd</td></tr></tbody></table>A while back, I started working on writing <a href="https://projecteuler.net/" target="_blank">Project Euler</a> scripts using Windows Batch Script. <a href="http://blog.colbornemmx.com/search/label/Project%20Euler" target="_blank">I didn't get very far</a> before I <a href="http://blog.colbornemmx.com/2014/12/thoughts-on-windows-scripting.html" target="_blank">ran into some pretty clear limitations</a> with my chosen development environment:<br /><ul><li>Windows Batch Script only supports 32-bit signed integers. This bounds its native math functionality from -2,147,483,648 to <a href="http://en.wikipedia.org/wiki/2147483647" target="_blank">2,147,483,647</a>, inclusively.</li><li>Windows Batch Script does not handle decimal points <i>at all</i>.</li><li>Windows Batch Script's <a href="http://ss64.com/nt/set.html" target="_blank">native arithmetic functions</a> are&nbsp;<i>extremely</i>&nbsp;limited.</li><li>Windows Batch Script has almost no error handling capabilities <i>at all</i>. They're so bad, in fact, that you can oftentimes run afoul of each of the above limitations and never receive an error for doing so - you'll just get undesired results.</li></ul><div>To that end, I started working on a way to broaden its capabilities a bit, and in the spirit of the original goal of implementing Project Euler solutions using nothing but Windows Batch Scripting, I decided to keep my solution confined to Windows Batch Scripting as well. At first I did what any good sysadmin would do and tried to Google the problem away, which led to some fruitful results. Someone found a way to <a href="http://thedailywtf.com/articles/Stupid-Coding-Tricks-A-Batch-of-Pi" target="_blank">calculate Pi using Batch Script</a>, which was encouraging - that proved floating point math was possible. I also found solutions that <a href="http://www.robvanderwoude.com/battech_math.php" target="_blank">allowed arbitrary length integers to be calculated</a>, which were also promising. Unfortunately, when I attempted to apply those solutions to my particular problem, I found that the code wasn't particularly portable (the division subroutine in the Pi script, for example, only works as long as one of the digits is within the 32-bit signed limit) or otherwise useful for my needs. Consequently, it looked like I would have to write my own.</div><div><br /></div><div><a href="https://github.com/Oatworm/MathLibrary.cmd" target="_blank">So I did</a>.</div><div><br /></div><div>Now, before anyone gets excited, it's not done yet. I'm publishing it now because 2015 is here, I've been fiddling with this on and off for the past two months, and I decided it was high time to just get it out the door for the rest of the world. With that in mind, here are the current limitations of <a href="https://github.com/Oatworm/MathLibrary.cmd/blob/master/MathLibrary.cmd" target="_blank">MathLibrary.cmd</a>:</div><div><ul><li>Negative numbers are only supported for addition, subtraction, and comparison. Multiplication and division are coming soon.</li><li>The algorithms are "conceptual", meaning that, if you were a 10-year-old elementary school student that could read Windows Batch Script, you would understand what was going on <i>perfectly</i>. I'm not taking advantages of quads and octs yet (I'll explain why below).&nbsp;</li><li>It's <i>slow.</i>&nbsp;Two 500 digit numbers take about 10 seconds to add on my laptop (AMD Phenom II N660 3.0 GHz) and about 25 seconds to subtract. Two 50 digit numbers take about a minute and a half to multiply together. Division is unspeakably atrocious.</li></ul><div>That said, it does successfully add, subtract, multiply, divide, and compare arbitrary-length floating point numbers, which is pretty cool. It<i>&nbsp;can </i>be done.</div></div><div><br /></div><div>So, let's talk about speed for a bit. While working on the script, I decided to experiment with refactoring the addition subroutined (<span style="font-family: Courier New, Courier, monospace;">:ExtAdd</span>) to use eight digit blocks instead of single integer blocks like what you see on GitHub. What I discovered was that, in order to do so, I had to check for blocks that started with a 0 - or several 0's - and filter them out, otherwise Windows Batch Script would assume I wanted to add two octal numbers together. Consequently, whatever performance gains I got out of adding in 8-digit blocks instead of single digits was devoured by the time it took to clear out the leading 0's out of the blocks so they would add together cleanly.</div><div><br /></div><div>Another odd note - take a look at the code used in the Pi script for adding two digits together:</div><div><br /><span style="font-family: 'Courier New', Courier, monospace;">set /a Add_Digit = Add_Carry + %1_%%i + %2_%%i</span><br /><span style="font-family: Courier New, Courier, monospace;">set /a %1_%%i = Add_Digit %% 10000</span><br /><span style="font-family: Courier New, Courier, monospace;">set /a Add_Carry = Add_Digit / 10000</span></div><div><br /></div><div>Now, let's compare to my equivalent code:<br /><br /><span style="font-family: Courier New, Courier, monospace;">SET /A _AddByPos=_AddInt1+_AddInt2+_AddCarry</span><br /><span style="font-family: Courier New, Courier, monospace;">IF !_AddByPos! GEQ 10 (</span><br /><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _AddCarry=1</span><br /><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET /A _AddByPos-=10</span><br /><span style="font-family: Courier New, Courier, monospace;">) ELSE (</span><br /><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _AddCarry=0</span><br /><span style="font-family: Courier New, Courier, monospace;">)</span><br /><br />What's the difference? The Pi script algorithm is conceptually pretty clever - it takes advantage of the fact that Windows Batch Script's division operator will only return the integer value of a divide operation (i.e. everything to the left of the decimal point in the result). Consequently, if you divide a number between 10-19, inclusively, by 10, you will get 1 instead of 1.1, 1.2, 1.3, and so on. Then, you can use the modulus operator to get the remainder, which, when dividing by 10, would be the lone digit to the right of the decimal point (e.g. 11 %% 10 = 1, 12 %% 10 = 2, and so on).<br /><br />It's also slower.<br /><br />Using my <a href="https://github.com/Oatworm/MathLibrary.cmd/blob/master/UnitTest.cmd" target="_blank">UnitTest.cmd</a> script, which I use to make sure that improvements to the script don't fundamentally break the script, here's the times I got for performing the first 10 addition tests using my method (time elapsed in <b>bold</b>):<br /><br /><span style="font-family: Courier New, Courier, monospace;">01 OK 21:01:50.42 21:01:50.32 <b>0:0:0.10</b></span><br /><span style="font-family: Courier New, Courier, monospace;">02 OK 21:01:50.51 21:01:50.44 <b>0:0:0.7</b></span><br /><span style="font-family: Courier New, Courier, monospace;">03 OK 21:01:50.61 21:01:50.52 <b>0:0:0.9</b></span><br /><span style="font-family: Courier New, Courier, monospace;">04 OK 21:01:50.73 21:01:50.62 <b>0:0:0.11</b></span><br /><span style="font-family: Courier New, Courier, monospace;">05 OK 21:01:50.87 21:01:50.74 <b>0:0:0.13</b></span><br /><span style="font-family: Courier New, Courier, monospace;">06 OK 21:01:51.19 21:01:50.88 <b>0:0:0.31</b></span><br /><span style="font-family: Courier New, Courier, monospace;">07 OK 21:01:51.57 21:01:51.21 <b>0:0:0.36</b></span><br /><span style="font-family: Courier New, Courier, monospace;">08 OK 21:01:52.91 21:01:51.59 <b>0:0:1.32</b></span><br /><span style="font-family: Courier New, Courier, monospace;">09 OK 21:01:55.01 21:01:52.92 <b>0:0:2.9</b></span><br /><span style="font-family: Courier New, Courier, monospace;">10 OK 21:02:05.95 21:01:55.08 <b>0:0:10.87</b></span><br /><br />And here's what I got when I implemented the Pi script algorithm:<br /><br /><span style="font-family: Courier New, Courier, monospace;">01 OK 21:48:31.13 21:48:31.02 <b>0:0:0.11</b></span><br /><span style="font-family: Courier New, Courier, monospace;">02 OK 21:48:31.24 21:48:31.15 <b>0:0:0.9</b></span><br /><span style="font-family: Courier New, Courier, monospace;">03 OK 21:48:31.37 21:48:31.26 <b>0:0:0.11</b></span><br /><span style="font-family: Courier New, Courier, monospace;">04 OK 21:48:31.58 21:48:31.40 <b>0:0:0.18</b></span><br /><span style="font-family: Courier New, Courier, monospace;">05 OK 21:48:31.77 21:48:31.60 <b>0:0:0.17</b></span><br /><span style="font-family: Courier New, Courier, monospace;">06 OK 21:48:32.11 21:48:31.79 <b>0:0:0.32</b></span><br /><span style="font-family: Courier New, Courier, monospace;">07 OK 21:48:32.63 21:48:32.13 <b>0:0:0.50</b></span><br /><span style="font-family: Courier New, Courier, monospace;">08 OK 21:48:34.21 21:48:32.65 <b>0:0:1.56</b></span><br /><span style="font-family: Courier New, Courier, monospace;">09 OK 21:48:37.11 21:48:34.22 <b>0:0:2.89</b></span><br /><span style="font-family: Courier New, Courier, monospace;">10 OK 21:48:50.02 21:48:37.12 <b>0:0:12.90</b></span><br /><br />Note that most of the tests are considerably slower - about 10-20% slower, give or take. Why? Part of the problem is that Windows Batch Script's internal math functions are unevenly implemented - addition and subtraction, which my method uses, is faster than division or the modulus operator. Part of it is that the Pi script algorithm applies the same three steps to all addition operations - add, divide, modulus - while mine oftentimes (especially in the first 10 unit tests, which are solely large number addition with no carry) only uses two operations (add, set), with a third set (subtract by 10) used only when there's a carry operation in play.<br /><br />Ah... but what about that IF statement? Doesn't that count as an operation?<br /><br />It does, actually, which is why my method is only 10-20% faster instead of 33% faster under ideal conditions, which the first ten unit tests simulate nicely. However, every time the Windows Batch Script arithmetic engine is called, it noticeably kills performance. How noticeably? When I first started this script, I intentionally set all of my "integers" using SET /A to help me differentiate in my code between the strings and substrings I was manipulating against actual numbers that Windows Batch Script could manipulate. While working on it, however, I read somewhere that SET /A added a step in the interpreter over just using SET, so I put it to the test and converted all of my SET /A declarations to SET. The result was a 5-10% performance improvement.<br /><br />So there you have it. Like I said, I'm not done fiddling with this - negative number support will be coming to multiplication and division over the next week or two, depending on time and motivation. After that, I'm probably going to mix up the UnitTest script a bit so I can test individual components in a hurry instead of testing <a href="http://hyperboleandahalf.blogspot.com/2010/06/this-is-why-ill-never-be-adult.html" target="_blank">ALL THE THINGS</a> all the time - the multiplication tests in particular really slow me down - and then I'm going to start playing with performance tuning the script as much as possible. Assuming I can get division into something resembling "usable condition" (it takes over 10 seconds to divide 1 by 3), I'll then start implementing a square root subroutine, which will then clear the way for me to get back to work on Project Euler solutions once more.<br /><br />It'll get there, one line at a time. I just have to make this script suck a little bit less each week, that's all. It's a good metaphor for life.</div>David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-65065179370640172962014-12-28T15:04:00.000-08:002014-12-28T15:08:54.437-08:00Rambling about women in STEM<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-jUuDr8mO4Js/VKCM2OsH64I/AAAAAAAACq8/ldlzfAMSbHg/s1600/7336836234_d7bb804ef1_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-jUuDr8mO4Js/VKCM2OsH64I/AAAAAAAACq8/ldlzfAMSbHg/s1600/7336836234_d7bb804ef1_o.jpg" height="266" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.flickr.com/photos/rdecom/7336836234/in/photolist-pb6EQg-cbksLQ-cbkcNs-c1fSuU-cbkhcJ-2vuKD-47R2ts-mdKHUB-9WhgHt-cbkuyo-c1fFGy-8LuaaJ-8LaNTr-8LdTtU-hGNQcX-64b2Ej-92Bik-kvbNKH-7EJYMw-d1iZZw-noZ7WQ-c9ckbb-7bHRv8-5EhqB8-mdKJvg-mdJVnv-5EhnGv-5EmRTm-a6rB4d-2fkEsB-cwK7UN-75SELt-9z3V5b-3Pdpdk-5EhrQr-b9NoDF-8z5JYr-pkVcXj-4myKSw-mdJVHv-88u6Xw-98XNSC-cWcvgy-pMwN5o-8LdUpJ-ofdP9w-dZkXSC-kwGWtG-6Qypbs-mdJVhR" target="_blank">Army scientists energize battery research</a> by <a href="https://www.flickr.com/photos/rdecom/" target="_blank">U.S. Army RDECOM</a> is licensed <a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA 2.0</a>.</td></tr></tbody></table>If this post reads like I'm blowing my nose every paragraph or two, there's a reason for that.<br /><br />Via <a href="http://slatestarcodex.com/2014/12/28/links-1214-auld-link-syne/" target="_blank">Slate Star Codex</a>, I read Scott Aaronson's comment about <a href="http://www.scottaaronson.com/blog/?p=2091#comment-326664" target="_blank">being a shy male geek in a feminist world</a>. Normally I wouldn't post it in its entirety, but it <i>is</i> a comment, and the rest of this post won't make much sense without it; having said that, I encourage everyone to read it in context:<br /><blockquote class="tr_bq">Amy #144: Sorry for the delay in answering you; I had to attend to my grandfather's funeral.<br /><br />You write about tech conferences in which the men engage in "old-fashioned ass-grabbery." You add: "some of the gropiest, most misogynistic guys I've met have been of the shy and nerdy persuasion ... In fact I think a shy/nerdy-normed world would be a significantly worse world for women."<br /><br />If that's been your experience, then I understand how it could reasonably have led you to your views. Of course, other women may have had different experiences.<br /><br />You also say that men in STEM fields--unlike those in the humanities and social sciences--don't even have the "requisite vocabulary" to discuss sex discrimination, since they haven't read enough feminist literature. Here I can only speak for myself: I've read at least a dozen feminist books, of which my favorite was Andrea Dworkin's Intercourse (I like howls of anguish much more than bureaucratic boilerplate, so in some sense, the more radical the feminist, the better I can relate). I check Feministing, and even radfem blogs like "I Blame the Patriarchy." And yes, I've read many studies and task force reports about gender bias, and about the "privilege" and "entitlement" of the nerdy males that's keeping women away from science.<br /><br />Alas, as much as I try to understand other people's perspectives, the first reference to my "male privilege"--my privilege!--is approximately where I get off the train, because it's so alien to my actual lived experience.<br /><br />But I suspect the thought that being a nerdy male might not make me "privileged"--that it might even have put me into one of society's least privileged classes--is completely alien to your way of seeing things. To have any hope of bridging the gargantuan chasm between us, I'm going to have to reveal something about my life, and it's going to be embarrassing.<br /><br />(sigh) Here's the thing: I spent my formative years--basically, from the age of 12 until my mid-20s--feeling not "entitled," not "privileged," but terrified. I was terrified that one of my female classmates would somehow find out that I sexually desired her, and that the instant she did, I would be scorned, laughed at, called a creep and a weirdo, maybe even expelled from school or sent to prison. You can call that my personal psychological problem if you want, but it was strongly reinforced by everything I picked up from my environment: to take one example, the sexual-assault prevention workshops we had to attend regularly as undergrads, with their endless lists of all the forms of human interaction that "might be" sexual harassment or assault, and their refusal, ever, to specify anything that definitely wouldn't be sexual harassment or assault. I left each of those workshops with enough fresh paranoia and self-hatred to last me through another year.<br /><br />My recurring fantasy, through this period, was to have been born a woman, or a gay man, or best of all, completely asexual, so that I could simply devote my life to math, like my hero Paul Erdös did. Anything, really, other than the curse of having been born a heterosexual male, which for me, meant being consumed by desires that one couldn't act on or even admit without running the risk of becoming an objectifier or a stalker or a harasser or some other creature of the darkness.<br /><br />Of course, I was smart enough to realize that maybe this was silly, maybe I was overanalyzing things. So I scoured the feminist literature for any statement to the effect that my fears were as silly as I hoped they were. But I didn't find any. On the contrary: I found reams of text about how even the most ordinary male/female interactions are filled with "microaggressions," and how even the most "enlightened" males--especially the most "enlightened" males, in fact--are filled with hidden entitlement and privilege and a propensity to sexual violence that could burst forth at any moment.<br /><br />Because of my fears--my fears of being "outed" as a nerdy heterosexual male, and therefore as a potential creep or sex criminal--I had constant suicidal thoughts. As Bertrand Russell wrote of his own adolescence: "I was put off from suicide only by the desire to learn more mathematics."<br /><br />At one point, I actually begged a psychiatrist to prescribe drugs that would chemically castrate me (I had researched which ones), because a life of mathematical asceticism was the only future that I could imagine for myself. The psychiatrist refused to prescribe them, but he also couldn't suggest any alternative: my case genuinely stumped him. As well it might--for in some sense, there was nothing "wrong" with me. In a different social context--for example, that of my great-grandparents in the shtetl--I would have gotten married at an early age and been completely fine. (And after a decade of being coy about it, I suppose I've finally revealed the meaning of this blog's title.)<br /><br />All this time, I faced constant reminders that the males who didn't spend months reading and reflecting about feminism and their own shortcomings--even the ones who went to the opposite extreme, who engaged in what you called "good old-fashioned ass-grabbery"--actually had success that way. The same girls who I was terrified would pepper-spray me and call the police if I looked in their direction, often responded to the crudest advances of the most Neanderthal of men by accepting those advances. Yet it was I, the nerd, and not the Neanderthals, who needed to check his privilege and examine his hidden entitlement!<br /><br />So what happened to break me out of this death-spiral? Did I have an epiphany, where I realized that despite all appearances, it was I, the terrified nerd, who was wallowing in unearned male privilege, while those Neaderthal ass-grabbers were actually, on some deeper level, the compassionate feminists--and therefore, that both of us deserved everything we got?<br /><br />No, there was no such revelation. All that happened was that I got older, and after years of hard work, I achieved some success in science, and that success boosted my self-confidence (at least now I had something worth living for), and the newfound confidence, besides making me more attractive, also made me able to (for example) ask a woman out, despite not being totally certain that my doing so would pass muster with a committee of radfems chaired by Andrea Dworkin--a prospect that was previously unthinkable to me. This, to my mind, "defiance" of feminism is the main reason why I was able to enjoy a few years of a normal, active dating life, which then led to meeting the woman who I married.<br /><br />Now, the whole time I was struggling with this, I was also fighting a second battle: to maintain the liberal, enlightened, feminist ideals that I had held since childhood, against a powerful current pulling me away from them. I reminded myself, every day, that no, there's no conspiracy to make the world a hell for shy male nerds. There are only individual women and men trying to play the cards they're dealt, and the confluence of their interests sometimes leads to crappy outcomes. No woman "owes" male nerds anything; no woman deserves blame if she prefers the Neanderthals; everyone's free choice demands respect.<br /><br />That I managed to climb out of the pit with my feminist beliefs mostly intact, you might call a triumph of abstract reason over experience.<br /><br />But I hope you now understand why I might feel "only" 97% on board with the program of feminism. I hope you understand why, despite my ironclad commitment to women's reproductive choice and affirmative action and women's rights in the developing world and getting girls excited about science, and despite my horror at rape and sexual assault and my compassion for the victims of those heinous crimes, I might react icily to the claim--for which I've seen not a shred of statistical evidence--that women are being kept out of science by the privileged, entitled culture of shy male nerds, which is worse than the culture of male doctors or male filmmakers or the males of any other profession. I believe you guys call this sort of thing "blaming the victim." From my perspective, it serves only to shift blame from the Neanderthals and ass-grabbers onto some of society's least privileged males, the ones who were themselves victims of bullying and derision, and who acquired enough toxic shame that way for appealing to their shame to be an effective way to manipulate their behavior. As I see it, whenever these nerdy males pull themselves out of the ditch the world has tossed them into, while still maintaining enlightened liberal beliefs, including in the inviolable rights of every woman and man, they don't deserve blame for whatever feminist shortcomings they might still have. They deserve medals at the White House.<br /><br />And no, I'm not even suggesting to equate the ~15 years of crippling, life-destroying anxiety I went through with the trauma of a sexual assault victim. The two are incomparable; they're horrible in different ways. But let me draw your attention to one difference: the number of academics who study problems like the one I had is approximately zero. There are no task forces devoted to it, no campus rallies in support of the sufferers, no therapists or activists to tell you that you're not alone or it isn't your fault. There are only therapists and activists to deliver the opposite message: that you are alone and it is your privileged, entitled, male fault.<br /><br />And with that, I guess I've laid my life bare to (along with all my other readers) a total stranger on the Internet who hasn't even given her full name. That's how much I care about refuting the implied charge of being a misogynistic pig; that's how deeply it cuts.<br /><br />You could respond to this, I guess, by treating me as just another agent of the Patriarchy trying at length to "mansplain away" his privilege. If you do that, then I'll consider this discussion closed, as neither of us will have anything more to learn from the other. But you seem like an interesting, reasonable person, so I hold out some hope for a human response.</blockquote>Being a relatively shy male geek myself, I can certainly sympathize. Thankfully - though I certainly didn't see it that way when I was younger - I "came of age" in a comparatively rural, socially conservative area that just flat out didn't have time for such musings; if I was a teenager in a major urban area, I'm not sure I would have turned out all <i>that</i> differently, but, given the right inputs, I could see having some of the same concerns voiced by Scott above. I was being raised in Southern California, after all, until we made the move to Nevada in the mid-'90s.<br /><br />That's not what I want to write about, though.<br /><br />Let's flip the script around. Imagine you're a woman - there's about a 50/50 chance you're one already, so this probably won't be a tremendous leap of imagination. Let's further imagine that you're a young, reasonably attractive woman - this might take a bit more imagination, depending on your present circumstances, but work with me. Now, imagine you meet Scott before he gets himself established. What would that be like? If I had to hazard a guess, "cold" would be the first adjective that would come to mind. He probably wouldn't say much - if he found you attractive, it sounds like he'd be deathly afraid to say much of anything at all, lest he get labeled as a 'creeper' or something similar. So, he'll try to keep it professional to a fault, saying as little as possible and focusing solely on whatever is necessary to meet whatever academic or financial need brought you two together. Idle chitchat, needless to say, would be virtually impossible with him under these circumstances.<br /><br />I know this because I've <i>done</i> this.<br /><br />How pleasant would that interaction be? How much would you look forward to going to work with someone that was consistently cold and professional to a fault? Now, imagine if Scott wasn't the only one - what if, say, a third of the guys you meet in this field are like that with you? Or half? Or more? Could you imagine working in a world where at least one out of every three people you meet treat you like a particularly temperamental computer terminal, deathly afraid to say the wrong thing to you lest you 'crash'? Bear in mind that these guys won't just be coldly professional, either - a lot of them will be damned annoyed and angry with themselves for not being able to relax around you. What are their faces looking like? Are they wearing their anger and self-hostility on their sleeves?<br /><br />You bet your ass they are.<br /><br />Of course, this behavior doesn't just get directed in your direction - you also notice that it's being presented to every other young woman that walks in. Here's the kicker, though - if you're one of the women in those rooms full of men treating you and your fellow women with thinly-disguised contempt, you're not thinking, "Wow, these guys really don't know how to handle themselves around a young woman and really hate themselves for it." You're thinking, "Wow, <i>these guys really hate women.</i>"<br /><br />Which, to be fair, they kind of do.<br /><br />At this point, if you're a young woman, you have a couple of choices. If you really like the field, you might stay in, shrug, and try to understand some of these guys. Who knows - maybe as you get older and less physically intimidating, some of these guys might mellow out a bit. If you don't - and, in your formative years, you probably don't like much of <i>anything</i> near enough to really suffer for it - you're going to find something else to pursue, like <a href="http://womensenews.org/story/economyeconomic-policy-labor/120526/wage-gap-womens-median-wages-compared-mens-in-the-same#.VKBwkADA" target="_blank">teaching or nursing</a> - something that doesn't leave you surrounded by people that treat you with cold disdain and contempt.<br /><br />Not surprisingly, most women will pick the latter option.<br /><br />Now let's fast-forward a few decades. If most women pick the latter option, there will be fewer women in that field where a high proportion of cold, distant, somewhat hateful guys are located. This will cause a lot of somewhat better adjusted young men (well, at least around women), to reconsider their career choices as well - do they want to be surrounded by a bunch of depressed, anxious guys that treat women with thinly-veiled contempt, or would they rather do <i>just about anything else</i>? And lo, the business school receives another application. Meanwhile, the proportion of near-violently shy males to halfway normal, socially adjusted people in our hypothetical field adjusts just a little further to the shy. <br /><br />Congratulations - we've just created a negative feedback loop. <a href="http://slatestarcodex.com/2014/12/17/the-toxoplasma-of-rage/" target="_blank">Moloch</a> would be proud.<br /><br />So, the question becomes, what do we do about this? It's obviously not in anyone's best interests - not the women, not the halfway normal men, <i>especially </i>not even in the interests of shy male geeks - to let this continue. If we do, several of our STEM fields, the vast majority of IT, and so on will be dominated by a bunch of shy, maladjusted men that can barely handle themselves, much less each other. If you think a lot of positive collaboration is going on in that environment, you're nuts. Do you think a room full of insecure people are going to reliably share credit with each other? Do you think a room full of insecure people are going to make bold, daring decisions with the possibility that they might be wrong? More importantly, do you think a room full of insecure people are going to talk themselves out of being insecure, or are they just going to share various anecdotes that reinforces everyone's insecurities?<br /><br />And lo, Men's Rights Activists were borne.<br /><br />Now that we've identified the problem, how do we fix it? It's not going to be easy - for whatever reason, our current society is effectively designed to sort everyone into narrow microcultures that get increasingly self-selecting and self-serving. Heck, the bulk of our modern information infrastructure is built by a <a href="http://carlos.bueno.org/2014/06/mirrortocracy.html" target="_blank">particularly idiosyncratic</a> and <a href="http://www.eastbayexpress.com/oakland/the-bacon-wrapped-economy/Content?oid=3494301" target="_blank">notoriously</a> <a href="http://www.zdnet.com/article/coding-is-not-enough-silicon-valley-startups-need-to-get-out-and-sell-says-top-investor/" target="_blank">insular</a> <a href="http://www.sfgate.com/opinion/article/Silicon-Valley-barriers-not-lack-of-skills-5631484.php" target="_blank">microculture</a>. So how do we get past it?<br /><br />One possible solution that <i>really</i> doesn't seem to be working is <a href="http://butyoureagirl.com/2013/03/18/forking-and-dongle-jokes-dont-belong-at-tech-conferences/" target="_blank">ostracizing people whenever they say something we don't like</a>. Whether you're talking about programming conferences or <a href="http://money.cnn.com/2014/04/03/technology/mozilla-ceo/" target="_blank">tech CEOs</a>, branding people with Scarlet Letters of Shame that guarantee the denial of future employment forever and <i>ever</i> is just going to guarantee that everyone else is going to get increasingly cliquish and defensive. Sure, those insensitive Python programmers lost their jobs because of a bad joke, but do you think tech companies are more or less likely to bring someone in from the outside that might take offense to their "in jokes" after that? With Brendan Eich out, are we more or less likely to have homogeneous political views at the workplace, and what will that mean? If you're a startup led by politically conservative people - like, say, Paypal - are you going to take a risk, bring someone in from the other side of the spectrum, and hope they don't make a big stink on the TV when they disagree with you? Or are you going to raise the drawbridge and put people through various loosely scheduled social activities to check for "cultural fit"?<br /><br />Oh. Right.<br /><br />Besides, having one microculture point fingers at other microcultures and start chest-thumping about how they're <i>soooo</i> much smarter and <i>soooo</i> much more enlightened than the other microcultures won't break any barriers - on the contrary, that sort of behavior is explicitly designed to <i>reinforce</i> them. If we actually want to avoid STEM and their related fields from becoming yet another self-referential microculture dominated by a very self-selective group of people with very particular personalities, we need to encourage people to get together and talk to one another. This means accepting that some people have interests that we don't necessarily share and <i>that's okay</i>. This means accepting that some people laugh about things that other people don't find funny and <i>that's okay</i>[<a href="https://www.blogger.com/blogger.g?blogID=612052649872821494#1">1</a>]. In a lot of ways, it sometimes feel like our grandparents (or parents, or great-grandparents, depending on how old you are) understood this better than we do now, if only because they had to work together with people from different backgrounds to get through the Great Depression and World War 2.<br /><br />The good news is all hope is not lost. There are still quite a few women in STEM, and still quite a few men who aren't interested in letting STEM settle into a morass of anxious depression and sexually frustrated rage. Wired recently had an article <a href="http://www.wired.com/2014/12/nerd-cruise/" target="_blank">about the JoCo Cruise Crazy</a> that I can't recommend highly enough, which detailed the outgoing-almost-to-a-fault attitude of the Sea Monkeys, along with the awkward behavior of some of the guys. Amazingly, everyone survived and had a good time and nobody had to walk the plank. Everybody more or less met each other halfway, learned where everyone else's boundaries were, found a thing or two in common to bond over, and made it work. We need a lot more of that right now, in STEM and in life. <br /><br />**********<br /><a href="https://www.blogger.com/null" name="1">1</a>. That <a href="http://afv.com/" target="_blank">AFV</a> is still a thing in the age of YouTube is absolutely mesmerizing to me, but I'm not going to laugh at anyone that watches it. David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0tag:blogger.com,1999:blog-612052649872821494.post-70474401681129881312014-12-07T00:11:00.000-08:002014-12-07T00:11:20.826-08:00Thoughts on Windows Scripting<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-VxtrdW9OQSw/VIP1EufZSnI/AAAAAAAACqs/nakqTuUMrmg/s1600/BatchScript.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-VxtrdW9OQSw/VIP1EufZSnI/AAAAAAAACqs/nakqTuUMrmg/s1600/BatchScript.png" height="275" width="400" /></a></div><br />For the past few weeks, I haven't been posting much because my attention has been diverted elsewhere. The picture above is a little sneak preview of what I've been working on, which is related to <a href="http://blog.colbornemmx.com/search/label/Project%20Euler" target="_blank">my previous efforts</a> in solving <a href="https://projecteuler.net/" target="_blank">Project Euler</a> problems using Windows batch script - it's <i>almost</i>&nbsp;ready for me to share with the world (though, if you look around, you'll find it since I have it hosted publicly in the cloud), though there are a few i's I'd like to dot and a few t's I'd like to cross before I really promote this thing.<br /><br />And what a thing it is! But I'm not ready to talk about it just yet.<br /><br />Instead, I would like to talk about the general topic of Windows scripting. For years, my attention has been focused on small business IT - in that environment, there's a limited amount of automation available to the IT professional, at least as long as the customer is hosting their own equipment. Though a clever IT shop can probably find <i>some </i>way to leverage tools like <a href="http://puppetlabs.com/" target="_blank">Puppet</a> and <a href="https://www.chef.io/chef/" target="_blank">Chef</a> to make on-site deployments more consistent, it's a little difficult to avoid treating <a href="http://www.theregister.co.uk/2013/03/18/servers_pets_or_cattle_cern/" target="_blank">servers like pets instead of cattle</a> when each "farm" only has one or two "cattle" and the "farmers" don't like to share (to stretch the already overwrought metaphor a bit). In that environment, the limited nature of old-school Windows batch scripting - a language that traces its lineage all the way back to the early days of DOS - wasn't immediately apparent. Oh sure, there was the occasional heated discussion over whether it was more intuitive to suffer through <a href="http://ss64.com/nt/rundll32.html" target="_blank">RUNDLL32</a>'s myriad flags and byzantine syntax, or through VBScript's ridiculously verbose but at least <i>sort</i>&nbsp;of intelligible at a glance <a href="http://ss64.com/vb/addprinter.html" target="_blank">AddPrinterConnection</a> method, or to just give up entirely and use <a href="http://www.kixtart.org/" target="_blank">KiXtart</a>, but the results usually didn't matter all that much in the end. By the time you were done writing a script, testing it, and rolling it out, most scripts just weren't <a href="http://xkcd.com/1205/" target="_blank">worth the time</a>. So, every client would have a script or two with some "NET USE" commands, some clients with more dedicated IT professionals might have a slightly more complicated batch script with a <a href="http://en.wikipedia.org/wiki/Control_flow" target="_blank">control structure</a> in it (I was <i>notorious</i>&nbsp;about this, though not near as notorious as some of my coworkers) and that was pretty much it. In our context, <a href="http://technet.microsoft.com/en-us/scriptcenter/powershell.aspx" target="_blank">PowerShell</a> was observed, tried out, and then promptly ignored as much as humanly possible - it took more typing than CMD, we couldn't count on it being on every machine we wanted to automate (it wasn't installed by default until Windows 7/Server 2008 R2), and it didn't do anything we weren't already doing for ourselves.<br /><br />These days, though, I'm dealing with a somewhat larger environment. It's still not large enough to really see the benefits of PowerShell firsthand - we're talking about less than ten servers, virtual or otherwise, and approximately 250 PCs, more or less - but it's big enough where I can certainly imagine what a larger environment would look like and some of the challenges I would have keeping things halfway consistent and manageable. That's part of the reason I've been doing the Project Euler exercises in the first place - at some point, my scripting chops will need to be ready for a larger environment. While working on my exercises, though, I've run into some pretty serious difficulties - difficulties I've been able to overcome, mind you, but ones that definitely show that CMD is, shall we say, <i>a product of its time</i>:<br /><br /><ul><li>CMD can't math. No, seriously, ask it what 2/3 is:<br /><br /><span style="font-family: Courier New, Courier, monospace;">set /a _test=2/3<br />0</span><br /><br />That's right - no floating point support. Decimals aren't a thing in CMD, and neither is rounding. &nbsp;</li><li>CMD's roots as a scripting language cutting its teeth in the heyday of BASIC really show. Functions are <i>kind</i>&nbsp;of a thing, if you're <a href="http://ss64.com/nt/syntax-functions.html" target="_blank">sort of creative about it</a>, but it's pretty clear that they were bolted on well after the fact. There's exactly <a href="http://ss64.com/nt/for.html" target="_blank">one loop structure</a> - if you want a do/while loop, you're going to have to get creative with <a href="http://ss64.com/nt/goto.html" target="_blank">GOTO</a>s and labels.&nbsp;</li><li><a href="http://ss64.com/nt/delayedexpansion.html" target="_blank">Delayed Expansion</a> makes a lot of things possible - without it, I don't think I could functionally use a FOR loop or an IF statement in my Project Euler code. That doesn't mean it makes things <i>easy</i>, though. Divining the pattern between "the interpreter will interpret this as it's happening by default" and "the interpreter will just read ahead and only parrot back what the results will be after that loop is done" (General rule - if what you're doing happens between parenthesis, you probably want Delayed Expansion if you're used to any other programming language <i>ever</i>) is a royal pain.</li><li>You know what's awesome? When you can do things like this:<br /><br /><span style="font-family: Courier New, Courier, monospace;">set /a _test=2000000000^2</span><br /><br />And you get a result like this:<br /><span style="font-family: Courier New, Courier, monospace;">Invalid number. Numbers are limited to 32-bits precision.</span><br /><br />But if you do something like this:<br /><br /><span style="font-family: Courier New, Courier, monospace;">set /a _test=2000000000*2</span><br /><br />You end up with this:<br /><span style="font-family: Courier New, Courier, monospace;">-294967296</span><br /><br />Neat, huh? I agree, Microsoft - consistent error checking is for chumps.</li><li>Arrays? They don't exist. No, really - they don't. Except... if you're really creative... and abuse Delayed Expansion a bit... you can <i>kind</i>&nbsp;of fake them, as long as you're only querying their values in a FOR loop. See, if you try to trick the interpreter out by doing something like:<br /><br /><span style="font-family: Courier New, Courier, monospace;">SET _test0=Foo<br />SET _zero=0<br /><br />ECHO:%_test%%_zero%</span><br /><br />You'll just get <span style="font-family: Courier New, Courier, monospace;">0</span> because it'll attempt to extract the value of <span style="font-family: Courier New, Courier, monospace;">_test</span> (which doesn't exist), then the value of <span style="font-family: Courier New, Courier, monospace;">_zero</span> (which is <span style="font-family: Courier New, Courier, monospace;">0</span>). However, if you do something like this:<br /><br /><span style="font-family: Courier New, Courier, monospace;">FOR /L %%G IN (0,1,0) DO (<br />ECHO:!_test%%G!<br />)</span><br /><br />It'll actually work, resolve <span style="font-family: Courier New, Courier, monospace;">%%G</span> first, then resolve everything between the exclamation points as one variable. Spooky, eh? If it helps, the rest of CMD's syntax is <i>every bit this consistent</i>.</li><li>I don't expect a scripting language to have a firm type casting system - quite the contrary, in fact. However, CMD's is particularly... interesting. For example, let's say you want to calculate the elapsed time between the start and end of a script. Easy enough:</li></ul><span style="font-family: Courier New, Courier, monospace;">SET _TimeStart=%time%<br />CALL RandomScript.bat<br />SET _TimeEnd=%time%<br /><br />FOR /F "tokens=1-4 delims=:." %%G IN ("%_TimeStart%") DO (<br />SET _HStart=%%G<br />SET _MStart=%%H<br />SET _SStart=%%I<br />SET _mSStart=%%J<br />)<br /><br />FOR /F "tokens=1-4 delims=:." %% K IN ("%_TimeEnd%") DO (<br />SET _HEnd=%%K<br />SET _MEnd=%%L<br />SET _SEnd=%%M<br />SET _mSEnd=%%N<br />)<br /><br />SET /A _mSElapsed=_mSEnd-_mSStart</span><br /><span style="font-family: Courier New, Courier, monospace;"><br />:: Insert conditional to handle occasions where _mSElapsed is negative because the script took longer than a second or it started near the end of a second.</span><br /><span style="font-family: Courier New, Courier, monospace;"><br />SET /A _SElapsed=_SEnd-_SStart<br />:: Insert conditional... etc.<br />...</span><br /><br />And so on. Well, if you tried to write the script like that and ran it, two things would happen:<br /><div><ol><li>Your failure to use Delayed Expansion when you called the <span style="font-family: Courier New, Courier, monospace;">%time%</span> variable would result in the script always returning 0 since it would only query the value of <span style="font-family: Courier New, Courier, monospace;">%time%</span> once - at the <i>end</i>&nbsp;of the script.</li><li>If any the time blocks (HH:MM:SS.MS) have a zero at the start (say, 12:09:14.54 - _MWhatever would equal "09"), CMD won't interpret the result as "9" when you ask it to do some math against it. <i>Oh no</i>. Instead... well, I'll just let Microsoft explain this one:<br /><br /><span style="font-family: Courier New, Courier, monospace;">Numeric values are decimal numbers, unless prefixed by 0x for hexadecimal numbers, and 0 for octal numbers. So 0x12 is the same as 18 is the same as 022. Please note that the octal notation can be confusing: 08 and 09 are not valid numbers because 8 and 9 are not valid octal digits.</span><br /><br />That's right - "09" suddenly becomes 9-base-8, which seriously doesn't exist and will lead to some <i>fascinating</i>&nbsp;results.</li></ol><div>So, you end up writing a bunch of code like this to convince SET to, no, seriously, save the damned number as a <i>base-10</i>&nbsp;number, please and thank you very much:</div></div><div><br /></div><div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_HEnd:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _HEnd=%_HEnd:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_MEnd:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _MEnd=%_MEnd:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_SEnd:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _SEnd=%_SEnd:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_mSEnd:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _mSEnd=%_mSEnd:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div><span class="Apple-tab-span" style="white-space: pre;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_HStart:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _HStart=%_HStart:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_MStart:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _MStart=%_MStart:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_SStart:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _SStart=%_SStart:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IF %_mSStart:~0,1% EQU 0 (</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>SET _mSStart=%_mSStart:~1,1%</span></div><div><span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span></div></div><div><br /></div><div>For those playing along at home, that's just a series of statements that say, if the first character in the variable is a zero, throw that zero in the trash can and just keep the last number.&nbsp;</div><div><br /></div><div>Yeah. Now imagine having a thousand or so servers to manage and putting up with this. Given the utter lack of responsible error handling and the head-scratching syntax parsing, it's only a matter of time before somebody writes a script that they <i>think</i>&nbsp;checks a system's MAC address in a text file somewhere and uses <span style="font-family: Courier New, Courier, monospace;"><a href="http://ss64.com/nt/netsh.html" target="_blank">netsh</a> </span>to assign an IP address and computer name based on that MAC address, only to have it assign the same IP address to every system or just refuse to properly parse a MAC address' delimiters in some weird corner case that magically converts it into octal or hexadecimal or base 23.7 or Roman numerals or the numbering system of Mayan moisture evaporators or something. Compared to this, <a href="http://en.wikipedia.org/wiki/Bash_(Unix_shell)" target="_blank">bash</a> and its ilk must have seemed like a revelation to anyone even slightly seriously interested in server automation. This doesn't even get into how there are several corners of Windows that are virtually impossible to get to via CMD unless you feel like directly editing registry values with <a href="http://ss64.com/nt/reg.html" target="_blank">REG</a> (given everything covered so far, what could <i>possibly </i>go wrong?) or you feel like stepping into the <a href="http://ss64.com/vb/drivemap.html" target="_blank">object-oriented nightmare that is VBScript</a>[<a href="https://www.blogger.com/blogger.g?blogID=612052649872821494#1">1</a>]. Something needed to be done. Windows needed a proper, honest-to-goodness scripting language that acknowledged some progress in interpreted languages had been made since the first term of the Reagan administration.<br /><br />I'm glad Microsoft took care of that, even if it's still something that remains mostly tangential to my day-to-day administration experience. For now.<br /><br />*****</div><div><a href="https://www.blogger.com/null" id="1">1</a>. That five line example right there in CMD turns into:<br /><br /></div><div><span style="font-family: Courier New, Courier, monospace;">NET USE H: \\myserver\users /PERSISTENT:NO</span><br /><span style="font-family: Courier New, Courier, monospace;"><br /></span><span style="font-family: inherit;">And my former coworkers wondered why I preferred CMD, even with its flaws.</span></div>David Colbornehttp://www.blogger.com/profile/03617582541558637856noreply@blogger.com0