<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Text and Hubris]]></title><description><![CDATA[Reflections on life, technology, media, rhetoric, and the craft of writing.]]></description><link>http://textandhubris.com/</link><image><url>http://textandhubris.com/favicon.png</url><title>Text and Hubris</title><link>http://textandhubris.com/</link></image><generator>Ghost 2.0</generator><lastBuildDate>Tue, 21 Aug 2018 20:40:12 GMT</lastBuildDate><atom:link href="http://textandhubris.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[How to Contact and Comment]]></title><description><![CDATA[<p>In my last post, I talked about why I block comments on most media sites. You might have noticed that I don't have comments here, either. I know I only have a few readers (at best), and most of the comments I have received have been helpful and constructive. I</p>]]></description><link>http://textandhubris.com/2018/08/16/how-to-contact-and-comment/</link><guid isPermaLink="false">5b7473c3f9707548b89f62a8</guid><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Thu, 16 Aug 2018 12:00:00 GMT</pubDate><content:encoded><![CDATA[<p>In my last post, I talked about why I block comments on most media sites. You might have noticed that I don't have comments here, either. I know I only have a few readers (at best), and most of the comments I have received have been helpful and constructive. I don't really need to block comments, but the truth is that I don't find comment communication constructive or helpful. Most of the time, it becomes a chore where I monitor comments for automated spam. That's the problem with a comment system. It encourages low-effort interactions that don't tend to create any lasting connection. I don't want that on my site.</p>
<p>If you have do have a constructive question or a comment, please feel free to <a href="mailto:geoff.gimse@protonmail.com">email</a> me. I like email because it remains in my email. I have a really high level of control, and email is deliberately, obviously, asynchronous. I am allowed to read, process and respond without fear of additional comments or explosions that derail entire conversations. In short, we can actually communicate. In the same way, that control means I don't need to respond to trolls in my email. At worst, I click block and delete and no one who reads this site needs to see any of that. The troll loses it public opportunity via my platform.</p>
<p>To be fair, you can also reach me via social media (links are on the side). Odds are, though, that if a conversation is going to evolve it will happen over email.</p>
]]></content:encoded></item><item><title><![CDATA[The Internet is More than Social Media]]></title><description><![CDATA[<p>I wanted to take a moment to talk about Brian Chen's article, &quot;<a href="https://www.nytimes.com/2018/08/08/technology/personaltech/internet-trolls-comments.html">The Internet Trolls Have Won. Sorry, There’s Not Much You Can Do.</a>&quot; in the New York Times.  It's an interesting piece for a lot of reasons, and I like a lot of what Brian and</p>]]></description><link>http://textandhubris.com/2018/08/15/internet-more-than-social-media/</link><guid isPermaLink="false">5b7315c6f9707548b89f629f</guid><category><![CDATA[rhetoric]]></category><category><![CDATA[technology]]></category><category><![CDATA[digital humanities]]></category><category><![CDATA[digital rhetoric]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Wed, 15 Aug 2018 18:15:49 GMT</pubDate><content:encoded><![CDATA[<p>I wanted to take a moment to talk about Brian Chen's article, &quot;<a href="https://www.nytimes.com/2018/08/08/technology/personaltech/internet-trolls-comments.html">The Internet Trolls Have Won. Sorry, There’s Not Much You Can Do.</a>&quot; in the New York Times.  It's an interesting piece for a lot of reasons, and I like a lot of what Brian and Dr. Papacharissi have to say. That said, I have trouble with an approach that accepts the status quo as inevitable; especially, when that acceptance helps to normalizes a reliance on corporate governance as the only possible way to fix the internet and networked communications.</p>
<p>Chen isn't wrong. His article just appears assumes there is only one option, to continue using and relying on the problematic platforms developed by those corporations and hope they &quot;fix&quot; it for us. They won't. The Internet trolls have &quot;won&quot; because the corporations that drive modern social media platforms make a ton of money off those trolls (see my <a href="https://textandhubris.com/2018/06/09/steams-slush-pile-policy/">Valve discussion</a> for more on that). Until they stop making money (this is something that Facebook may actually be grappling with) the trolls will win. Of course, they only win on those platforms.</p>
<p>If you rely on those platforms, you're sunk. So you have a choice, you can wait for these social media companies to do something or, and apparently this is a radical thought, maybe you should choose to stop relying<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> on those platforms. Reddit and Twitter aren't necessary. Facebook certainly isn't necessary. None of the current social media platforms are required for you to communicate and share with an audience. In fact, I would argue they probably are not very valuable unless you really want to be advertising. After all, that is what they were designed to do. Social media platforms are <em>not</em> for communication, they are for advertising. We as social media users should treat them as such, and nothing more.</p>
<p>This is, in part, why I get so frustrated with the current &quot;the internet is revolutionary&quot; refrain that so dominates digital rhetoric especially when uttered in the same sentence as social media. The internet can be revolutionary, social media is regressive. Social media is (and Chen notes this in the article) just interactive mass media. It's talk radio and call-in TV. I think Chen frames this really well by quoting Dr. Zizi Papacharissi<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>:</p>
<blockquote>
<p>Given the way things are going, our faith in the internet may erode until we distrust it as much as we do TV news.</p>
</blockquote>
<p>I agree, except that we are not talking about the internet we're talking about private, corporate, social media sites and companies. They aren't trustworthy. They never were. We shouldn't trust them any more than we used to trust the crazy guy talking on Art Bell. When we reduce the internet to these platforms, we create an expectation that there are no other options. There are, and there always have been. Honestly, those options are doing fine<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>.</p>
<p>Dr. Papacharissi's suggestions at the end of the article are absolutely on point, but I would add one more - become your own curator. Don't rely on social media to supply information and engagement. Seek out content and (whenever possible) engage with it on independent sites, develop your own filters, and decide what you will and will not view. For example, I use a custom filter on <a href="https://github.com/gorhill/uBlock/">Ublock Origin</a> to block Youtube comments. Why? Because the comments don't matter, I'm there for the creator<sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup>. You wouldn't believe how much nicer my Youtube experience has been since I removed those comments.</p>
<p>Ultimately, the trolls aren't winning. They're trolls. Every troll victory is pyrrhic at best. Platforms that encourage and support them ultimately die taking the trolls with them (looking at you Twitter). The internet is going to be just fine<sup class="footnote-ref"><a href="#fn5" id="fnref5">[5]</a></sup>. It's an internet. A lot of platforms that use the internet are pretty terrible right now. That's okay. A Papacharissi says in the article, we haven't really learned how to use these technologies well. Social media is just an attempt to glue an older, more centralized model of mass media into this communicative space.</p>
<p>That will change.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Note I didn't say do not use social media. Use social media all you want. Make it work for you, but don't rely on it and don't pretend that the platforms care one bit about you, your privacy, or your well-being. As we have seen people start doing, be able and willing to shut it off. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Just a note to say that Dr. Zizi Papacharissi is an incredible scholar whose work is a must read for anyone interested in this topic. I think she shows up twice in my comps reading list and while I haven't referenced her in my dissertation, yet, it is only a matter of time. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>In part because those options are semi-permeable or completely locked down. Filters are NOT a bad thing (but that is another post/article). <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>Netflix realized this, that's why the pointless rating and review section of the site was finally completely removed on July 30th. <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn5" class="footnote-item"><p>The only real risk to the internet is the removal of net neutrality, but even that has options for creating change and pushing us to develop new networks not connected or own by the current network provider Oligopoly (I really hope). <a href="#fnref5" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded></item><item><title><![CDATA[Media Overflow]]></title><description><![CDATA[We cannot hope to keep up with all the available media in an always-on world. Rather than disconnect, I suggest we think about ways to take back our technology to self-select our content, reduce the amount that we consume, and focus on content and community over quantity.]]></description><link>http://textandhubris.com/2018/06/28/media-overflow/</link><guid isPermaLink="false">5b33f99fb489fb0707f831f4</guid><category><![CDATA[rhetoric]]></category><category><![CDATA[reflection]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Thu, 28 Jun 2018 14:00:00 GMT</pubDate><content:encoded><![CDATA[<p>I spend a lot of time in front of a screen. I am betting most of us do.</p>
<p>We're connected in some really incredible ways to a world of movement and information. The trouble is we have an overload. We know this. We've known for a long while, and yet we're addicted to that same overload.</p>
<p>We're gluttons for media, we crave input. We are children of the screen. Technology and media companies know exactly how to feed our hunger. They use it to keep drawing us back in, and by god do we keep coming back. Media saturation is our favored drug, and we suck it up wherever we can.</p>
<p>Should we turn it off, then? No. I'm not suggesting we disconnect. Our technology may not be politically neutral, but there are ways to tactically appropriate its power. We need to exploit those ways. Sometimes, indeed many times, this always-on connection can be a benefit. We can act and respond faster. We can connect with one another. We can plan and gather needed information in ways we never could have before. What I am suggesting is that we actually get tactical. We consider our consumption pattern and we reduce and focus.</p>
<p>It's that focus we keep losing. We can't keep up, but we want to try. We are desperate to try. There is just so much out there.</p>
<p>This month has been hell. The constant of stream of news has been draining. We've seen horror after horror streaming in a near constant flow. If we look away, we feel guilty. So we watch and we rage. Then in response, and out of emotional exhaustion, we gather ourselves around other media. We escape into fantasies and comedy. We seek to forget, laugh, or find something to take us away from the hurt and the pain. The reality is that the horrors we are facing are real. They have been for a very long time. We're not doing any good watching in stunned silence. We're not doing any good obsessing. Yes, we need to fight what we can and do what we can to resist. This is not the way, though.</p>
<p>Resistance is not consumption. Do you need more news to tell you how horrible this regime is? Do you need more evidence? It's okay to turn it off. It is okay to walk away.</p>
<p>Resistance requires focus and attention not on the news but each other. Technology can help with that, but technology is not limited to Facebook or the New York Times or Google. Technology is that machine in your house. You own it and you have the power to control it. You can tell it where to go and where not to go. Start making decisions about what you read and watch. If an algorithm feeds it to you, you still have a choice<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. You don't have to click. You're not missing much, I promise.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>After all, you're already reading this, so you made one good choice! <i class="fal fa-smile-wink"></i> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded></item><item><title><![CDATA[Butterflies Along The Eagle Segment]]></title><description><![CDATA[<div class="kg-card-markdown"></div>]]></description><link>http://textandhubris.com/2018/06/26/butterflies-along-the-eagle-segment/</link><guid isPermaLink="false">5b32fafab489fb0707f831f1</guid><category><![CDATA[_overlay]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Wed, 27 Jun 2018 02:48:38 GMT</pubDate><media:content url="http://textandhubris.com/content/images/2018/06/IMG_20180623_093920.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"></div>]]></content:encoded></item><item><title><![CDATA[Linux Game Troubleshooting: Unable to find a supported OpenGL core profile.]]></title><description><![CDATA[Continued adventures in application troubleshooting aka using `strace` in the most brute force sort of way.]]></description><link>http://textandhubris.com/2018/06/11/unable-to-find-opengl-profile/</link><guid isPermaLink="false">5b1bec95ec4c2b6f506051e1</guid><category><![CDATA[linux]]></category><category><![CDATA[open source]]></category><category><![CDATA[technology]]></category><category><![CDATA[how-to]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Mon, 11 Jun 2018 12:00:00 GMT</pubDate><content:encoded><![CDATA[<p>Continued adventures in application troubleshooting aka using <code>strace</code> in the most brute force sort of way.</p>
<p>Have you ever had one of those problems where you know the payoff isn't worth the work, but you can't step away because you have to solve it? That is where I am at right now. If you read my <a href="https://textandhubris.com/2018/06/08/why-wont-it-start/">earlier post</a> on troubleshooting, you know that I am working on getting a itch.io game to work in Linux. In that post, I fixed a few missing libraries, but then I hit a dead end. Something in my setup still wasn't quite right.</p>
<p>As I also noted in that post, this is not the only way to approach solving this issue. It may not even be the best, but it is a way. My real goal here is to convince you that you shouldn't fear the potential complexity of these tools or even your own lack of knowledge. Get in there and play around. It is the best way to learn.</p>
<p>So, to start, let's set the system context. I am running run Fedora 28 on an AMD Ryzen 1700X with an Nvidia GTX 1080<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>The logs reported thus:</p>
<pre><code>Unable to find a supported OpenGL core profile
Failed to create valid graphics context: please ensure you meet the minimum requirements
E.g. OpenGL core profile 3.2 or later for OpenGL Core renderer
Vulkan detection: 0
No supported renderers found, exiting
</code></pre>
<p>Now, this is a bit surprising as I thought I had installed all the OpenGL libraries I needed. Indeed, I double checked that mesa-libGL and its corollaries were installed in both 32bit and 64bit versions. They indeed were.</p>
<p>I then ran <code>ldconfig -p | grep GL</code> to confirm that the OpenGL libraries were there.</p>
<pre><code>$ ldconfig -p | grep GL
	libQt5OpenGL.so.5 (libc6,x86-64) =&gt; /lib64/libQt5OpenGL.so.5
	libQtOpenGL.so.4 (libc6,x86-64) =&gt; /lib64/libQtOpenGL.so.4
	libOpenGL.so.0 (libc6,x86-64) =&gt; /lib64/libOpenGL.so.0
	libGLdispatch.so.0 (libc6,x86-64) =&gt; /lib64/libGLdispatch.so.0
	libGLdispatch.so.0 (libc6) =&gt; /lib/libGLdispatch.so.0
	libGLX_nvidia.so.0 (libc6,x86-64) =&gt; /lib64/libGLX_nvidia.so.0
	libGLX_mesa.so.0 (libc6,x86-64) =&gt; /lib64/libGLX_mesa.so.0
	libGLX_mesa.so.0 (libc6) =&gt; /lib/libGLX_mesa.so.0
	libGLX.so.0 (libc6,x86-64) =&gt; /lib64/libGLX.so.0
	libGLX.so.0 (libc6) =&gt; /lib/libGLX.so.0
	libGLU.so.1 (libc6,x86-64) =&gt; /lib64/libGLU.so.1
	libGLU.so.1 (libc6) =&gt; /lib/libGLU.so.1
	libGLEW.so.2.0 (libc6,x86-64) =&gt; /lib64/libGLEW.so.2.0
	libGLESv2_nvidia.so.2 (libc6,x86-64) =&gt; /lib64/libGLESv2_nvidia.so.2
	libGLESv2.so.2 (libc6,x86-64) =&gt; /lib64/libGLESv2.so.2
	libGLESv1_CM_nvidia.so.1 (libc6,x86-64) =&gt; /lib64/libGLESv1_CM_nvidia.so.1
	libGLESv1_CM.so.1 (libc6,x86-64) =&gt; /lib64/libGLESv1_CM.so.1
	libGL.so.1 (libc6,x86-64) =&gt; /lib64/libGL.so.1
	libGL.so.1 (libc6) =&gt; /lib/libGL.so.1
	libEGL_nvidia.so.0 (libc6,x86-64) =&gt; /lib64/libEGL_nvidia.so.0
	libEGL_mesa.so.0 (libc6,x86-64) =&gt; /lib64/libEGL_mesa.so.0
	libEGL.so.1 (libc6,x86-64) =&gt; /lib64/libEGL.so.1
</code></pre>
<p>I know, now, that there is a problem in this list <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. At the time, though, it looked good.</p>
<p>So, this is where I found myself. No error message save a brief log file comment on OpenGL and nothing else.</p>
<p>Do I give up? Nope.</p>
<p>Is this a good way to spend my (valuable?) time? Probably not.</p>
<p>Am I going to dig deeper into this problem, anyway? You got it.</p>
<p>It's time for <code>strace</code>. Now, this is not an <code>strace</code> tutorial <sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>. I am not going to show you all the cool things it can do. I am going to show how I used it in a very brute force sort of way to find out what was going wrong.</p>
<p>The <code>strace</code> tool allows us to see what an application is doing as it runs. We can see how it interacts with the system (what system calls it makes) and where it may run into to problems. This makes it a handy little tool, but it also means that it dumps a lot of information at you. In this case, I just want to know what happens with the OpenGL libraries. As you can see from the <code>ldconfig</code> output, not all OpenGL libraries have OpenGL in their name, but they do (usually) have GL somewhere in their name. So let's focus our attention on lines with GL in them. Will I still get some extraneous line? Probably, but I can sort through that.</p>
<p><code>strace ./&quot;I woke up.x86&quot; 2&gt;&amp;1 | grep GL</code></p>
<p>This command launches and traces the <em>I Woke Up</em> game as it runs and inevitably crashes. By searching only for those transactions with a GL, I can better track the problem I am looking.</p>
<hr>
<h4 id="amomentaryaside">A momentary aside</h4>
<p>Now, you might be asking what does <code>2&gt;&amp;1</code> mean? Good question. In your terminal, output can be sent via two different file handles: <code>stdout</code> aka 1 and <code>stderr</code> aka 2. Think of these like channels. Your terminal is tuned in to both channels, so you see both <code>stdout</code> and <code>stderr</code> in your terminal. Terminal applications, however, are often tuned to <code>stdout</code> and ignore <code>stderr</code>. This is usually a good thing except when you are troubleshooting. The <code>strace</code> application sends its output to <code>stderr</code> which means you can see it in the terminal but <code>grep</code> won't. The <code>2&gt;&amp;1</code> tells the program to redirect all of the channel 2 output (<code>stderr</code>) to channel 1 (<code>stdout</code>). This will allow grep to find only those lines you care about.</p>
<hr>
<p>Here is my output. Notice anything interesting (HINT: see all the -1 ENOENT (No such file or directory) lines? Those might be a problem.)</p>
<pre><code>$ strace ./&quot;I woke up.x86&quot; 2&gt;&amp;1 | grep GL
openat(AT_FDCWD, &quot;/lib/libGL.so.1&quot;, O_RDONLY|O_CLOEXEC) = 4
openat(AT_FDCWD, &quot;/lib/libGLX.so.0&quot;, O_RDONLY|O_CLOEXEC) = 4
openat(AT_FDCWD, &quot;/lib/libGLdispatch.so.0&quot;, O_RDONLY|O_CLOEXEC) = 4
writev(3, [{iov_base=&quot;b0\3\0\3\0\1\0&quot;, iov_len=8}, {iov_base=&quot;GLX&quot;, iov_len=3}, {iov_base=&quot;\0&quot;, iov_len=1}], 3) = 12
writev(3, [{iov_base=&quot;b0\3\0\3\0\1\0&quot;, iov_len=8}, {iov_base=&quot;GLX&quot;, iov_len=3}, {iov_base=&quot;\0&quot;, iov_len=1}], 3) = 12
openat(AT_FDCWD, &quot;/lib/tls/i686/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/tls/i686/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/tls/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/tls/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/i686/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/i686/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/tls/i686/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/tls/i686/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/tls/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/tls/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/i686/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/i686/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/sse2/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/usr/lib/libGLX_nvidia.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/sse2/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, &quot;/lib/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) = 4
writev(3, [{iov_base=&quot;b\23\3\0\3\0\0\0&quot;, iov_len=8}, {iov_base=&quot;GLX&quot;, iov_len=3}, {iov_base=&quot;\0&quot;, iov_len=1}], 3) = 12
writev(3, [{iov_base=&quot;b\0\3\0\3\0\0\0GLX\0&quot;, iov_len=12}], 1) = 12
write(2, &quot;libGL error: &quot;, 13libGL error: )           = 13
write(2, &quot;libGL error: &quot;, 13libGL error: )           = 13
read(5, &quot;              /usr/lib/libGLX_me&quot;..., 1024) = 1024
writev(3, [{iov_base=&quot;b\25\3\0\3\0\0\0&quot;, iov_len=8}, {iov_base=&quot;GLX&quot;, iov_len=3}, {iov_base=&quot;\0&quot;, iov_len=1}], 3) = 12
</code></pre>
<p>Apparently, I am missing the 32bit libraries for the Nvidia driver. Now, Fedora doesn't include the Nvidia driver because the Nvidia driver remains closed-source. This means you will need to load your libraries from whatever repository you installed them from. You can find what repo and package that is by typing <code>sudo dnf whatprovides libGLX_nvidia.so.0</code>. Make sure you have installed both the 64bit and 32bit libraries. I use <a href="https://negativo17.org/nvidia-driver/">Negativo17's Nvidia Repo</a> and needed to install <code>nvidia-driver-libs.i686</code>.</p>
<p>Once you have installed, you can confirm that the libraries are in place by running <code>lddconfig</code>.</p>
<pre><code>$ dconfig -p | grep GL
	libQt5OpenGL.so.5 (libc6,x86-64) =&gt; /lib64/libQt5OpenGL.so.5
	libQtOpenGL.so.4 (libc6,x86-64) =&gt; /lib64/libQtOpenGL.so.4
	libOpenGL.so.0 (libc6,x86-64) =&gt; /lib64/libOpenGL.so.0
	libOpenGL.so.0 (libc6) =&gt; /lib/libOpenGL.so.0
	libGLdispatch.so.0 (libc6,x86-64) =&gt; /lib64/libGLdispatch.so.0
	libGLdispatch.so.0 (libc6) =&gt; /lib/libGLdispatch.so.0
	libGLX_nvidia.so.0 (libc6,x86-64) =&gt; /lib64/libGLX_nvidia.so.0
	libGLX_nvidia.so.0 (libc6) =&gt; /lib/libGLX_nvidia.so.0
	libGLX_mesa.so.0 (libc6,x86-64) =&gt; /lib64/libGLX_mesa.so.0
	libGLX_mesa.so.0 (libc6) =&gt; /lib/libGLX_mesa.so.0
	libGLX.so.0 (libc6,x86-64) =&gt; /lib64/libGLX.so.0
	libGLX.so.0 (libc6) =&gt; /lib/libGLX.so.0
	libGLU.so.1 (libc6,x86-64) =&gt; /lib64/libGLU.so.1
	libGLU.so.1 (libc6) =&gt; /lib/libGLU.so.1
	libGLEW.so.2.0 (libc6,x86-64) =&gt; /lib64/libGLEW.so.2.0
	libGLESv2_nvidia.so.2 (libc6,x86-64) =&gt; /lib64/libGLESv2_nvidia.so.2
	libGLESv2_nvidia.so.2 (libc6) =&gt; /lib/libGLESv2_nvidia.so.2
	libGLESv2.so.2 (libc6,x86-64) =&gt; /lib64/libGLESv2.so.2
	libGLESv2.so.2 (libc6) =&gt; /lib/libGLESv2.so.2
	libGLESv1_CM_nvidia.so.1 (libc6,x86-64) =&gt; /lib64/libGLESv1_CM_nvidia.so.1
	libGLESv1_CM_nvidia.so.1 (libc6) =&gt; /lib/libGLESv1_CM_nvidia.so.1
	libGLESv1_CM.so.1 (libc6,x86-64) =&gt; /lib64/libGLESv1_CM.so.1
	libGLESv1_CM.so.1 (libc6) =&gt; /lib/libGLESv1_CM.so.1
	libGL.so.1 (libc6,x86-64) =&gt; /lib64/libGL.so.1
	libGL.so.1 (libc6) =&gt; /lib/libGL.so.1
	libEGL_nvidia.so.0 (libc6,x86-64) =&gt; /lib64/libEGL_nvidia.so.0
	libEGL_nvidia.so.0 (libc6) =&gt; /lib/libEGL_nvidia.so.0
	libEGL_mesa.so.0 (libc6,x86-64) =&gt; /lib64/libEGL_mesa.so.0
	libEGL_mesa.so.0 (libc6) =&gt; /lib/libEGL_mesa.so.0
	libEGL.so.1 (libc6,x86-64) =&gt; /lib64/libEGL.so.1
	libEGL.so.1 (libc6) =&gt; /lib/libEGL.so.1
</code></pre>
<p>Notice how the nvidia libraries now have (libc,x86-64) and (libc6) entries? Things are looking a lot better now.</p>
<p>The real proof is in the running, though. Sure enough, the game launches and runs without error. Result!!</p>
<hr>
<p>Was this a lot of effort for a game? Yes, it was. At a certain point, though, the game wasn't the point. We should understand the tools we have and the systems we use everyday. Black boxes are inevitable. We cannot live in a non-black-boxed world. We'd get nothing done. If we accept that everything is a black box, however, we cede control. When this comes to computers, this means we cede control over the very tools we use for communication and expression. This isn't a call to code. Nothing I did here involved you writing in a programming language. Rather, this is an invitation to take back that really cool hunk of plastic and metal that sits on you desk or in your lap. Computers can be awesome. More importantly, their users are awesome. Learning to take control of that machine just gives you more ways of proving your excellence.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Yes, I know that is asking for trouble, but I was able to get a deal on the GTX 1080, and I rarely say no to a deal. The bitcoin market has made video card pricing insane for much of the last year, so I am running with what I can get. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>See the libGLX_nvidia.so.0 (libc6,x86-64) entry? Notice that there is no 32bit version (libc6) underneath it? Most Unity games need the 32bit library as well. We'll get there, though. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Although, after my searching on the web for a tutorial to link, I think one may be needed. One of the best brief overviews comes from a <a href="http://hokstad.com/5-simple-ways-to-troubleshoot-using-strace">10-year-old post</a> by Vidar Hokstrad. That is a problem. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded></item><item><title><![CDATA[Thoughts on Koenig Editor (Beta) in Ghost]]></title><description><![CDATA[My thoughts on the on the new Ghost editor. If I wanted WYSIWYG, I would be using Wordpress. ]]></description><link>http://textandhubris.com/2018/06/10/thoughts-on-koenig/</link><guid isPermaLink="false">5b0c1e2e2ed5a65b98eaa538</guid><category><![CDATA[ghost]]></category><category><![CDATA[technology]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Sun, 10 Jun 2018 12:00:00 GMT</pubDate><content:encoded><![CDATA[<p><em>Update: August 1, 2018</em></p>
<p>The newer versions of the Koenig editor have drastically improved on the performance and operation of the editor. I am still not fond of writing within a card, but my overall workflow is no longer as heavily impacted as it was in the earlier betas. To that end, I am happy to see Ghost working to improve the editing experience for their users who prefer a Markdown-based editing environment. Now, if I just had cleaner export functionality.</p>
<hr>
<p>If I wanted WYSIWYG, I would be using Wordpress.</p>
<p>I used Koenig for a week, and then turned it off. If it becomes mandatory, I will probably end leaving Ghost as a platform. This isn't about bugs. Beta tests have bugs. This is about usability, writing, and inevitable feature creep.</p>
<p>The only reason I decided to step away from a static site was because I wanted a <strong>better</strong> Markdown writing experience with a faster publication path.</p>
<p>Ghost, to its credit, has given me that. The <a href="https://simplemde.com/">SimpleMDE</a>-based editor has been great. I really enjoy writing in it and my posting has increased because of it. Now Ghost seems ready to take that experience away in the name of rich media. I hope that it finds a way to capture a better balance, instead.</p>
<p>It is true that I can still use Markdown via the Markdown card, but that card adds needless visual clutter to my writing environment. Frankly, I want the simple clear text that I have in my current editor.  This movement away from a plain text standard (which has been going on for some time now in Ghost) bothers me. I can't even export my posts in Markdown. Rather, I get a JSON export with HTML formatted data. If I want to migrate posts, I (or someone else) have write a JSON import tool for the engine I am transitioning to. Thankfully, this is not a complex problem but it is a frustrating one.</p>
<p>This is also a problem if I want to convert my posts to another format. When I was using a static site generator, if I want to provide pdf copies or develop a series of posts into a slide presentation, I could do so. I'd make a few small updates to the front matter of my markdown files and then <code>pandoc</code> handled the rest. There is no way to really do this in Ghost. I accepted this limitation because the value that Ghost provided more than made up for that small loss in functionality.</p>
<p>This new editor is a step backward for me, though. I understand the need and I know a lot of people are excited for it. I even think it makes sense for Ghost to implement the new editor. It just isn't for me, and I hope that Ghost developers consider those of us who just really wanted a nice Markdown-based writing experience. As the Koenig editor moves from beta to production, I hope that I can continue to use my simple little Markdown editor just the way it is with no card and no visual clutter. That would be a win-win for everyone.</p>
]]></content:encoded></item><item><title><![CDATA[Steam's Slush Pile Policy]]></title><description><![CDATA[Steam's new policy on games is regrettable, but unsurprising. As others have noted, it is a tacit acknowledgment that they don't care one bit about the content on their site as long as it makes them money. ]]></description><link>http://textandhubris.com/2018/06/09/steams-slush-pile-policy/</link><guid isPermaLink="false">5b1a6cb4405fbd538c04d5d6</guid><category><![CDATA[games]]></category><category><![CDATA[technology]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Sat, 09 Jun 2018 14:00:00 GMT</pubDate><content:encoded><![CDATA[<p>Steam's new policy on <a href="https://steamcommunity.com/games/593110/announcements/detail/1666776116200553082">games</a> is regrettable, but unsurprising. As <a href="https://www.polygon.com/2018/6/6/17435324/valve-steam-policy-games">others have noted</a>, it is a tacit acknowledgment that they don't care one bit about the content on their site as long as it makes them money.</p>
<p>I want to start with one sentence in Erik Johnson's post that bears review.</p>
<blockquote>
<p>If you're a developer of offensive games, this isn't us siding with you against all the people you're offending.</p>
</blockquote>
<p>And yet, Steam is providing a sales channel for these games through its site. Steam is also providing platform support for the distribution and marketing of these games, and Steam is actively taking money from the sales of those games. Steam may not be siding with offensive game developers, but it seems really seems happy to have those games and their developers side with it.</p>
<p>Steam isn't a forum, it's a store. As such, it should be known for the quality and type of content it sells. Apparently, Steam wants to be known as the &quot;anything goes&quot; game provider: the slush pile of gaming. I wish them luck with that.</p>
<blockquote>
<p>However, offending someone shouldn't take away your game's voice. We believe you should be able to express yourself like everyone else, and to find others who want to play your game. But that's it.</p>
</blockquote>
<p>If that was it, then Steam isn't needed. Developers can already do that. Contrary to its statement here, Steam isn't the arbiter of game expression. No one is silencing these developers. They have every right to make and distribute their game. In the same way, sales platforms, like Steam, have every right to <strong>not</strong> sell a game. Steam isn't taking away anyone's voice by not selling their product. They are making a choice about the company they want to be and what products they think they should be selling.</p>
<p>Steam is the current powerhouse in gaming, but that power comes at a considerable price. We've all spent a lot of money on Steam games. In doing so, we need to acknowledge that we don't actually own anything purchased through Steam. We only own the right to access those games via the Steam client. That is it.</p>
<p>Steam's policy decision is banking on that powerhouse position. It prioritizes quantity and sales over quality content. Beyond the offensive content, these are the decisions that lead to a growing slush pile of bad games. What is especially galling is that they'll even get kudos for their decision as if they are doing something noble. In all reality, they are just taking money from whoever will give it to them. The sad fact is that Steam does this because it honestly thinks it will make more money this way. In the short-term, I think it will, but this kind of tactic is not sustainable. It shows that Steam doesn't care about the broader community it serves and the messages it conveys via its platform.</p>
<p>I hope Steam reconsiders this approach. It has done a lot of good things as a company, and I hate to think that this kind of policy will define what it becomes in the years ahead. The good news for those of us who care about the content we buy is that Steam is not the only game sales platform. There are plenty of places out there that still care about the games they sell. Thank goodness for that.</p>
]]></content:encoded></item><item><title><![CDATA[Why Won't it Start? Troubleshooting Missing Shared Libraries in Linux]]></title><description><![CDATA[I had an issue with a game recently, and decided to write a short troubleshooting how-to on using ldd to diagnose missing shared libraries.]]></description><link>http://textandhubris.com/2018/06/08/why-wont-it-start/</link><guid isPermaLink="false">5b19ae552ed5a65b98eaa53c</guid><category><![CDATA[linux]]></category><category><![CDATA[open source]]></category><category><![CDATA[technology]]></category><category><![CDATA[how-to]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Sat, 09 Jun 2018 00:34:27 GMT</pubDate><content:encoded><![CDATA[<p>I like the puzzles posed by troubleshooting. Whenever we troubleshoot something,  whether an application, a classroom exercise or assignment, a research project, or something more mundane, there are always clues as to why something didn't go quite right. If we can uncover those clues, we have a chance to make things work better the next time we attempt the task. </p><p>What follows is an example of troubleshooting in Linux. It is not the only way, it may not even be the best way, but it is one way. Note, too, that the solution is less important than the procedure. You may have a different issue, but this process can help you discover the clues to a workable solution. One of the great strengths of Linux is the power it gives it users, but that power requires a willingness to dive in and explore. While not always easy, I have found those explorations have given me a far greater appreciation for the power and potential of the modern PC. </p><h3 id="the-problem-game">The Problem Game</h3><p>I've been shopping around on different gaming platforms. I've always liked <a href="https://itch.io/">itch.io</a>. Their approach to indie gaming and to the broader open source community is one that I respect and value. So, I grabbed a free game from the site as a test.</p><p>I use Fedora as my everyday OS which means I try to game, as much as possible, in Linux. The game I picked up was <em><a href="https://zephyo.itch.io/i-woke-up">i woke up next to you again</a>. </em>I picked it up in the spirit of trying new things. I haven't played a visual novel game like this before, and I was curious.</p><p>But, there was a problem: the game wouldn't start. Instead, I received the following error:</p><figure class="kg-image-card kg-width-full"><img src="http://textandhubris.com/content/images/2018/06/Screenshot-from-2018-06-07-21-38-39.png" class="kg-image"></figure><p>Not to be discouraged, I decided to figure out what the problem was. </p><h3 id="the-log-file">The Log File</h3><p>Don't fear the log file. Yes, there is a lot of gobbledygook. No, I don't know what every little thing in the file means. I know how to find out what things mean, though. That is the important part. We have manuals for a reason.</p><p>So I clicked on the "Examine cause of failure" and in the log file the first error I saw was (HINT: The first major error is usually a good place to start looking.):</p><pre><code>Unable to preload the following plugins:
	ScreenSelector.so</code></pre><p>After that, there was a missing data archive error (not surprising as I didn't have any saved data) and a stack trace for the application. </p><p>At the end of the stack trace was:</p><pre><code>=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================
</code></pre><p>Linux applications often require a collection of shared libraries in order to run successfully. In this case, as the log file suggested, I was pretty sure I was missing a library or two. The question is: which ones?</p><h3 id="usinglddtofindmissinglibraries">Using ldd to Find Missing Libraries</h3>
<p>When it comes to Linux applications, <code>ldd</code> is one of the tools we can use to discover those clues. In this case, the missing libraries.</p><p>The <code>ldd</code> [ <a href="http://man7.org/linux/man-pages/man1/ldd.1.html">ldd(1)</a> ] command lists the shared libraries that a program or shared object needs. </p><p>I wanted to start by running ldd against the main application. I suspected this wasn't the problem, but better safe than sorry. So I opened the itch.io app and in the lower right hand corner, there is an entry that says "Show local files."</p><p align="center"><img src="http://textandhubris.com/content/images/2018/06/Screenshot-from-2018-06-07-22-13-56-2.png" alt="Screenshot-from-2018-06-07-22-13-56-2"></p><p>Clicking on this in Gnome 3 (which is the default Desktop for Fedora) will open the file manager (aka Nautilus) to the directory with the game files. In the top bar you can see the path to those files. If you right-click in the file manager you will see an option to open a terminal in that folder. Otherwise, get the path (which should probably be something like <code>/home/[your username]/.config/itch/apps/I woke up next to you again</code>, open a terminal, and cd to the path (remember that the <code>~</code> is a shortcut to your home directory). </p><p><code>$ cd ~/.config/itch/apps/I woke up next to you again</code></p><p>In this directory there are two directories. We want the Linux folder. </p><pre><code>$ ls
'I woke up_Linux'   __MACOSX
$ cd "I woke up_Linux"/
$ ls
'I woke up_Data'  'I woke up.x86'</code></pre><p>The <code>'I woke up.x86'</code> file is our primary application executable. Let's check to see if any of the shared libraries are missing.</p><pre><code>$ ldd "I woke up.x86" 
	linux-gate.so.1 (0xf7fc1000)
	libdl.so.2 =&gt; /lib/libdl.so.2 (0xf7f8b000)
	libpthread.so.0 =&gt; /lib/libpthread.so.0 (0xf7f6c000)
	librt.so.1 =&gt; /lib/librt.so.1 (0xf7f62000)
	libstdc++.so.6 =&gt; /lib/libstdc++.so.6 (0xf7dd2000)
	libm.so.6 =&gt; /lib/libm.so.6 (0xf7cd0000)
	libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0xf7cb2000)
	libc.so.6 =&gt; /lib/libc.so.6 (0xf7b0f000)
	/lib/ld-linux.so.2 (0xf7fc3000)</code></pre><p>What we can see here is the list of shared libraries that the application needs and and their locations. Note that none are missing. This is a good thing, but it also doesn't help us fix the problem. Don't forget, though, the log file was pointing us to a game plugin called <code>ScreenSelector.so</code>. Notice the .so at the end of that file. That means it is a shared object that also relies on shared libraries. So, we need to find where <code>ScreenSelector.so</code> is hiding in our directory. Now, we could go searching through the folders by hand, but it is a lot easier just to find the file. </p><pre><code>$ find . -name ScreenSelector.so
./I woke up_Data/Plugins/x86/ScreenSelector.so
</code></pre><p>Now that we have the file location we can run ldd against it.</p><pre><code>$ ldd "./I woke up_Data/Plugins/x86/ScreenSelector.so"
	linux-gate.so.1 (0xf7ef5000)
	libgtk-x11-2.0.so.0 =&gt; not found
	libgdk_pixbuf-2.0.so.0 =&gt; not found
	libgobject-2.0.so.0 =&gt; not found
	libglib-2.0.so.0 =&gt; not found
	libdl.so.2 =&gt; /lib/libdl.so.2 (0xf7eb4000)
	libstdc++.so.6 =&gt; /lib/libstdc++.so.6 (0xf7d24000)
	libc.so.6 =&gt; /lib/libc.so.6 (0xf7b81000)
	/lib/ld-linux.so.2 (0xf7ef7000)
	libm.so.6 =&gt; /lib/libm.so.6 (0xf7a7f000)
	libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0xf7a61000)
</code></pre><blockquote>Note: If you are lazy, like me, you could find and run ldd all in one line. </blockquote><pre><code>$ find . -name ScreenSelector.so -exec ldd {} \;
	linux-gate.so.1 (0xf7f1b000)
	libgtk-x11-2.0.so.0 =&gt; not found
	libgdk_pixbuf-2.0.so.0 =&gt; not found
	libgobject-2.0.so.0 =&gt; not found
	libglib-2.0.so.0 =&gt; not found
	libdl.so.2 =&gt; /lib/libdl.so.2 (0xf7eda000)
	libstdc++.so.6 =&gt; /lib/libstdc++.so.6 (0xf7d4a000)
	libc.so.6 =&gt; /lib/libc.so.6 (0xf7ba7000)
	/lib/ld-linux.so.2 (0xf7f1d000)
	libm.so.6 =&gt; /lib/libm.so.6 (0xf7aa5000)
	libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0xf7a87000)
</code></pre><p>When you add the <code>-exec</code> switch to the find command you can run a command against all the files it finds. The <code>{}</code> expands to become the full  file and path for every entry found. Make sure to close the command with <code>\;</code>, though.</p><p>Hey look, there are missing files there. That might be why the file isn't loading. Great! Now we have something to fix. So, how do we find out how which packages we need? </p><p>In Fedora, you can use <code>dnf whatprovides</code> to find what packages have the missing libraries.</p><pre><code>$ dnf whatprovides libgtk-x11-2.0.so.0 libgdk_pixbuf-2.0.so.0 libgobject-2.0.so.0 libglib-2.0.so.0
Last metadata expiration check: 11 days, 7:02:21 ago on Sun 27 May 2018 04:27:54 PM CDT.
gtk2-2.24.32-2.fc28.i686 : GTK+ graphical user interface library
Repo        : fedora
Matched from:
Provide    : libgtk-x11-2.0.so.0

gdk-pixbuf2-2.36.12-1.fc28.i686 : An image loading library
Repo        : fedora
Matched from:
Provide    : libgdk_pixbuf-2.0.so.0

glib2-2.56.1-2.fc28.i686 : A library of handy utility functions
Repo        : updates
Matched from:
Provide    : libgobject-2.0.so.0
Provide    : libglib-2.0.so.0

glib2-2.56.1-1.fc28.i686 : A library of handy utility functions
Repo        : fedora
Matched from:
Provide    : libgobject-2.0.so.0
Provide    : libglib-2.0.so.0

glib2-2.56.1-2.fc28.i686 : A library of handy utility functions
Repo        : updates
Matched from:
Provide    : libgobject-2.0.so.0
Provide    : libglib-2.0.so.0

glib2-2.56.1-1.fc28.i686 : A library of handy utility functions
Repo        : fedora
Matched from:
Provide    : libgobject-2.0.so.0
Provide    : libglib-2.0.so.0
</code></pre><p>In Debian-based systems (including Ubuntu), the <code>apt-file</code> command can do something very similar. See <a href="https://wiki.debian.org/apt-file">apt-file (Debian Wiki)</a> for more information on how to use it.</p><p>What I can see from the output above is that I need to install three packages: <code>gtk2-2.24.32-2.fc28.i686</code>, <code>gdk-pixbuf2-2.36.12-1.fc28.i686</code>, and <code>glib2-2.56.1-1.fc28.i686</code> in order to add all the necessary shared libraries.</p><blockquote>Fedora Note: If you look carefully at the output above, you will see both <code>glib2-2.56.1-1.fc28.i686</code> and <code>glib2-2.56.1-2.fc28.i686</code> are listed. Install packages from the fedora repo before the updates. In my case, the files listed  in the updates repo were not even listed as found. </blockquote><pre><code>$ sudo dnf install gdk-pixbuf2-2.36.12-1.fc28.i686 gtk2-2.24.32-2.fc28.i686 glib2-2.56.1-1.fc28.i686</code></pre><p>After the install process completes. Rerun your <code>ldd</code> command against <code>ScreenSelector.so</code> to confirm that all is well. If all libraries are found, you should be able to launch the program.</p><h3 id="oneproblemsolvednproblemstogo">One Problem Solved. <em>n</em> Problem(s) to Go</h3>
<p>One of the more challenging parts of the troubleshooting process is that it rarely ends easily. Quite often, you resolve one problem only to find that another one has popped up. That is what happened here. Once I installed the shared libraries, I found myself dealing with new problems. Those issues, however, can be addressed in later posts.</p>
]]></content:encoded></item><item><title><![CDATA[Microsoft, GitHub and the Realities of Centralized Control]]></title><description><![CDATA[Let's start with a simple fact: if your content is not controlled and not stored by you, you don't own it. You never did. ]]></description><link>http://textandhubris.com/2018/06/07/microsoft-github-realities-of-control/</link><guid isPermaLink="false">5b19b93c2ed5a65b98eaa53e</guid><category><![CDATA[technology]]></category><category><![CDATA[open source]]></category><category><![CDATA[free software]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Fri, 08 Jun 2018 01:44:28 GMT</pubDate><content:encoded><![CDATA[<blockquote>
<p>Update: This was a originally part of a larger post. I decided to split these discussions into two separate posts for better clarity.</p>
</blockquote>
<p>Let's start with a simple fact: if your content is not controlled and not stored by you, you don't own it. You never did. </p><p>There's been a lot of anger and fear surrounding the recent news that GitHub has been sold. For many, the worst part of that news was that they would soon have their code hosted on a Microsoft-owned platform. Of course, they were already storing their code on a centralized server owned by another company. We know that never ends well (<a href="https://www.wired.com/2015/06/problem-putting-worlds-code-github/">Finley 2015</a>), but no one seemed to be concerned about that. Instead, they only became upset when GitHub was bought by Microsoft because Microsoft is "<em>evil</em>." </p><p>Apparently, these people have been living under a rock for the past couple decades. I have my issues with Microsoft, but let's be clear, compared to the surveillance monstrosity that is Google,  the crushing giant tendrils of an ever-present Amazon, and the "we will happily sell out our users until we're caught"- mindset of Facebook, Microsoft is not the worst company on the Internet. In fact, if I had to create a list of companies that I would want to buy GitHub, Microsoft would be pretty high on that list. </p><p>And, here is the reality, GitHub was always going to be sold. No one should be shocked. The only shock for me was that it took so damn long. </p><p>As users, we like to tell stories about the platforms we use; especially when those platforms work to become a part of our identity.  GitHub certainly does that as do many other brands. Indeed, this connection is the core of modern marketing. We don't buy products we buy an identity built around a myth about who we are and who we should be (<a href="http://www.acrwebsite.org/volumes/13465/volumes/v35/NA-35"><em>Strizhakova, Coulter, and Price 2008</em></a><em>).  </em>Naomi Klein has called this form of corporate development "hollow branding"  and has discussed it at length in her book <em>No Logo (2000)  </em>and revisits in her discussion on the 2016 elections in <em>No Is Not Enough (2017).  </em>We need to be careful about buying into these stories, though.  GitHub isn't a community resource. It is a company. It wants profits. Now yes, those profits are earned by providing a service to the community. Never doubt, though, that profits will always come before anything else. </p><p>As customers, I completely agree that we must hold our platforms responsible for their actions. The GitHub sale is not an action worth leaving over. In fact, as I mentioned in a tweet a short while back, I am very interested to see how Microsoft deals with the GitHub acquisition. This is an opportunity for them to show that their commitment to the Open Source community is as real as they say. Indeed, their recent actions in this space have (for the most part) been quite encouraging. </p><p>That said, we cannot forget that these platforms are not our own. We are storing our content on the servers of another company. Plan accordingly. I will still use GitHub the way I have been. It is a great tool and platform. I use it to store a few public and a few private repositories. I do not store anything that I consider confidential, and all critical repositories (aka my dissertation) are backed up elsewhere. I don't trust GitHub. I use GitHub. I trust my private backups and my private servers. GitHub is a service I use because it makes some work easier, but I could do without it if a problem does arise. Don't rely on platforms you don't own. This is particularly important for small businesses who use these services as critical tools. Sooner or later, they will suffer for that choice.</p>]]></content:encoded></item><item><title><![CDATA[Worth Reading: "A limit to Bitcoin scale?" by Joshua Gans]]></title><description><![CDATA[<p><a href="https://digitopoly.org/2018/05/26/a-limit-to-bitcoin-scale/">&quot;A limit to Bitcoin scale?&quot; by Joshua Gans (Digitoply) </a></p>
<blockquote>
<p>What is instructive here is that Nakamoto described Bitcoin a democratic like system with “one-CPU-one-vote” which meant that any person could participate. But if it is only robust with specialized chips, that democratic philosophy is undermined. In other words,</p></blockquote>]]></description><link>http://textandhubris.com/2018/05/28/a-limit-to-bitcoin-scale-by-joshua-gans/</link><guid isPermaLink="false">5b05c40073120d63e98347d2</guid><category><![CDATA[_link]]></category><category><![CDATA[technology]]></category><category><![CDATA[digital humanities]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Mon, 28 May 2018 12:00:43 GMT</pubDate><content:encoded><![CDATA[<p><a href="https://digitopoly.org/2018/05/26/a-limit-to-bitcoin-scale/">&quot;A limit to Bitcoin scale?&quot; by Joshua Gans (Digitoply) </a></p>
<blockquote>
<p>What is instructive here is that Nakamoto described Bitcoin a democratic like system with “one-CPU-one-vote” which meant that any person could participate. But if it is only robust with specialized chips, that democratic philosophy is undermined. In other words, Bitcoin is only likely to be long-lasting and robust as an institution because technology has subverted the very democratic-style principles that were core to its founding vision.</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Critique and Action: Post-Critical Reflections]]></title><description><![CDATA[A semi-brief reflection on Latour, critique, and the post-critical necessity of this modern moment. Basically, I want more movement from criticism to action.]]></description><link>http://textandhubris.com/2018/05/13/critique-and-action-post-critical-reflections/</link><guid isPermaLink="false">5af8b99973120d63e98347c8</guid><category><![CDATA[rhetoric]]></category><category><![CDATA[techcomm]]></category><category><![CDATA[academia]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Sun, 13 May 2018 22:35:01 GMT</pubDate><content:encoded><![CDATA[<p>I have been thinking a lot about Latour's 2004 article, <a href="http://dx.doi.org/10.1086/421123">&quot;Why Has Critique Run out of Steam? From Matters of Fact to Matters of Concern&quot;</a> in <em>Critical Inquiry</em>. In rhetoric and tech comm it is an old article, not yet a venerated ancient text but old enough to be talked about as a historical trend (which raises a whole slew of other questions that can be addressed later). In it Latour talks about the limits and potential danger of critique in, what was then, the coming &quot;post-truth&quot; age.</p>
<p>He wonders if critique and constructivism have helped to usher in that age. Certainly, modern academia has dealt with that accusation for quite some time. By showing how facts and truth are constructed, socially or otherwise, it is suggested that we undermine a universal faith in that truth. We do. We should. Indeed, we are at our best when we are peeling back the veneer of truth and fact to reveal the deeper relationships involved. Yet, it is difficult to believe that critique, alone as it stands, is enough. For Latour, and I tend to agree, critique has its own adherents who take great pleasure in tearing down the social and technical structures in which we all live. In doing so, they reveal much, but they never offer an alternative. They disprove and walk away. As Latour himself says, &quot;The question was never to get away from facts but closer to them...&quot; (231). For Latour, this meant a return to the primacy of Things and a movement away from a heavy, almost singular, focus on social construction.</p>
<p>We needed that push. Moving away from a singular form of critique has been incredibly useful in opening up new considerations in the rhetorics of science and technology. It has helped to develop new approaches in which social construction plays a part but not the whole. We can explore how people and things interrelate and build off one another. We can examine how systemic structures become objects in an of themselves extending beyond the human limits of their creation and yet still carrying with them the initial ideological biases that drove their birth. Critique has expanded and for the better.</p>
<p>But as I read and write, I find myself considering a nagging concern: what do we do with that expanded critique? Latour suggests that no one would want their cherished cultural objects to be subject to social critique and inquiry (240). To think that expanding such inquiry would somehow render that concern moot is patently false. We cannot remove ideology from our analysis of object interactions and say &quot;We fixed it.&quot; We haven't, and honestly very few would go so far as to suggest such a course of action. In the end, I think the problem may be critique, itself. The &quot;post-truth&quot; age requires a &quot;post-critical&quot; approach. This is not a new claim, but it is something that has been weighing on me a lot in the past few months. I am not sure it is enough to point out the flaws. Certainly, that is important but without an approach that says &quot;This is broken and here is how we fix it.&quot; We remain in the same spot we always have been, tearing down the structures without offering any help.</p>
<p>Maybe that is why I am so attracted to pedagogy and teaching. When I teach, I am interested in helping students understand and use that knowledge. In preparing them not to be good critics, but to use critique to better understand, engage, and hopefully change their world for the better. I hear that a lot from many who, like me, are early on in their academic careers. The research we do is fascinating, but without that movement from <em>theoria</em> to <em>praxis</em> we end up going nowhere.</p>
<p>Of course, <em>praxis</em> has its own dangers most notably from those who critique. In some sense, all form are doomed to the limitations of their time and place. Critics will highlight the failures and the flaws of those practices. They should. If we are to be post-critical, we cannot ignore that critique. We should invite it. We should make it our ally. If Latour is right and the goal is to get closer to fact or truth, whatever that may be, then we need the power of critique. We cannot, however, succumb to the inertia of critique. We must learn from it and keep pushing ahead using our skills and our knowledge to make things better while acknowledging our own flaws, frailties, and limitations.</p>
]]></content:encoded></item><item><title><![CDATA[Swallows]]></title><link>http://textandhubris.com/2018/05/08/swallows/</link><guid isPermaLink="false">5af1de9373120d63e98347c3</guid><category><![CDATA[_overlay]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Tue, 08 May 2018 17:30:37 GMT</pubDate><media:content url="http://textandhubris.com/content/images/2018/05/180508Harrington_180508-6.jpg" medium="image"/><content:encoded/></item><item><title><![CDATA[Daily Writing Progress]]></title><description><![CDATA[<blockquote>
<p>Dissertation Research - Technology, Policy, and the Formation of User and Developer Publics : 1112 words</p>
</blockquote>
<p>Daily Writing Progress (2018) - May 6<sup>st</sup></p>]]></description><link>http://textandhubris.com/2018/05/06/writing-progress-5/</link><guid isPermaLink="false">5aef9df573120d63e98347b7</guid><category><![CDATA[writingprogress]]></category><category><![CDATA[_quote]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Mon, 07 May 2018 00:48:19 GMT</pubDate><content:encoded><![CDATA[<blockquote>
<p>Dissertation Research - Technology, Policy, and the Formation of User and Developer Publics : 1112 words</p>
</blockquote>
<p>Daily Writing Progress (2018) - May 6<sup>st</sup></p>
]]></content:encoded></item><item><title><![CDATA[Birch Trees over Lake Michigan]]></title><link>http://textandhubris.com/2018/05/06/birch-trees-over-lake-michigan/</link><guid isPermaLink="false">5aef8d1e73120d63e98347b1</guid><category><![CDATA[_overlay]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Sun, 06 May 2018 23:21:28 GMT</pubDate><media:content url="http://textandhubris.com/content/images/2018/05/LRM_EXPORT_20180506_181717-1.jpg" medium="image"/><content:encoded/></item><item><title><![CDATA[Daily Writing Progress]]></title><description><![CDATA[<blockquote>
<p>Dissertation Research - Technology, Policy, and the Formation of User and Developer Publics : 471 words</p>
</blockquote>
<p>Daily Writing Progress (2018) - May 1<sup>st</sup></p>]]></description><link>http://textandhubris.com/2018/05/01/writing-progress-4/</link><guid isPermaLink="false">5aefa0ef73120d63e98347bd</guid><category><![CDATA[_quote]]></category><category><![CDATA[writingprogress]]></category><dc:creator><![CDATA[Geoffrey Gimse]]></dc:creator><pubDate>Wed, 02 May 2018 00:45:00 GMT</pubDate><content:encoded><![CDATA[<blockquote>
<p>Dissertation Research - Technology, Policy, and the Formation of User and Developer Publics : 471 words</p>
</blockquote>
<p>Daily Writing Progress (2018) - May 1<sup>st</sup></p>
]]></content:encoded></item></channel></rss>