<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Kevin's Awful Website</title>
 <link href="http://kevinsawful.website/atom.xml" rel="self"/>
 <link href="http://kevinsawful.website/"/>
 <updated>2023-06-27T22:45:58-04:00</updated>
 <id>http://kevinsawful.website</id>
 <author>
   <name>Kevin Rohrbaugh</name>
   <email>kevin+blog@rhrbgh.com</email>
 </author>

 
 <entry>
   <title>Weaponized Platitudes</title>
   <link href="http://kevinsawful.website/2016/08/03/weaponized-platitudes/"/>
   <updated>2016-08-03T00:00:00-04:00</updated>
   <id>http://kevinsawful.website/2016/08/03/weaponized-platitudes</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it&quot;&gt;YAGNI&lt;/a&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/Don%27t_repeat_yourself&quot;&gt;DRY&lt;/a&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/KISS_principle&quot;&gt;KISS&lt;/a&gt;. Idiomatic. Readable.&lt;/p&gt;

&lt;p&gt;These terms are intended to succinctly communicate a concept, yet easily become
conflict-laden clichés. Avoid them to improve discussions about code.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/hero-gorilla-12df8dca1c69435170639fc3ea3d3d7fb62ff1c585a77cb6d5761782befca87f.jpg&quot;&gt;&lt;/p&gt;

&lt;p&gt;For instance, &lt;em&gt;YAGNI&lt;/em&gt;, &lt;em&gt;DRY&lt;/em&gt;, and &lt;em&gt;KISS&lt;/em&gt; are frequently employed as arguments to
simplify needlessly complex code. Unfortunately, they can also be used to wave
away &lt;a href=&quot;https://en.wikipedia.org/wiki/No_Silver_Bullet&quot;&gt;&lt;em&gt;essential complexity&lt;/em&gt;&lt;/a&gt;, without the need for
understanding the underlying value.&lt;/p&gt;

&lt;p&gt;Similarly, &lt;em&gt;idiomatic&lt;/em&gt;, and &lt;em&gt;readable&lt;/em&gt; are ofttimes used to guide toward common
approaches which are easily identifiable by practioners in a particular
community. However, they can also be used to dictate personal aesthetics without
the hassle of justification.&lt;/p&gt;

&lt;p&gt;All of the terms refer to a quality that&amp;#39;s difficult to take an opposing
position on. After all, who wants to build unnecessary stuff, or write
overly-complex, unreadable code? Due to this, the discussion often devolves into
one of two scenarios: acquiescence or &lt;a href=&quot;https://en.wikipedia.org/wiki/Semantic_discord&quot;&gt;semantic discord&lt;/a&gt;.
Acquiescence means that nobody is improving, since there&amp;#39;s no need to educate or
discuss trade-offs. Semantic discord is exhausting, as it means the debate
ceases to be about the code, and becomes about definitions, and arguing first
principles. While it&amp;#39;s possible for an individual to &lt;em&gt;feel&lt;/em&gt; like they&amp;#39;ve won
either type of debate, the team as a whole has lost.&lt;/p&gt;

&lt;h1&gt;What works better?&lt;/h1&gt;

&lt;p&gt;Rather than lobbing truisms at one another, focus discussions around the
trade-offs being made. A simple way to do so is to employ the &lt;a href=&quot;https://en.wikipedia.org/wiki/Socratic_method&quot;&gt;Socratic
method&lt;/a&gt;: ask questions, in order to draw out intent, and underlying
presumptions.&lt;/p&gt;

&lt;p&gt;When faced with needlessly complex code, ask why the complexity is necessary,
and what value it brings. The discussion may show the complexity to be
warranted.&lt;/p&gt;

&lt;p&gt;When providing feedback on code which eschews a common solution, offer the
alternative, along with justification, and ask why it won&amp;#39;t work in this
instance. The discussion may highlight how this problem does not fit the
pattern.&lt;/p&gt;

&lt;p&gt;When we abandon trite declarations, we make room to evolve our understanding of
the &lt;em&gt;problem&lt;/em&gt;, along with the solution. Arm yourself with curiosity, not
platitudes.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>HD Gaming for Classic Console Snobs</title>
   <link href="http://kevinsawful.website/2015/04/11/hd-gaming-for-classic-console-snobs/"/>
   <updated>2015-04-11T00:00:00-04:00</updated>
   <id>http://kevinsawful.website/2015/04/11/hd-gaming-for-classic-console-snobs</id>
   <content type="html">&lt;p&gt;The &lt;a href=&quot;http://bit.ly/1aF7MZw&quot;&gt;work to create the high definition video (HD) spec&lt;/a&gt; began the
same year that Nintendo released the &lt;a href=&quot;http://en.wikipedia.org/wiki/Nintendo_Entertainment_System&quot;&gt;Family Computer&lt;/a&gt;. It took twenty
years for HDTV to become the norm, with high definition video output arriving on
game consoles in late 2005 (&lt;a href=&quot;http://en.wikipedia.org/wiki/Xbox_360&quot;&gt;Xbox 360&lt;/a&gt;). Consoles from the &lt;a href=&quot;http://en.wikipedia.org/wiki/Magnavox_Odyssey&quot;&gt;Magnavox
Odyssey&lt;/a&gt; to the &lt;a href=&quot;http://en.wikipedia.org/wiki/Nintendo_Wii&quot;&gt;Nintendo Wii&lt;/a&gt; output only standard definition (SD)
analog signals.&lt;/p&gt;

&lt;p&gt;Using SD consoles on HD displays often yields poor results. New TVs are
increasingly designed with digital video in mind, often including lower quality
components for the processing of analog input. This, combined with the poor
signal quality of &lt;a href=&quot;http://en.wikipedia.org/wiki/RF_modulator&quot;&gt;RF modulator&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Composite_video&quot;&gt;composite video&lt;/a&gt;
connections, can lead to a muddy, disappointing picture.&lt;/p&gt;

&lt;p&gt;Emulation is the typical solution to the problem, but I like playing on original
hardware. Since I don&amp;#39;t have the space (nor any interest) in having a &lt;a href=&quot;http://retrorgb.com/rgbmonitors.html&quot;&gt;CRT&lt;/a&gt;
set just for retro gaming, I decided to go for the least practical solution: a
video scaler combined with the best output option for a given system.&lt;/p&gt;

&lt;p&gt;The first bit of equipment necessary is the video scaler. There are
&lt;a href=&quot;http://retrogaming.hazard-city.de/&quot;&gt;several options&lt;/a&gt;, but the most common setup typically involves the
&lt;a href=&quot;http://www.solarisjapan.com/xrgb-mini-framemeister-compact-up-scaler-unit/&quot;&gt;Micomsoft XRGB-Mini&lt;/a&gt;. While the hardware comes highly recommended, it has
several negatives: The device is only sold in Japan, includes poorly translated
English menus and a Japanese-labeled remote control (&lt;a href=&quot;http://ebay.to/1CJwheL&quot;&gt;English overlays available
on ebay&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;The video scaler provides the high definition digital input, but getting a clean
signal out of classic consoles often requires more than purchasing electronics.
For systems that predate &lt;a href=&quot;http://en.wikipedia.org/wiki/Component_video&quot;&gt;component video&lt;/a&gt;, the best option is
typically &lt;a href=&quot;http://en.wikipedia.org/wiki/RGB#Video_electronics&quot;&gt;RGB&lt;/a&gt; via a &lt;a href=&quot;http://en.wikipedia.org/wiki/SCART&quot;&gt;SCART&lt;/a&gt; cable. Some classic systems, including
most Sega consoles, output in this format &lt;em&gt;without&lt;/em&gt; modification. Others, such
as the NES, require extensive modification and &lt;a href=&quot;http://etim.net.au/nesrgb/&quot;&gt;custom chips&lt;/a&gt;. For more
details regarding the options for various consoles, the &lt;a href=&quot;http://retrorgb.com/&quot;&gt;RetroRGB&lt;/a&gt; site
has &lt;em&gt;lots&lt;/em&gt; of information.&lt;/p&gt;

&lt;p&gt;As an example of the end-product, the following videos were captured using an
&lt;a href=&quot;http://amzn.to/1GXVUhz&quot;&gt;Elgato Game Capture HD&lt;/a&gt; from my &lt;a href=&quot;http://etim.net.au/nesrgb/&quot;&gt;NESRGB-modified&lt;/a&gt; top-
loader NES, upscaled to 1080p with the &lt;a href=&quot;http://www.solarisjapan.com/xrgb-mini-framemeister-compact-up-scaler-unit/&quot;&gt;XRGB-Mini&lt;/a&gt;.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/QN2MknEuAU4&quot;
frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/RwodigKIbKI&quot;
frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;A video scaler solution is &lt;em&gt;not&lt;/em&gt; cheap and is likely to require modifications to
at least some of your game consoles. Admittedly, it&amp;#39;s an impractical approach
for a pretty esoteric &amp;quot;problem&amp;quot;. That&amp;#39;s in no small part why I find it an
interesting and fun project.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Sync WoW Plugins and Settings for Free</title>
   <link href="http://kevinsawful.website/2015/04/03/sync-wow-plugins-with-dropbox/"/>
   <updated>2015-04-03T00:00:00-04:00</updated>
   <id>http://kevinsawful.website/2015/04/03/sync-wow-plugins-with-dropbox</id>
   <content type="html">&lt;p&gt;I have an on-again, off-again relationship with &lt;a href=&quot;http://www.worldofwarcraft.com/&quot;&gt;World of Warcraft&lt;/a&gt;, often
returning to play through new expansions and then wandering off after a few
months.&lt;/p&gt;

&lt;p&gt;Like many WoW players, I use a lot of add-ons, all but replacing the default UI.
I tend to play on my main gaming PC, as well as my Mac laptop (often from my
couch). Keeping add-ons up-to-date across both machines is a hassle, which is
why &lt;a href=&quot;http://www.curse.com/&quot;&gt;Curse&lt;/a&gt; offers a &lt;a href=&quot;http://www.curse.com/premium/plan&quot;&gt;subscription service&lt;/a&gt; for syncing
them. Unfortunately, I&amp;#39;m too cheap to pay for it.&lt;/p&gt;

&lt;p&gt;Instead, I use &lt;a href=&quot;https://www.dropbox.com/&quot;&gt;Dropbox&lt;/a&gt;&amp;#39;s desktop client to accomplish the same thing for
free. Here&amp;#39;s how to do it (using &lt;a href=&quot;http://www.wikihow.com/Get-to-the-Command-Line-on-a-Mac&quot;&gt;Terminal on Mac&lt;/a&gt; or &lt;a href=&quot;https://technet.microsoft.com/en-us/library/cc947813%28v=ws.10%29.aspx&quot;&gt;admin-mode
Command Prompt &lt;/a&gt; on PC):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setup Dropbox to sync a local folder (&lt;a href=&quot;https://db.tt/6ItdqmTl&quot;&gt;sign up for a free account&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On your primary computer, which has your up-to-date add-ons and settings,
move your settings and add-ons folders to a &lt;code&gt;World of Warcraft&lt;/code&gt; folder inside
your synced Dropbox folder&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# Mac&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;#&lt;/span&gt;
mkdir&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;-p&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;~/Dropbox/World&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;of&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;Warcraft/WTF
&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;/Applications/World&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;of&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;Warcraft
mv&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;WTF/Account&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;~/Dropbox/World&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;of&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;Warcraft/WTF/Account
mv&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Interface&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;~/Dropbox/World&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;of&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;Warcraft/Interface
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-batch&quot; data-lang=&quot;batch&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;: PC&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;:&lt;/span&gt;
cmd /x
&lt;span class=&quot;k&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%HOMEDRIVE%%HOMEPATH%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\Dropbox\World of Warcraft\WTF&amp;quot;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;%SYSTEMDRIVE%&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%PROGRAMFILES(X86)%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\World of Warcraft&amp;quot;&lt;/span&gt;
robocopy WTF\Account &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%HOMEDRIVE%%HOMEPATH%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\Dropbox\World of Warcraft\WTF\Account&amp;quot;&lt;/span&gt; /move /s
robocopy Interface &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%HOMEDRIVE%%HOMEPATH%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\Dropbox\World of Warcraft\Interface&amp;quot;&lt;/span&gt; /move /s
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;a href=&quot;http://en.wikipedia.org/wiki/Symbolic_link&quot;&gt;symbolic link&lt;/a&gt; from your WoW folder to the Dropbox folder&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# Mac&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;~/Dropbox/World&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;of&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;Warcraft
ln&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;-s&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;WTF/Account&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;/Applications/World&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;of&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;Warcraft/WTF/Account
ln&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;-s&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Interface&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;/Applications/World&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;of&lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;Warcraft/Interface
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-batch&quot; data-lang=&quot;batch&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;: PC&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;%SYSTEMDRIVE%&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%PROGRAMFILES(X86)%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/World of Warcraft&amp;quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;mklink&lt;/span&gt; /D WTF/Account &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%HOMEDRIVE%%HOMEPATH%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\Dropbox\World of Warcraft\WTF\Account&amp;quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;mklink&lt;/span&gt; /D Interface &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%HOMEDRIVE%%HOMEPATH%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\Dropbox\World of Warcraft\Interface&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At this point, you&amp;#39;ve moved your WoW settings and add-ons to your Dropbox
folder, so that it can begin syncing the data to the cloud. You&amp;#39;ve also created
&lt;a href=&quot;http://en.wikipedia.org/wiki/Symbolic_link&quot;&gt;symbolic links&lt;/a&gt; so that WoW still believes those directories are where it
expects them to be.&lt;/p&gt;

&lt;p&gt;All that&amp;#39;s left is making similar links from Dropbox to the WoW application
directory on your secondary machine. This is done by installing Dropbox on that
machine, allowing it to sync your files, and then creating links as outlined in
step 3 above.&lt;/p&gt;

&lt;p&gt;Note that many settings (stored in &lt;code&gt;WTF/Account&lt;/code&gt;) are display-resolution
dependent, so you may not want to actually link your &lt;em&gt;entire&lt;/em&gt; settings directory.&lt;/p&gt;
</content>
 </entry>
 

</feed>
