tag:blogger.com,1999:blog-111415532024-03-12T19:03:19.313-04:00Slaqing at lifeRandom ramblings, rants, and (hopefully) insight from the self proclaimed Captain of Slaq.Unknownnoreply@blogger.comBlogger87125tag:blogger.com,1999:blog-11141553.post-89765455051181281682016-01-10T18:14:00.000-05:002016-01-10T18:15:59.974-05:00Handbrake, LibDVDCSS, and Windows 10.While on my work laptop (A Lenovo T430 that I'm exceptionally happy with, and can heartily recommend, but sadly is only available used these days) I'm very happy with my Linux Mint install, at home I still have what was in the (not so?) distant past called a "Wintendo".<br />
<br />
With this in mind, after setting up a reasonably sized NAS at home, I decided that it was time for me to start digitizing media that I have currently. Most of it is DVD or CD Audio, as I haven't made the jump to BluRay as of yet.<br />
<br />
My go-to for almost all DVD ripping in the past has been Handbrake. It's a reasonably usable interface with a reasonably fast encoding engine behind it. What's happened since the last time I set it up has been that DVD copy protection has become massively onerous, due to many reasons which are beyond the scope of this article.
Most places that you start to look for side-stepping this stuff (<span style="color: red;"><b>which is a massive grey area legally in the United States and possibly other places. You have been warned.</b></span>) say "download libDVDCSS from [some weirdly site] and drop it in your handbrake folder". This kind of works, but most of the links seem to be to an older version of the library (1.2.x) instead of being built off a current copy of the code. So I decided to document what I did to compile this myself on my wintendo, which happens to be running Windows 10 64B at this point in time.<br />
<br />
You'll need to set up and download some things to get all this to work, so if you're into "one click solutions", this isn't for you. Due to the legal nature of mentioned above, I'm not going to provide a link to the finished product. Have fun and learn something. Or not, I'm not your conscience.<br />
<br />
You'll need to install a build environment. The recommendation from VideoLAN (who wrote the library you're going to be compiling) is to use the suite of tools provided by MinGW. MinGW has a very nice installer that you can get from <a href="http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download">http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download</a>.<br />
<br />
When you get that installed, accepting all the defaults (they appear to be mostly sane), run the installation manager. You'll be presented with a fairly simple 3 pane UI. In the top right pane, select "mingw-developer-toolkit". It'll spin for a few moments before coming back and putting a check in the box. Click the "Installation" menu and then select "Apply Changes". This should complete what you need to do with this application.<br />
<br />
You'll need to download the code that you're going to be compiling from VideoLAN. You can grab it from <a href="http://download.videolan.org/pub/libdvdcss/last/">http://download.videolan.org/pub/libdvdcss/last/</a>. It looks like the latest as of this writing is 1.4.0. It also looks like it only is available in a bz2 file. 7-Zip (<a href="http://7-zip.org/">http://7-zip.org</a>), one of many compressed file managers, can open this for you. I personally like 7-zip because it's scriptable and open. However you unpack this, put it somewhere you can find it easily. I'm lazy and generally put stuff like this on my desktop. <br />
<br />
Once you decompress the files, you'll need to open a command prompt, but not the one you think you need to: You'll need to open a MinGW prompt to make things easy. You can open this by running "C:\MinGW\msys\1.0\msys.bat", assuming that C:\MinGW is where you configured the installer to put all of the MinGW stuff. This will open a command prompt that looks a bit strange, but will make your life MUCH easier.<br />
<br />
Now's when it gets a bit more complicated. You'll need to change directory to where you unpacked your copy of the DeCSS code. Since I put mine on my desktop, in my MinGW bash window, I change directory like so:<br />
<br />
<blockquote class="tr_bq">
cd /c/Users/captslaq/desktop/libdvdcss-1.4.0/ </blockquote>
<br />
Once in the proper directory, it's pretty straight forward, and documented in the INSTALL text document:<br />
<blockquote class="tr_bq">
./configure</blockquote>
Configure, in a nutshell, checks the state of your system and then builds out a file to tell the compiler what it needs to do. This will spit out a list of status messages before exiting without any real complaint, assuming everything works. <br />
<blockquote class="tr_bq">
make</blockquote>
Make runs all the things that the file(s) spit out by configure tells it to. It'll carp about some things, but in the end it will exit without an error. When this is done, you'll have a new folder, .libs, in your folder. Inside there, you'll find a copy of libdvdcss-2.dll. You don't even have to rename it anymore. Using windows explorer, just copy libdvdcss-2.dll into your handbrake folder. You now have a current version of libdvdcss that should work as expected.<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-11141553.post-32101828509803476652015-05-08T09:27:00.000-04:002015-05-08T09:27:36.633-04:00Installing SMBind using MySQL backend on Ubuntu 14.04In Ubuntu 12.04, there was a package for web management of a BIND based DNS server called SMBIND. This package has not been ported forward to 14.04, so here's how I got this done.
<br />
Assumptions:
<ul>
<li>Using Apache as a web server is acceptable. Apache is one of the most ubiquitous http servers on the planet, with plenty of documentation for how to fix stuff if it goes pear shaped. If you want to use another web server, please check the documentation for that service.
</li>
<li>There is no other service using HTTP on the machine being configured. On a private IP space, you have plenty of places to put stuff. With the plethora of options available for VM hosts, I recommend that you run one of those on your home server and host this in there. ProxMox has a very nice web managed front end for its VM management console that works well and uses very little overhead.
</li>
<li>Using MySQL as a database server is acceptable. MySQL is (as of this writing) still the default SQL server for Ubuntu.
</li>
<li>A rudimentary knowledge of MySQL, Apache, and a basic knowledge of how to get common tasks done in Ubuntu. If you're setting this up, you either have these or want them anyway.
</li>
</ul>
Grab and unarchive the package from <a href="https://sourceforge.net/projects/smbind/">SourceForge</a>.
<br />
Install the following packages with your favorite package manager. I typically use apt from the command line directly.
<br />
<pre>php5 php5-mysqlnd php5-pear mysql-server bind9 smarty3
</pre>
<br />
This will install a bunch of stuff for you, and, most importantly, ask you to set a password for the root user for mysql. Once you've done this, create a user and a database for SMBind to use. I typically do this from the console, but there are several tools you can use to get this done.
<br />
<br />
You'll need to install the Pear DB package. It balks that it's deprecated, but it's required for SMBind to work. I haven't tested to see if the replacement drops in or not.
<br />
<pre>sudo pear install DB
</pre>
<br />
Inside the SMBind archive, there's a database that needs to be imported called 'smbind-mysql.sql'.
<br />
<pre>mysql -u smbind -p -D smbind < smbind-mysql.sql
</pre>
<br />
Inside the SMBind archive, there is a folder that contains the PHP files that are used to get work done. Copy the entire folder into a sane location. The following puts it in /var/www/smbind, which is assumed for the rest of this article.
<br />
<pre>sudo cp -r ./php/ /var/www/smbind
</pre>
<br />
Set up apache to serve the code. The cleanest way to do this is to copy the default config to another file, modify the new file, disable the default config, and enable the smbind config.
<br />
<pre>sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/smbind.conf
</pre>
<br />
Here's the file I'm using for this currently:
<br />
<pre>
<virtualhost>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/smbind
ErrorLog ${APACHE_LOG_DIR}/smbind_error.log
CustomLog ${APACHE_LOG_DIR}/smbind_access.log combined
</virtualhost>
</pre>
<br />
Enable the smbind site
<br />
<pre>sudo a2dissite 000-default.conf
sudo a2ensite smbind.conf
</pre>
<br />
Restart apache:
<br />
<pre>sudo service apache2 restart
</pre>
<br />
Edit the config file /var/www/smbind/config.php. Here's what I'm using currently, password redacted:
<br />
<pre>
<?php
// Include paths.
$_CONF['smarty_path'] = "/usr/share/php/smarty3";
$_CONF['peardb_path'] = "/usr/share/php";
// Database DSN.
$_CONF['db_type'] = "mysql"; // mysql for MySQL, pgsql for PostgreSQL
$_CONF['db_user'] = "smbind";
$_CONF['db_pass'] = "not really my password";
$_CONF['db_host'] = "localhost";
$_CONF['db_db'] = "smbind";
// Zone data paths (normal).
$_CONF['path'] = "/etc/smbind/zones/";
$_CONF['conf'] = "/etc/smbind/smbind.conf"; # Include this file in named.conf.
// Zone data paths (chroot).
#$_CONF['path'] = "/var/named/chroot/var/named/";
#$_CONF['conf'] = "/var/named/chroot/etc/smbind/smbind.conf"; # Include this file in named.conf.
// BIND utilities.
$_CONF['namedcheckconf'] = "/usr/sbin/named-checkconf";
$_CONF['namedcheckzone'] = "/usr/sbin/named-checkzone";
$_CONF['rndc'] = "/usr/sbin/rndc";
?>
</pre>
<br />
Set the permissions on the necessary files:
<br />
<pre>sudo chown www-data:www-data /var/www/smbind/templates_c/
sudo chown www-data:www-data /var/www/smbind/config.php
</pre>
<br />
Create a place for smbind to house configuration files.
<br />
<pre>sudo mkdir -p /etc/smbind/zones/
sudo chown www-data:www-data /etc/smbind/zones/
sudo touch /etc/smbind/smbind.conf
sudo chown www-data:www-data smbind.conf
</pre>
<br />
Add www-data to the bind group:
<br />
<pre>sudo usermod -a -G bind www-data
</pre>
<br />
Alter the named apparmor profile to read the smbind configs. The file is /etc/apparmor.d/local/usr.sbin.named. Here's my current one:
<br />
<pre># Site-specific additions and overrides for usr.sbin.named.
# For more details, please see /etc/apparmor.d/local/README.
/etc/smbind/smbind.conf rw,
</pre>
<br />
Reload the apparmor profile
<br />
<pre>sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.named
</pre>
<br />
Change the permissions of /etc/bind/rndc.key to allow smbind to read it.
<br />
<pre>sudo chgrp www-data /etc/bind/rndc.key
</pre>
<br />
Link the rdnc.key file into /etc. No configuration option exists for this in SMBind. I've opened a ticket to see if this can be moved to the config file so this step can be skipped.
<br />
<pre>sudo ln -s /etc/bind/rndc.key /etc
</pre>
<br />
Alter /etc/bind/named.conf.local to have the smbind and rndc settings. Here's the one I'm currently using:
<br />
<pre>//
// Do any local configuration here
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
include "/etc/bind/rndc.key";
include "/etc/smbind/smbind.conf";
</pre>
<br />
Restart bind
<br />
<pre>sudo service bind9 restart
</pre>
<br />
Run the config test using your favorite web browser.
<br />
<pre>http://your.server.ip/src/configtest.php
</pre>
<br />
If everything comes back clean, congratulations. You've succeeded.
<br />
<br />
A package for SMBind may show up at some point. If it does, use it. This configuration, while it does work functionally, is probably not ideal by any stretch. If I get super ambitious, I may set up a launchpad account and build out a package for this, assuming no one else is working on it.
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-11141553.post-92200745443842708882014-10-23T08:43:00.000-04:002015-02-24T12:26:13.514-05:00Installing MySQL 5.6 with Galera on Ubuntu 14.04<p>
Inspired by <a href='http://www.fromdual.com/ugly-way-to-install-mysql-galera-cluster-5.6-on-ubuntu-14.04'>this</a> horror story of an install, I've decided to see if there's a more elegant way of getting it done. I *think* I have it, but the root cause may make this fix moot.
</p><p>
The problem that needs to be addressed is that the dependencies listed in the .deb files provided by Codership for installing the patched mysql binaries and Galera don't line up properly with packages that you can install in Ubuntu. The version provided by Codership is based on MySQL 5.6.16, where as the repositories are up to 5.6.19. This particular problem isn't exactly unexpected due to the nature of what's being installed: A patch to MySQL.
</p><p>
Before you go any further, I must state the following: I have not analyzed the impact of this procedure with great depth. All I know is that initial testing indicates that there's no problem with it, but there is a reality that cannot be denied: There might be a version mis-match with some of the binary files. Until Codership delivers a version of mysql greater than 5.6.19, if you want to use the packaged version of this tool, this is the reality.
</p><p>
With this in mind, I set about trying to find a method of modifying the data baked into the .deb files for the prerequisites. Here's the install procedure I've used and appears to be successful. All of the following is based on a freshly installed copy of Ubuntu 14.04 and the <c>salt-minion</c> package, with all of its requirements.
</p><p>
First, you'll need to install the MySQL 5.6 packages from the Universe repo. If you don't have the Universe repo enabled, check <a href='https://help.ubuntu.com/community/Repositories/Ubuntu'>here</a>.
</p><p>
After you have Universe enabled, you can simply install the mysql 5.6 packages, along with the required libssl0.9.8 package:
<div style='background-color:#fff;'>
<code>
sudo apt-get install mysql-server-5.6 mysql-client-5.6 libssl0.9.8
</code>
</div>
You'll need to download the required .deb files for installation. These are the latest as of this writing.
</p><p>
<div style='background-color:#fff;'>
<code>
wget https://launchpad.net/galera/3.x/25.3.5/+download/galera-25.3.5-amd64.deb https://launchpad.net/codership-mysql/5.6/5.6.16-25.5/+download/mysql-server-wsrep-5.6.16-25.5-amd64.deb
</div>
</code>
</p><p>
I hope that Codership will patch and release soon so this entire writeup isn't necessary to be indexed by anyone. The listed milestones on <a href='https://launchpad.net/codership-mysql/5.6/'>Codership's launchpad</a> seems to suggest that they're probably close to a release using MySQL 5.6.20, which WILL make this ugly hack unneeded.
</p><p>
I found <a href='http://ubuntuforums.org/showthread.php?t=636724'>this</a> thread with a nifty little script in it that I'll paste here with some very minor modifications. Take the following and save it to disk.
<div style='background-color:#fff;'>
<pre>
#!/bin/bash
if [[ -z "$1" ]]; then
echo "Syntax: $0 debfile"
exit 1
fi
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb
if [[ -e "$OUTPUT" ]]; then
echo "$OUTPUT exists."
rm -r "$TMPDIR"
exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
echo DEBIAN/control not found.
rm -r "$TMPDIR"
exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
"${FCEDIT:-${VISUAL:-${EDITOR:-vi}}}" "$CONTROL"
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
echo Not modfied.
else
echo Building new deb...
dpkg -b "$TMPDIR" "$OUTPUT"
fi
rm -r "$TMPDIR"
</pre>
</div>
Take the above script and save it to a file. The referenced post suggested videbcontrol, so I'll go with that.
</p><p>
You'll need to execute it. The easiest thing to do is set the execute bit:
</p><p>
<div style='background-color:#fff'>
<code>
# chmod +x videbcontrol
</code>
</div>
</p><p>
When you run <code>videbcontrol mysql-server-wsrep-5.6.16-25.5-amd64.deb</code> you'll be presented with the following:
<div style='background-color:#fff;'>
<pre style='white-space: pre-wrap; '>
Package: mysql-server-wsrep
Version: 5.6.16-25.5
Maintainer: Codership Oy
Architecture: amd64
Description: wsrep-enabled MySQL server
Copyright: MySQL AB, Codership Oy, All Rights Reserved
MySQL server + wsrep patch (https://launchpad.net/codership-mysql)
Depends: psmisc, debianutils (>= 1.6), libc6 (>= 2.4), libdbi-perl, libdbd-mysql-perl (>= 1.2202), libgcc1 (>= 4.1.1), libncurses5 (>= 5.6), libstdc++6 (>= 4.1.1), libwrap0 (>= 7.6), perl, zlib1g (>= 1.1.4), libaio1, mysql-client
Replaces: mysql-server-core (<= 5.6.16), mysql-server-core-5.0 (<= 5.6.16), mysql-server-core-5.1 (<= 5.6.16), mysql-server (<= 5.6.16), mysql-server-5.0 (<= 5.6.16), mysql-server-5.1 (<= 5.6.16), mysql-server-5.6 (<= 5.6.16), mysql-server-5.5 (<= 5.6.16)
Provides: mysql-server-core, mysql-server, mysql-server-5.6
</pre>
</div>
The finished product that you'll save looks like below. I've hilighted the <span style='color:#00f'>changes</span> and <span style='color:#f00'>additions</span>.
</p><p>
<div style='background-color:#fff;'>
<code>
Package: mysql-server-wsrep<br/>
Version: 5.6.16-25.5<br/>
Maintainer: Codership Oy<br/>
Architecture: amd64<br/>
Description: wsrep-enabled MySQL server<br/>
Copyright: MySQL AB, Codership Oy, All Rights Reserved<br/>
MySQL server + wsrep patch (https://launchpad.net/codership-mysql)<br/>
Depends: psmisc, debianutils (>= 1.6), libc6 (>= 2.4), libdbi-perl, libdbd-mysql-perl (>= 1.2202), libgcc1 (>= 4.1.1), libncurses5 (>= 5.6), libstdc++6 (>= 4.1.1), libwrap0 (>= 7.6), perl, zlib1g (>= 1.1.4), libaio1, mysql-client<span style='color:#00f'>-5.6</span>, <span style='color:#f00'>libssl0.9.8</span><br/>
Replaces: mysql-server-core (<= 5.6.16), mysql-server-core-5.0 (<= 5.6.16), mysql-server-core-5.1 (<= 5.6.16), mysql-server (<= 5.6.16), mysql-server-5.0 (<= 5.6.16), mysql-server-5.1 (<= 5.6.16), mysql-server-5.6 (<= <span style='color:#00f'>5.6.20</span>), mysql-server-5.5 (<= 5.6.16), <span style='color:#f00'>mysql-server-core-5.6 (<= 5.6.20)</span><br/>
Provides: mysql-server-core, mysql-server, mysql-server-5.6, <span style='color:#f00'>mysql-server-core-5.6</span>
</code>
</div>
</p><p>
When you save and exit your editor, <code>videbcontrol</code> will save a new file called <code>mysql-server-wsrep-5.6.16-25.5-amd64.modified.deb</code>
</p><p>
You can then install the two .deb packages without any carping. Be sure you install the modified mysql package.
<div style='background-color:#fff;'>
<pre>
sudo dpkg -i mysql-server-wsrep-5.6.16-25.5-amd64.modfied.deb
sudo dpkg -i galera-25.3.5-amd64.deb
</pre>
</div>
Modify <code>/etc/mysql/conf.d/wsrep.cnf</code> by inserting the following lines in the <code>[mysqld]</code> section:
</p><p>
<div style='background-color:#fff;'>
<code>
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_address = "gcomm://"
</code>
</div>
</p><p>
And finally, restart Mysql:
</p><p>
<div style='background-color:#fff;'>
<code>sudo service mysql restart</code>
</div>
</p><p>
When you connect to mysql, it should give you the following:
</p><p>
<div style='background-color:#fff;'>
<pre style='white-space: pre-wrap; '>
Server version: 5.6.16 MySQL Community Server (GPL), wsrep_25.5.r4064
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
</pre>
</div>
Hopefully the version mismatches don't give you any trouble.
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-79376768350882371452014-08-30T13:49:00.000-04:002014-09-02T21:14:43.488-04:00Music of the moment, August 30 2014<p>Pandora's introduced me to a wide variety of music that's been great.
</p><p>
Ólafur Arnalds is one of those artists that will never really get a ton of traction in the mainstream, much like Jonsi/Sigur Ros, El Ten Eleven, et. al., until his music gets picked up and used on a major commercial project. I sincerely hope it will happen sooner than later, but my gut says it will happen.
</p><p>
While I have a lot of comments about this tune, enigmatically entitled 3055, I think it stands on its own well. Listen to it in a quite time, with an open mind, and let your imagination hear the story being told.
</p><p>
<iframe width="420" height="315" src="//www.youtube-nocookie.com/embed/K6u5D-5LWSg" frameborder="0" allowfullscreen></iframe>
</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-58675235977522338802012-11-04T19:08:00.001-05:002012-11-04T19:08:23.297-05:00If you have a passion for the automobile... <p>
read this:<br/>
https://intuneingear.wordpress.com/
</p>
<p>
He gets it. A very tiny sample of why:
<br />
<blockquote>
Do you even understand how you’re allowed to move forward in a car? We, as a species, have learned how to control explosions. We control explosions to move you forward.
</blockquote>
Looks to be new at the blogging gig. I sincerely hope he keeps up with it.
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-11141553.post-64957005976406876512012-09-22T00:49:00.001-04:002012-09-22T00:49:15.552-04:00A short note about Windstream, the ISP I use.<p>
At one point in time, the service where I am was, if not awe inspiring, at least acceptable for everything I do. While the network is my connection to the world (I haven't connected anything but the XBox to the TV), I don't do too much out of the ordinary off of the connection here; web browsing, netflix, online gaming, and the occasional remote session for work when one of my coworkers or customers had something blow up after hours. I'd have to reboot the modem once a week or so, which, while annoying, I could easily chalk up to the house wiring or something weird on the circuit. I do live a few miles from the nearest town, and over 30 miles from anything remotely classified a city. The bandwidth wasn't always what I was promised, but it was often enough and reliable enough that I didn't worry about it. I was a happy customer.
</p><p>
The past roughly two months have not been that way. I get frequent dropouts, massive lag spikes, and it doesn't matter where I measure my bandwidth from, if I get 1Mbps, it's a GOOD measurement. I wouldn't complain about the bandwidth if I'm paying for wasn't 6 times that, but the lag and dropouts are very problematic for gaming, streaming video, and the occasional work I have to do.
</p><p>
Online chat support hasn't been the greatest either. I get the feeling that it's run by people with a script, their wits, and not much other support.
</p><p>
Of the 3 (maybe more... it's been quite a while) support agents I've chatted online with, none of them have asked me to use the Windstream internal speed test at <a href=
http://speedtest.windstream.net
>http://speedtest.windstream.net</a>, or asked me for test results from said site. In fact, I've been referred to <a href='http://speedtest.net'>http://speedtest.net</a> and <a href='http://speakeasy.net/speedtest'>http://speakeasy.net/speedtest</a>.
</p><p>
One tech (Kenyatta N.) did escalate my request to "an engineer", who apparently did call as promised on 2012-08-27 during the day, and was short to the Mrs. while informing her "it's fixed". Which it really wasn't. The former I can almost forgive, because often engineers are busy. I don't appreciate it at all, but I can understand. The latter is a real problem.
</p><p>
One tech requested remote access to my machine via <a href='http://join.me'>http://join.me</a>, which I found to be very disconcerting. He poked around a bit like he might have been looking for something specific, but it could just as easily be construed as being nosy on the machine. I allowed it because I keep no sensitive information on the machine, but really? You have to remote in? You can't just look at the stats that the connection has from both the modem (which I know you have some access to) or the DSLAM (which I hope you have some access to) and see "oh hey, there may be some issues here". The speed test from Windstream's network even appears to have numbers for each test run from there that I could give you so you can (or at least should be able to) pull results from that site.
</p><p>
If you're going to allow remote connections from tech support, at least pay for a branded service. Join.me (no offense intended to the people who operate that service) just comes off as a skeezy, "I'm doing this from my bedroom" fly by night operation. I know Windstream isn't the biggest player in the space, but it's certainly more than a single room office in a warehouse.
</p><p>
The last agent (Keith W., who also happened to be the one who asked to remote connect to me) was fairly condescending, and after nearly 90 minutes of "work", said "Let me cycle your connection", which then disconnected me from him, with no hope of actually talking to him again. Not fixing the issue.
</p><p>
I'm not the only one out here who has this problem. There is at least one more who also works in tech, lives in the area, and would like to work from home, but can't because the connectivity out here is so lousy. I've quit bringing my laptop home because it's worthless to even try and get anything done: 90% of my work is on the network.
</p><p>
I'm not asking for the moon, and I certainly don't think I'm whingeing. I'm asking for a fix. Hell, I'd consider forgoing compensation if it can be made right permanently. I'd consider a "business class" connection as well, but currently I'm not convinced that it would change anything except to make my bill larger. I am told by support that all support requests are logged. If that's the case, and you're from Windstream, please look up incident number 13173128 and you should have enough information to find the rest. I assume the tech was honest when I asked them for that information, and it actually exists. The call that landed me that number was made on 2012-08-29, around 2000 Eastern time. The tech (whose name I didn't document, bad customer) had excellent soft skills, but I'm unconvinced that he has the tools to actually fix any problem beyond "Lemme cycle the modem". Which I can do myself.
</p><p>
This could end up being an awesome customer service story. I'd love to write that half, if you'll let me.
</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-52928448851381759282012-06-28T08:56:00.002-04:002012-06-28T08:56:00.936-04:00Music of the moment, May 28 2012I've been saving this one for Memorial day for reasons that will be obvious shortly.<br /><br />Before that: Thank you to all of our Vets, past and present. You walk the wall many of us would or can not so that we can have our comfortable lives and myriad opportunities. Thank you. <br /><br /><a href='http://www.youtube.com/watch?v=_bXYSmgpErI'>The War was in Color</a> by <a href='http://carbonleaf.com/'>Carbon Leaf</a><br /><br />This is a poignant tune; the lyrics that tug at heartstrings of any who have considered the sacrifices of the military of whatever nation that they come from. They tell a story of a grandfather who actually was in a hot zone (lyrics suggest WWII, Pacific theater), who recounts his time there when his grandson finds a box of photos from that time. <br />Well written, evocative lyrics can tell stories that can make simple music powerfully emotional. This is one excellent example. <br /><br />Carbon Leaf's website: <a href='http://carbonleaf.com/'>http://carbonleaf.com/</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-72065431637739300192012-02-08T12:04:00.004-05:002012-02-08T12:13:51.730-05:00Music of the moment, Feb 8 2012The internet has opened up venues for what would only otherwise be local cult acts. <br /><br /><a href="http://www.youtube.com/watch?v=MejbOFk7H6c">Needing/Getting</a> by <a href="http://www.okgo.net">OK Go</a><br /><br />OK Go has, in the particular piece above, combined the art of logistics with the art of music and developed something rarely heard outside of acts like the Blue Man Group. The trademark wild and quirky sound that has dominated their catalog is still there, albeit in a completely different format than their older stuff, due to the nature of the "instruments" "played". <br /><br />While less musical genius and more creative genius is involved with this tune, it still amuses me in a fashion that I can't quite put a finger on. Perhaps with the visuals and the idea of all the work that has been put into just getting this to the table gives me pause. <br /><br />OK Go's website: <a href="http://www.okgo.net">http://www.okgo.net</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-11141553.post-7788344806814798442012-01-23T09:27:00.002-05:002012-02-13T16:10:24.312-05:00Music of the moment, Jan 23 2012A bit of older music this week:<br /><br /><a href='http://www.youtube.com/watch?v=NIGMUAMevH0&ob=av3e'>The Impression that I get</a> by <a href="http://www.bosstonesmusic.com/">The Mighty, Mighty Bosstones</a>.<br /><br />The Mighty, Mighty Bosstones came into the pop rock scene in the early to mid 90s with the ska and swing "resurgence". This tune, arguably, is one of the defining tunes of the time.<br /><br />Sonically all ska (and ska-punk, which is closer to what the Bosstones really fit) is incredibly interesting: You have a mid-range brass/woodwind section, an electric guitar that primarily stays on the top three strings, and lots of high tom/snare/hat work by the drummer. This leaves a HUGE hole for the bass (and sometimes baritone saxophone) to fill. Many of the bassists in this genre do their best to slam a ton of notes into the music to fill that void. The Bosstones often follow that recipe, this tune being no exception, and it works well. <br /><br />I have a special place for this tune in my heart, evidenced by the fact that <a href="http://www.slaquer.com/2005/07/quintessential-radio-tunes-for-bass.html">I've written about it before</a>. <br /><br />The Mighty, Mighty Bosstones website: <a href="http://www.bosstonesmusic.com">http://www.bosstonesmusic.com</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-76490310437092333822012-01-16T12:10:00.005-05:002012-01-18T22:49:55.666-05:00Music of the moment, Jan 16 2012A classic tune this week: <a href='http://www.youtube.com/watch?v=DOw3w-00Jqw'>Lukey</a>, a traditional folk song from the tiny island of Newfoundland. <br /><br />This particular arrangement is performed by two great bands in the genre, <a href='http://www.thechieftains.com/'>The Chieftans</a> and <a href='http://www.greatbigsea.com'>Great Big Sea</a>. It has the feel of an old sea shanty, and sonically is an acoustic assault on the ear. There is so much going on in the music it's hard to track sometimes, but it comes out as a coherent piece of fun due to the talent that both of these groups bring to the table. <br /><br />I've found myself drawn to Canadian/Irish folk music over the past few years. The instrumentation is completely fresh to my ear, having followed a gamut of preferred genres through the years from prog rock and metal, to jazz, to pop-rock. Accordion, tin whistle, violin, mandolin, dulcimer... While none unique to the genre, very unique to hear in something that has appeal to those outside of those who grew up with this kind of music. <br /><br />The Chieftans: <a href='http://www.thechieftains.com/'>http://www.thechieftains.com/</a><br />Great Big Sea: <a href='http://www.greatbigsea.com/'>http://www.greatbigsea.com</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-69099947303097898122012-01-09T12:31:00.003-05:002012-01-09T12:31:00.801-05:00Music of the moment, Jan 9 2012This is something I found last year, again, via <a href='http://www.pandora.com'>Pandora</a>.<br /><br /><a href='http://youtu.be/6A47gaKoOkw'>Thinking Loudly</a> by <a href="http://http://www.elteneleven.com">El Ten Eleven</a>.<br /><br />This reminds me very much of something that <a href='http://www.manthing.com'>Michael Manring</a> (one of my personal bass playing heroes) would have put on his solo album Thonk. The bassist is working hard to put a lot of well placed notes onto the plate and succeeds well. The music starts small and simply with keyboard pads which progressively grows into a wall of sound. It sets you back down gently, like a falling leaf brushes the ground in a light breeze before it comes to a standstill. <br /><br />El Ten Eleven's official website: <a href="http://www.elteneleven.com">http://www.elteneleven.com</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-33898380943569039842012-01-02T12:13:00.008-05:002012-01-04T16:13:10.778-05:00Music of the moment, Jan 2 2012I find that I have found lots of interesting stuff via <a href='http://www.pandora.com'>Pandora</a> and have decided to share some of it. <br /><br />For this week, the music that caught my attention was this: <a href='http://youtu.be/2guwCl9yw38'>Go Do</a> by <a href=http://jonsi.com/">Jonsi</a> (<a href='http://vimeo.com/9289064'>This Vimeo link</a> has the audio encoded a bit louder)<br /><br />I love how the huge floppy kick drum, which usually doesn't work anywhere, dovetails with the rest of the music sonically. Woodwinds and strings dance and spin around keyboard pads, percussion, and Jonsi's somewhat haunting sounding tenor voice, weaving something that is simultaneously acoustically dense and yet still maintains a considerable amount of air within it. <br /><br />Jonsi's official website: <a href="http://jonsi.com/">http://jonsi.com/</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-74498897633037595632010-03-12T22:40:00.004-05:002010-03-12T22:59:53.236-05:00Against all odds...<a href="http://www.kia.com">Kia</a> has made a car that's not a complete yawn or completely offensive to look at. The <a href="http://www.kia.com/#/forte-koup/explore/360-views-and-colors-exterior/">Forte Koup</a> (no points for stupid spelling, marketing) looks to have "borrowed" heavily from the Honda Civic Coupe design, and I think they've made a good go at it. The 4 cylinder mills driving the front wheels should be sewing machine reliable if Kia's recent track record has anything to say about it. The cars are well appointed, even the base model has cruise, 4 discs (which is becoming more common these days, but surprisingly is not standard on all cars yet), AirCon, tilt steering, more airbags than you can shake a stick at, what appears to be a sane driver/center console setup... On paper, it looks like a steal for the base of under $18k. <br /><br />Seeing one in person in the racing red was quite the shock. If I hadn't caught the badge on the front, I'd have thought it was a Honda. <br /><br />I'd LOVE to hear some other opinions about this car. Preferably from someone who's driven one. I suspect that it probably shows its econobox roots when driving, with a noisy interior, cheap, plastic that creaks, and so forth. From what I can see, it looks like there's potentially some significant blind spots in the back, so proper mirror adjustment would be very important. <br /><br />Hats off to Kia, trying to get a little further away from their econobox mold.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-36431387582847764792010-02-19T22:24:00.005-05:002010-02-19T23:51:03.048-05:00World building part 2: Details matter. Precision, perhaps not so much.Let me qualify this by "this is my opinion. There are many like (and probably more unlike) it. This one is mine."<br /><br />Being human is a study in what some have termed as "beautiful mess". We often strive for perfection and usually fail to achieve it. <br /><br />And to be completely honest, that's not all bad. "There is no art in perfection. There is no perfection in art." I am a firm believer in this statement. I find it borne out in many things, such as the fact that humans are not perfectly symmetrical. Anything that can be made perfect can be made perfect again. That is mass production, not art. There is nothing inherently WRONG with this either, but it is my take on it.<br /><br />All of that said, I say this with all the care I can muster for writers as artists: The reader typically doesn't care about precision when it comes to numbers. All they need is reference or something close. Science fiction writers tend to be the worst offenders when it comes to an excessive amount of precision when it comes to numbers. It's almost as if the thought of a rough number when it comes to speed is considered a bad thing by some of them. I (as I'm certain others) find the overly precise numbers jarring and distracting. <br /><br />This falls back to "being human". Precision is required in some things. Engines are built to thousandths of an inch. But the reality of it is, in the car, the gauge doesn't *really* need numbers because we know that it "should be about there". This kind of thing pervades life. We know when somethings "correct" when it sits inside of arbitrary tolerances that we find through observation. We know that when it gets outside that tolerance something's wrong. There's no precision there, but it works organically, and generally works well. <br /><br />With that out of the way, let's look at an example that I found online. <br /><br />I found this with StumbleUpon (and found it interesting enough to continue reading): http://www.cygnuswar.com/2009/10/episode-50-sky-of-memories.html<br /><br />The paragraph that I'm going to excerpt here is the one that inspired this post. I will qualify all of this with a "I haven't read the rest of the story yet" so I don't know if the specifics really do play into story or not. If they do, I apologize in advance. <br /><blockquote><br />She swallowed in that moment, reflexively, and forced her eyes to focus on the Wallace class in the distance. Her rig’s PAT array had picked up Mac’s Slashdriver at 238 kilometers distant, closing in on a full burn of a few km/h over 1800 with the massive bulk of the starship hanging in blue nothingness another handful of kilometers behind him. Her own throttle was notched near half in conventional drive, 1522 km/h. 5, maybe 6 minutes out.<br /></blockquote> <br /><br />What struck me as strange in this is that the writer recognizes the entire idea behind human "fuzziness" when it comes to numbers. "5, maybe 6 minutes out" and "another handful of kilometers out" suggests this to me. <br /><br />If the writer understands this, and gets it, why do they use specifics in other places: "238 kilometers distant", "1522 km/h". The blending of the two makes it especially jarring to me. <br /><br />Were I to suggest a little bit of editing (and far be it from me to do so, as I, while I do write, often do so for my own pleasure, not for someone else to read), I would recommend the following:<br /><br /><blockquote><br />She swallowed in that moment, reflexively, and forced her eyes to focus on the Wallace class in the distance. Her rig’s PAT array had picked up Mac’s Slashdriver at just under 250 <a href="http://www.cleavebooks.co.uk/dictunit/dictfaq.htm#klick">klicks</a>, closing in on a full burn around 1800 km/h with the massive bulk of the starship hanging in blue nothingness another handful of kilometers behind him. Her own throttle was notched near half in conventional drive, just over 1500 km/h. 5, maybe 6 minutes out.<br /></blockquote> <br /><br />It reads more organically. Everything flows in a fashion that doesn't jump from incredible precision to fuzziness. The numbers aren't distracting anymore, they're just indications that "one's moving slightly faster than the other, and they're not that far apart at those speeds", which I sincerely believe is what the author is trying to convey. Depending on the audience, the "5, maybe 6 minutes" thing could probably be left out, or replaces with "a handful of minutes at the most". This does get into the more subjective and style elements that are beyond the scope of this small post. <br /><br />Fantasy writers aren't immune to this either, though they appear to be less inclined to fall into this trap. Age, however, seems to the area they are wont to use overly precise numbers. <br /><br />When describing age, it is not necessary to use highly precise (or even loosely precise) numbers. Usually, you can get away without using a number at all. "Approaching middle age" is close enough for most people to get that "well, that one's in his thirties or so". "Just entering puberty". "Elderly". "Wizened". These are all great words and phrases that leaves the reader's imagination to work. And isn't that what we all want to do?Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-41371610346853704712010-02-16T19:42:00.003-05:002010-02-16T19:55:30.491-05:00World building for fiction writers, part 1 in an ongoing series: An introductionLet's get this out of the way right off: World building the correct way is hard(tm). Insanely hard. Just writing this series is looking insanely hard. <br /><br />That said, so is writing anything longer than a short story. Which is what's brought us to here: if you are writing fantasy that's not based in a familiar environment (like, oh, say, documented historical or current Earth), or a pre-developed universe (Arda, Dragonlance, Forgotton Realms, etc), and longer than a novella, you are choosing to build your own world. <br /><br />World building isn't a bad thing to do. Just understand that you *need* to do more work in one form or another for your writing to hang together well. Some people can hold all of the details of their created world in their head. I prefer a separate document that I can refer to, since my memory doesn't serve well due to the volume of stuff that's on my mind at any one time. Documenting it for me solidifies the concepts, and sometimes will help me develop parallel ideas that are related to the concept I'm working with at the time. <br /><br />No matter what tracking method you choose to do, be certain you can track a volume of minutiae that can (read: will probably) grow very large, depending on how much detail you want to put into your world. I'm personally of the opinion that "details matter" (for reasons I will touch on later), so usually when I'm working on something like world building, I usually wind up with a large volume of stuff that never makes it into anything I'm writing, but does influence my writing both directly and indirectly. <br /><br />Firstly, a well thought out world makes your future writing MUCH easier. <br /><br />You know the rules, and what will work and what is improbable. You won't stomp on yourself in the future with stupid mistakes like Hollywood does all the time when it comes to computer technology, which those of us in the tech industry can find insanely distracting, because "It makes no sense". Which brings me to my second point.<br /><br />A well constructed world helps us prevent distractions to the reader.<br /><br />Let me be perfectly clear: You *NEVER* want a reader to say "that doesn't make sense". EVER. Keep this in mind as you write. If someone reading one of your works gets to the point of saying "That doesn't make sense", you, as a communicator, have failed to communicate something very important, or have transgressed something either stated or preconceived in your writing. Your story loses credibility, and as entertainers (yes, if we are writing fiction, we are entertainers, as well as communicators), if we break the suspension of disbelief, the reader will lose interest. <br /><br />Details matter. Don't think otherwise.<br /><br />Even if you don't use the details in your writing directly, you have them to refer back to. Details bring your writing alive. Knowing the minutiae of your world down to the shape of the average blade of grass may be a bit on the excessive side, but if you can do that, I encourage it. An example of where details come in handy:<br /><br />Say that gravity on your new world is 1/6th Earth normal. This is roughly normal gravity on the moon for a reference. <br /><br />Knowing this, we let the reader in on a few things without ever telling them "the gravity is 1/6 Earth normal", like the average human(oid) is close to 8' tall and very lanky, because vertical growth is less inhibited. They could bound with large leaps due to their long legs and light weight due to the lack of gravity. Flora would be the same: tall and lanky. The planet could either be very small, or be large and have very low density. If the planet is very small, it would rotate slower than the regular 24 hour day as to not sling off/tear the atmosphere. Perhaps it is a moon of a Earth sized planet, which brings up a whole NEW line of difficulties that I won't get into here. If you *do* have your new world as a moon of a larger planet, you can use photos of "Earthrise" as reference for describing the rise of the parent planet on your world. <br /><br />Your planet's gravity is a detail. Not a huge detail (I say, tongue firmly planted in cheek), but a detail that can shape your writing. Details matter.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-53137377899779612432009-07-29T16:39:00.006-04:002009-07-29T17:09:45.840-04:00Stupid perl Tkx tricks, part 1 in an ongoing series: Tkx::tk___dialogI'll drop snippets of code here when I get stuff to work.<br /><br />I've been programming desktop tools with perl/Tkx for work. I know that some may call me insane for doing so, but I am fairly well versed with the language, and I like how it allows me (most of the time) to get stuff done, instead of fighting me. For the Tkx part of my work, I've been leaning heavily on <a href="http://www.tkdocs.com">Tk Docs</a>. <br /><br />While Tk docs is a GREAT resource (and I'll be sending this post to the maintainer of it), it is far from complete. Today, it was "the standard dialog boxes that I've found are not sufficient for my needs".<br /><br />To expand: I needed a dialog that had 3 buttons titled "Yes", "No", and "Yes to All". None of the standard dialogs have this. The closest uses "Cancel" as the third button, which, while it would *work*, I think that it isn't really nice to treat the user that way. Or teach them bad habits.<br /><br />Since Tkx is basically (by my understanding) translating Tkx specific perl directly to Tk commands, most (if not all) of the Tk reference commands should work. I found that you can make custom dialog boxes with buttons that return numbers corresponding to their position in the list with Tk, using <a href="http://www.tcl.tk/man/tcl8.5/TkCmd/dialog.htm">Tk_dialog</a>. To implement this with Tkx in perl, I used the following<br /><br /><code><br />use strict;<br />use Tkx;<br />my $user_response = Tkx::tk___dialog(<br /> "[window name]",<br /> "[window title]",<br /> "[text in body of dialog]",<br /> "[tk bmp library icon (may be left empty)]",<br /> "[default button (may be left empty)]",<br /> "[button 0 text]", <br /> "[button 1 text]", <br /> "[button n text]",<br /> );<br /></code><br /><br />$user_response will return a number corresponding with the button number. The dialog box *does not* blend well with the OS widget set, at least with ActivePerl 5.10 on Win32. The icon (if you use one. I haven't dug for a list of icons yet) is a black and white icon, and the font used in the body text does not match what is used everywhere else. The *buttons* do use the proper widget settings, however.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-11141553.post-59825839079102656152009-06-20T20:07:00.003-04:002009-06-20T20:56:00.338-04:00On failure...This was brought about by a simple question posed by another: "If you could do one thing, with the guarantee of success, what would it be?". The follow up question was "Why are you not doing it?". Many in comments reflected that there is no such thing as a guarantee of success. <br /><br />One definition of failure: an event that does not accomplish its intended purpose.<br /><br />Yeah, that happens a lot. To all of us. <br /><br />It's often not a good thing. It's nothing we strive for consciously. <br /><br />But is it *always* a bad thing? <br /><br />Let us set aside for a moment the idea that failure is always a bad thing, and focus on what failure represents. <br /><br />To fail, in the definition represented above, must first be preceded by a purpose of goal. <br /><br />One definition of purpose: an anticipated outcome that is intended or that guides your planned actions.<br /><br />Taking these two ideas together, I submit that, while there is no reward in failure, there should not necessarily be shame in it either. <br /><br />A person who failed has a dream, that they attempt to make reality. Just the initiative to step out of the safe zone to try can be cause for at least an appreciative nod. How many of us have stuck our neck out for some purpose we deemed good enough? How many of us even have a purpose better than "work 40 for a paycheck"? These questions make me uncomfortable myself. <br /><br />Failure does not have to be the end of a goal. It is a set back. Ask anyone who writes code for a living. You write, you compile, you test, you debug, and repeat. If failure ended every goal, we'd still be writing with sticks in the sand. <br /><br />Giving up, on the other hand, has no reward, except for lessons learned on the path. I speculate that in giving up, we give a tacit nod to the idea that perhaps our goal was ultimately unworthy of the time and energy we put into it. This is another admission that gives me uncomfortable pause. <br /><br />In my profile, I give a sentence to dreams, failure, and surrender. I think it's worth quoting here, despite the fact that it may be somewhat self serving: "I find that dreams are malleable, and even if left unachieved, the ride can still be entertaining and rewarding, even if heartbreaking and depressing."<br /><br />In my past, I have tried to realise dreams that I felt were worthy. I have failed miserably in them, due to a number of reasons. Some of my own doing, some because people suck. I am included in the latter statement as well. In the end, I am the one who made the decisions that I did that led me to the failure, and eventual shelving of these dreams. In that surrender, I have learned that sometimes, even tenacity cannot make some things work. "All of your decisions are half chance. So are everybody else's". There is wisdom to be gleaned from that statement, more than it would appear. I leave the analysis of that as an exercise to the reader.<br /><br />Someone has to make fries. Just remember, they may have big dreams that they wanted to fulfil as well. They may just have been "right place, wrong time", and had to let them go because of other decisions they made. They may have been unrealistic. They may have been inane and unworthy goals. If they had the initiative to *try*, they have been true to the human spirit. <br /><br />Find a worthy goal. Grind at it until you succeed. Mine is currently be the best husband and father I can.Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-11141553.post-28627851469862723732009-02-08T14:19:00.003-05:002009-02-08T21:17:58.767-05:00Writing believable antagonistsOne of my pet peeves in most fiction is the lack of a believable antagonist. Here's a small selection of bad antagonist ideas that are used across the board:<br /><br /><ul><br /><li>Evil for evil's sake. This antagonist has no real reason to be evil/do evil, they just do it because they can. <br /><li>Evil because it can grant immortality. This antagonist has latched onto an idea that promises immortality, yet to do so, they have to perform some sort of horrific act that any sane thinking person would not do.<br /><li>Evil by nature/nurture. This antagonist was "born into" whatever position that they are in, be it a psychotic serial murderer, or dictator that is to "carry on the tradition of their lineage". <br /></ul><br /><br />Bleh. Drivel. Some of it can be entertaining drivel (Harry Potter is a current example of this), but really, it's at best brain candy, as opposed to good stories.<br /><br />Let's put aside the evil versus good discussion for a moment and discuss psychology for a moment. <br /><br />Most antagonists are human, or (as in most fantasy settings) have similar mores to humans concerning the basic principals of life and the treatment of others. Most people have some sort of internal moral compass. Some may not match our own, but they have a set of morals that guide their decisions. Most people would rather be left alone to their own devices. "You let me play here, I'll let you play there, we'll be kosher." There are outliers, power grabbers, those that wish to be benevolent dictators, but honestly, most of us want to do our own thing, and not be bothered too much. <br /><br />Now, before we continue with the idea of believable antagonists, let's look at what makes a great, believable protagonist. <br /><br />Most good fiction is written in such a manner that the reader tries to put themselves in the shoes of the protagonist. We live these characters lives with them. We hurt when they hurt. We celebrate internally their victories. Good protagonists we can empathize with. They breathe. They live in our minds. The best protagonists will move our emotions and lives in such a manner that it gives us pause as we reflect on our own lives and wonder how better to emulate the good qualities of the protagonist. <br /><br />One of the most common definitions of "hero" is "a man distinguished by exceptional courage and nobility and strength". I refine this further by saying that a hero is "a normal person performing extraordinary feats in extraordinary circumstances". <br /><br />A good hero we can click with. We *want* them to win. We *want* Joe Sixpack to become an avenger and kick the crap out of people who deserve it. We *want* to be that person, because, from our perspective, they *are* the everyman, living with unspeakable demons in their lives, and dealing with them in a manner that idealizes the human spirit of tenacity and justice. <br /><br />So, with the above in mind, let me break down what to me makes a believable antagonist:<br /><ul><br /><li>They are the same kind of person that the hero is. The best antagonists are cut from a similar mold that the protagonist is. The closer the better. It lets us know that there *is* a darker path that the protagonist could have walked, but chose not to because of decisions made, and events witnessed. <br /><li>They have a noble goal. The thing they fight the protagonist for is admirable. They desire good ends to their actions. They believe, and can make you believe that their goal is just. <br /><li>They, like the protagonist, believe they are on the right path to reaching their goal. They have considered options, weighed consequences, and struggled with the decision that they have come to. They walk the path they do, not because it is right, they walk the path because it is the only way they see they can attain their goal. <br /></ul><br /><br />Get close on the three above, and you'll have a readable antagonist that is a worthy adversary to your everyman hero. <br /><br />An example of a *great* antagonist, from the most unlikely of places, Hollywood: Magneto from "X-men, the movie". <br /><br />Magento and his adversary Doctor Xavier are very similar: Both (while extraordinary) are cut from similar molds as people who have extraordinary abilities. They both have the same goal of integrating these extraordinary people that have started evolving from humanity into the rest of humanity in a manner that they can coexist peacefully. <br /><br />Magneto, however, has come to the conclusion that humanity will not accept this new stratification, these superior beings, peacefully, if at all. The rest of humanity will only accept this if the leaders of the world deem it necessary for them to do so. His plan is to forcibly cause this transformation in the leaders of the world. Even if it may cause the death of some or all of these leaders. <br /><br />That, my friends, is an *excellent* protagonist, and the story told is wonderful.Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-11141553.post-3155690524435351322009-02-04T19:59:00.000-05:002009-02-04T19:59:00.629-05:00Concerning zombiesI've had a few friends try to get me involved in one of Valve's latest games, <a href="http://www.l4d.com/home.php">Left 4 Dead</a>. I keep telling them "zombie hacking isn't my gig.". They keep telling me "But it's a cool game!", and list off lots of reasons concerning the AI, objective based play style, and other things. If I didn't have other things vying for my attention, and a bit more disposable income, I'd consider it. <br /><br />However, since there's obviously interest, why not list a few things that <b>have</b> piqued my interest that do refer to zombies?:<br /><br /><a href="http://www.youtube.com/watch?v=cOlznuyPOeM&feature=related">A fan made music video of the Jonathan Coulton song "RE: Your Brains"</a>. Typical Coulton funny. The juxtaposition of loose, jangly guitar music with heavy pop influences and the subject material of the lyrics just makes me laugh. <br /><br /><a href="http://www.youtube.com/watch?v=Tkk6IMm5Z8Q">A fan made music video of the No More Kings song "Zombie Me"</a>. Similar description as above. <br /><br /><a href="http://en.wikipedia.org/wiki/World_War_Z">Wikipedia article concerning the novel "World War Z"</a>, which is supposed to be a great book. I've been meaning to borrow it from one of my friends for a while now.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-11141553.post-88992183508085033132009-01-16T15:21:00.004-05:002009-01-20T08:59:40.160-05:00Why I prefer Open Source for most things.This is a rant that I've had for a while. I've finally articulated it properly now, in a conversation with my boss. This post refines and expresses those ideas further.<br /><br />It typically makes no business sense to use closed tools. If it's an operating system, a desktop application, or a service. Here's why:<br /><br />It's all about the data, dummy. <br /><br />None of us really cares *how* we get the data we want. We just want the data that we need, if it's music, video, text, photos, whatever in the least painless method possible.<br /><br />So, assuming we agree on the fact that it's all about the data, it's a small step to reason that the tools on the back end *really* don't matter anymore. <br /><br />So why use tools that cost money for something you can't modify? <br /><br />To be more specific, why not use tools that don't cost anything, that allow you (or someone you hire) to write other tools for you, with all the code there for you to make modifications to suit your environment? <br /><br />With closed source stuff, you get whatever documentation the vendor gives you, whatever APIs the vendor gives you, and maybe some undocumented stuff that you or someone else has found. If you can't get it done, you have to switch tools, sometimes with great cost fiscally and training. On top of all that, you have licensing issues to deal with, sometimes becoming a complete nightmare in tracking what machines have what software and moving said software around as machines get retired or repurposed.<br /><br />I know the problems with training someone on a new version of a piece of software. Office 2007 for example has made things terrible by pitching the entire interface that was being used into the can and placing an entirely new interface in front of the user. Why not move to OpenOffice at that point? It will import nearly every document produced by anything. <a href="http://katana.oooninja.com/w/odf-converter-integrator">Even Office 2007 documents</a>. It can save in most formats too, but <a href="http://www.freesoftwaremagazine.com/columns/odf_ms_office_no_really">that is mostly a moot point</a>. It'll even dump pdfs, which is available on almost every device and OS under the sun.<br /><br />That's just one example. Here's another that hits closer to home for me:<br /><br />We have an appliance made by a company. It produces the very heart of our work for us. The company builds a custom piece of hardware they stick inside of a commodity box. This custom card has drivers that the company writes, as well as a software package to utilize all the functionality on the card. Sounds like a perfect place to use open software to keep costs down.<br /><br />The thing is, they haven't. They run Windows Storage Server 2003 on the box. It ships with a copy of Office on board. It has a commercial editing tool to edit the data that it generates. It ships with commercial recovery software, commercial anti-virus software. They could have used open alternatives, paid another developer $150000 for a year to work out the issues that they found with the open software, and still sold the appliances for the same cost as they do now. I figure they have at least $1000 to $2000 in commercial software on the box. Sell 150 appliances, the developer is paid for, as well as all the licensing. No other investment required, except for the next version of the software/hardware combination that will need to be authored. You could contract the developer instead of hire them and keep that cost down even further. <br /><br />There are plenty of other examples and places for open tools as well. Mail, web services, going so far as to operating systems. Ask <a href="http://news.cnet.com/2008-1082_3-5065859.html">Ernie Ball</a>. Roasted by the BSA to the tune of $65000, and another $35000 for lawyers to talk them down to that number. Due solely to licensing. <br /><br />Open tools allow you to build wrenches and understand completely the weaknesses and strength of your new wrench. <br /><br />And let's be honest: We all like good tools.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-11141553.post-23063989906952983992009-01-16T15:20:00.002-05:002009-02-04T19:07:50.401-05:00Pictures of Alex<a href="http://s549.photobucket.com/albums/ii367/mrsslaq/">http://s549.photobucket.com/albums/ii367/mrsslaq/</a>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-11141553.post-70818752110974162242009-01-06T18:43:00.003-05:002009-02-04T19:08:47.192-05:00Welcome Alexander James Ellis!8 lbs, 6 oz, 20.25". Healthy. Pics coming sometime tonight.Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-11141553.post-78460658378101843072009-01-06T16:27:00.003-05:002009-02-04T19:08:32.086-05:00Doc says "It's time"Doc says that with all the monitoring looking like it is, a c-section is the way to go now. We'll be in the O. R. within the hour.Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-11141553.post-26812101376809380752009-01-06T15:53:00.001-05:002009-02-04T19:09:08.495-05:00Progress reportNo progress, but lots of pain. Drugs on the way, thankfully!Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-11141553.post-83008343628053361892009-01-06T07:10:00.003-05:002009-02-04T19:09:27.369-05:00It's that time.As many of you know, the Mrs.is great with child. The doc is saying too great. Today is the 42nd week of the journey. Apparently, after this time the likelihood of complications due to size and other issues.<br /><br />We're both nervous and excited. It will be an interesting next chapter to our lives. <br /><br />More news as events warrant.Unknownnoreply@blogger.com2