These terms are intended to succinctly communicate a concept, yet easily become
conflict-laden clichés. Avoid them to improve discussions about code.
For instance, YAGNI, DRY, and KISS are frequently employed as arguments to
simplify needlessly complex code. Unfortunately, they can also be used to wave
away essential complexity, without the need for
understanding the underlying value.
Similarly, idiomatic, and readable 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.
All of the terms refer to a quality that'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 semantic discord.
Acquiescence means that nobody is improving, since there'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's possible for an individual to feel like they've won
either type of debate, the team as a whole has lost.
What works better?
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 Socratic
method: ask questions, in order to draw out intent, and underlying
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
When providing feedback on code which eschews a common solution, offer the
alternative, along with justification, and ask why it won't work in this
instance. The discussion may highlight how this problem does not fit the
When we abandon trite declarations, we make room to evolve our understanding of
the problem, along with the solution. Arm yourself with curiosity, not
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 RF modulator and composite video
connections, can lead to a muddy, disappointing picture.
Emulation is the typical solution to the problem, but I like playing on original
hardware. Since I don't have the space (nor any interest) in having a CRT
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.
The first bit of equipment necessary is the video scaler. There are
several options, but the most common setup typically involves the
Micomsoft XRGB-Mini. 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 (English overlays available
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 component video, the best option is
typically RGB via a SCART cable. Some classic systems, including
most Sega consoles, output in this format without modification. Others, such
as the NES, require extensive modification and custom chips. For more
details regarding the options for various consoles, the RetroRGB site
has lots of information.
A video scaler solution is not cheap and is likely to require modifications to
at least some of your game consoles. Admittedly, it's an impractical approach
for a pretty esoteric "problem". That's in no small part why I find it an
interesting and fun project.
I have an on-again, off-again relationship with World of Warcraft, often
returning to play through new expansions and then wandering off after a few
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 Curse offers a subscription service for syncing
them. Unfortunately, I'm too cheap to pay for it.
mkdir "%HOMEDRIVE%%HOMEPATH%\Dropbox\World of Warcraft\WTF"%SYSTEMDRIVE%cd"%PROGRAMFILES(X86)%\World of Warcraft"
robocopy WTF\Account "%HOMEDRIVE%%HOMEPATH%\Dropbox\World of Warcraft\WTF\Account"/move/s
robocopy Interface "%HOMEDRIVE%%HOMEPATH%\Dropbox\World of Warcraft\Interface"/move/s
Create a symbolic link from your WoW folder to the Dropbox folder
:::: PC::%SYSTEMDRIVE%cd"%PROGRAMFILES(X86)%/World of Warcraft"
mklink /D WTF/Account"%HOMEDRIVE%%HOMEPATH%\Dropbox\World of Warcraft\WTF\Account"
mklink /D Interface "%HOMEDRIVE%%HOMEPATH%\Dropbox\World of Warcraft\Interface"
At this point, you've moved your WoW settings and add-ons to your Dropbox
folder, so that it can begin syncing the data to the cloud. You've also created
symbolic links so that WoW still believes those directories are where it
expects them to be.
All that'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.
Note that many settings (stored in WTF/Account) are display-resolution
dependent, so you may not want to actually link your entire settings directory.