Tuesday, August 13, 2013

Making Chainmail

I've decided to make a set of chainmail. Ever since high school, I've known people who had either made or were making a set and I'd always wanted to give it a try. Finally, last weekend, I went and bought the equipment and materials that I would need to get started.

I've read about how to do it extensively and it was just a matter of getting started. Here's what you need to make chainmail:
- Wire. I chose 14 gauge aluminum wire. I plan to also get some copper, brass and maybe colored aluminum wire in the future to add some color and style to the armor.
- Wire cutters. Choose good, strong cutters with a nice grip. You'll be using them a lot to cut the rings and you want something that will last a long time and be comfortable to use.
- Steel Rod. You'll use this to wrap the wire around to make the rings. I bought a 4' long rod, but I might suggest a 3 or 2 foot rod instead as it can be hard to wrap the wire by yourself with that long of a rod. My rod is 3/8" in diameter, but I've read about people using other diameters.
- 2"x4" board. You'll build a contraption with the boards to hold the rod while you're wrapping the wire around it. I had some scraps in my garage that I used to build mine.
- Drill. You'll probably need this to build your contraption and also to help you wrap the wire around the rod.
- Gloves. You'll want at least one glove to protect your hand while wrapping the wire. Don't use gloves that have a rubber grip as it will stick to the wire and could get your finger stuck in the wrapped wire. Believe me that this hurts a lot.

I'm not going to go through all the steps, there are tons of tutorials out there from people with more experience. If you're interested, go check some of them out.

I started with the plan to just make a bracelet for my daughter, but it turned out to be so easy to make a chain that I just kept on going. My first attempt at wrapping the wire didn't go very well, I almost cut my finger off when it got stuck in between the wire and the steel rod when my gloves stuck to the wire and pulled my finger in. Ouch. Also, I had trouble keeping a constant gap, but I didn't have to throw away too much of my first attempt. I made 103 rings in my first attempt. I haven't had a second attempt yet, but I think I'll get to 115-130 or so rings when I do.

Here are shots of my progress. Stay tuned for updates!

My wire wrapping contraption
My first attempt made 103 rings.
My first two sets of five rings.
Connecting those two sets.
My first chain!

Monday, July 22, 2013

Story: Perfect Match

After several months, I finally managed to write a story! This is another Chuck Wendig flash fiction challenge. This one was to get a random plot and write a story from that. I'll keep what my result was until the end. I wouldn't want it to spoil anything.


Mike double checked the form to join FindYourMatch.com. Satisfied that he'd filled out the form without embellishments, he hit the submit button. He sat back and wondered when, or if, he'd get a response when his computer signalled that he had an email.

Expecting a welcome message from the dating site, he leaned forward and opened his inbox. That email was there, but in addition was an email saying he had a message in his FindYourMatch mailbox. A wave of excitement tore through Mike as he went back to his browser and refreshed the page. Sure enough, there was a message from a woman with the simple title of "Interested in meeting". Another wave of excitement, this time mixed with nervousness, hit him. He clicked the link waited eagerly for the page to load.

He was greeted by an image of a woman in a flight suit standing by a fighter jet. The image told him that she was a pretty brunnette of average height that is or was in the military as a pilot. Her message was short and to the point. Her name is Pam, and she read his bio and was interested in a meet up tonight.

He fired off a message back to tell her he was interested in meeting. Before he could even sit back again, he got a reply telling him where to meet her. He looked at his watch and jumped up. He didn't have much time to get ready if he was to make it on time.

When he arrived, he saw someone who looked like Pam talking to the hostess and walked over. "Pam?"

She glanced at her watch and nodded. "Ah, five minutes early, excellent." She looked up at him and smiled. Mike thought she had a beautiful smile. She held her hand out and said, "It's nice to meet you, Michael."

Mike cursed himself for putting his full name on his profile. The only person who called him Michael was his mother. He took her hand and shook it, smiling back at her. "Everyone calls me Mike, actually."

Pam frowned and said, "Well, Mike, it's customary to put your preferred name into your profile." She made a wave of dismissal. "Never mind. Our table is ready, shall we?"

Mike nodded and followed Pam and the hostess to their table. They looked over the menu in awkward silence for a few moments before Mike said, "I just signed up for FindYourMatch today, so I was a little surprised to get your message."

"I have an alert for when a man in my area signs up that meets certain criteria. It is more efficient than sifting through old and out of date profiles," Pam replied.

Mike nodded. "That makes sense. I didn't know you could do that alert thing."

Their waiter arrived then and asked, "Are you ready to order?"

"Typically, you're supposed to ask for our drink orders first," Pam said. "However, I am ready to order my meal. How about you, Mike?"

Mike nodded and they ordered their meals and drinks. As Pam was ordering, Mike looked her over and decided there was something he really liked about her, but he couldn't quite put his finger on it.

The waiter left and Mike said, "So, are you a pilot? In your profile pic, you are standing next to some sort of fighter."

Pam smiled and Mike thought again that she had a beautiful smile. "Yeah, that one is a ZF-132. It was fun to fly, but probably won't make it to production."

"What does that mean? I've never heard of that model," Mike replied.

"You'll likely never hear of it. It failed several tests regarding safety, operability and performance." Seeing that Mike was still confused, she added, "I'm a test pilot for the USAF."

"Oh, that must be dangerous," Mike said, concern in his voice.

Pam laughed, "It's not as bad as in, say, 1950, but it can be dangerous. Fortunately, we haven't lost a pilot since I joined the 412th a few years ago." She looked down at the table. "The silverware isn't placed correctly. The fork goes on the left and the knife on the right."

Mike noted that his silverware was misplaced and corrected it, too. He looked back up at Pam and said, "I'm glad we could meet up for a date-"

"You're mistaken, Mike, this is just an informal meet up, not a date," Pam interrupted.

Mike was taken aback a little, but continued, "Err, as I was saying, I'm glad we could meet up on such short notice. I'm having a good time."

Their meals came and Mike told Pam about being a college math teacher. Then, Pam told Mike more about being a test pilot. They ordered dessert and another round of drinks. At closing time, the waiter brought them their bills.

Mike reached for both checks and said, "I can cover these."

Pam quickly scooped up her bill and shook her head. "Maybe on the first date, Mike, but it wouldn't be proper for you to pay for my meal at an informal meeting of friends."

"So, you're saying that we're going to have a first date?" Mike asked with a smile on his face.


Have you been able to guess the scenario?  My scenario was:
The story starts when your protagonist joins an online dating site.
Another character is a test pilot who wants everything done by the rules.

Thursday, July 11, 2013


I've been trying to get my kids exposure to baseball by hitting whiffle balls and tennis balls to them at the park. Well, the other day they weren't interested in running around and chasing balls, so they decided to play at the park. I didn't want to do that, so I started hitting the whiffle ball and tennis ball around the open space at the park.

After a while I started to make a game of it. I hit the tennis ball as far as I could, then tried to get the whiffle ball to it in as few hits as possible. It hit me that this goal was the same as golf, so I started making a few rules and came up with Basegolf.

Here's what you need to play:
1 baseball bat
1 whiffle ball per player
1 tennis ball

I'm using an aluminum bat, I don't know how a wooden bat would effect the game since I don't own one. If you try the game out with a wooden bat, let me know how it works out!

The rules are simple and designed for solo or group play.  The game is best played in a large space with some obstacles, but probably not a heavily wooded area.

You start the game in one corner of the area you intend to play in.  Make sure all players know what the out of bounds, or foul territory will be as if they hit a foul ball, it will cost them a stroke.  You may decide, however makes sense to you, who goes first. That person will take the tennis ball and hit it as far or close as they want.  The tennis ball is the "hole" that the players must hit their whiffle balls to.  Players take turns "teeing off" by throwing their whiffle ball into the air and hitting it towards the hole.  Then, the players farthest away from the hole take turns hitting until everyone has "sunk" their whiffle ball.  A whiffle ball counts as getting into the hole when it is within a bat's length of the tennis ball.

Once everyone has finished the hole, the next player will hit the tennis ball from the point it landed for the prior hole.  If the tennis ball is in the middle of the play area, and all players agree (or a judge if you have one), the hitting player may chuck their whiffle ball in any direction and hit the tennis ball from where their whiffle ball lands instead of from the spot of the prior hole.

Putting: You can putt by leaving your whiffle ball on the ground and hitting it with the bat.  I've considered making a rule about how you can't putt unless you're on the "green", but I haven't decided what the definition of the green would be.  If you have an idea, leave it in the comments.

Foul balls: As I mentioned before, the play area has a boundary.  Balls hit outside of this boundary are considered foul and cost the player a stroke.  They will drop the ball at the boundary where the ball left fair territory for their next stroke.  This changes a little for the tennis ball.  Instead of a plain drop, the player must make an underhand throw from the boundary.  This still causes the player a stroke.

Whiffs, Strikes and Biffs: If you don't know, a whiff is when a player misses hitting the ball when they throw it up to hit it.  This is a strike.  When you get three strikes, it costs you a stroke.  A Biff is when you hit the ball and it goes less than 10 feet.  This is a strike and you must try to hit the ball from where you started.

Finishing the game: The game is done when the players want it to be done.  The players can agree beforehand on a number of holes, or you could play the standard 9 or 18 holes like in golf.

Scoring: Count the number of strokes it takes each player to sink their whiffle ball in the hole.  At the end of the game, the player with the fewest strokes wins.

Par: I consider Par an optional rule as it can be hard for a group to agree on what the par should be on a particular hole.  It would be easier if you have a judge, I guess.

Strategies: I've considered a few strategies as I was playing by myself.  One, hit the tennis ball as close to foul territory as you can without being foul.  This has risk, but could be good if an opponent hits foul trying to get to the hole.  Two, utilize obstacles to make getting to the hole harder.  Also risky, but if you're confident in your skills, might be worth it.  Three, bunting or "pitching" can be a good tactic when you're too close to swing away and too far to putt.  Leave any other strategies that you come up with in the comments!

I've played Basegolf a few times by myself, but I think it would be fun with a partner or group.  One warning, I've already broken one whiffle ball in half with my aluminum bat, so that's something you've got to watch out for.  Try out the game and let me know if you enjoy it!

Wednesday, July 10, 2013

Geekonablog News

I can't believe that I haven't posted since April 23rd.  It doesn't seem like it was that long ago, but I guess that I've let things go around here for a while.

Well, let me tell you what's been going on in my life.  In April, I started on a new team at work, which I mentioned in my last post.  We're creating a new web page configuration app for the new web platform that Best Buy (me included) has been working on for over a year.  You may have noticed changes to Best Buy's product pages, I had a hand in that work and now I'm on the team that is going to allow more pages to go to the new cloud-based platform by having a tool to configure those pages that isn't based on the old platform.  I know that this description is a little hand-wavey, but I'm not sure how much I should be sharing.  I figure that just mentioning I'm doing this work is safe enough.

Since April, my family and I have gone on two vacations.  The first one was with my family and...my family.  Meaning the family that I started with my wife and the family I was born into (mom, dad, brother, sister and her family).  We stayed at a cabin that my sister found online.  It was awesome!  Fishing every day, hanging out, playing games, relaxing.

The second vacation was camping at the Hayward, WI KOA.  We stayed there three days and two nights with some friends.  I've stayed at that KOA and the Hixton, WI, and I would recommend either of them for anyone looking for a good time.  They have plenty of activities and they are reasonably priced.  We stayed in a small cabin (basically four walls and beds).  When the kids grow up a little, we'll probably try it with a tent.

Other than that, it's summer, so some more fishing, swimming, working in the yard, etc.  Busy, busy.  I have missed writing here and writing stories.  I've been wanting to get back to some of my serial stories (Uroth, Candy Land, maybe even Thaw Deal).  I've also wanted to do more Chuck Wendig challenges, but haven't had any weekend time to do those.  Look for something (hopefully) soon.

In the non-fiction realm, I think I might write a post about Pair Programming.  I used to be against the concept, but my new team does it and I think that I can see the benefits, but more on that when I write that post.

Tuesday, April 23, 2013

Using FreeMarker Templates in a Grails App

I've started in a new team at my job.  We're creating an admin system that is going to take the functionality of several disparate systems and put them all under one UI.  Since we're writing a whole new app from scratch that will interface with existing systems, we had our choice of technologies (within reason) and frameworks.  We ended up choosing Grails because we figured it would be easy to integrate with our other systems and provide us with easy to create RESTful services.

One of our requirements was to use FreeMarker to generate the HTML of our UI.  This is a  requirement because we're using FreeMarker in other areas and we've created a development tool that uses FreeMarker in addition to other front end technologies (JS, SASS).

The problem is that Grails wants to use GSPs (Grails Server Pages), which are like JSPs (and, in fact, compile down to JSPs).  Grails has the ability to incorporate third-party plugins into your project, and there's a FreeMarker plugin for Grails.  Unfortunately, the plugin was made for Grails 1.2 and we're trying to use Grails 2.2.1.  I tried for two days to try to get the FreeMarker plugin to work, but it just didn't seem to do anything.  It was a frustrating situation.

Having read a lot of Grails documentation over the last few days, I found that you could configure Grails similarly to how you configure a Spring application.  You put that configuration in the resources.groovy file.

import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver

// Place your Spring DSL code here
beans = {
 freemarkerConfig(FreeMarkerConfigurer) {
  templateLoaderPath = "/"
 viewResolver(FreeMarkerViewResolver) {
  cache = "false"
  prefix = "bin/freemarker"
  suffix = ".ftl"
  exposeSpringMacroHelpers = "true"

Spring configuration is, of course, XML and this is a Grails closure.  That part wasn't hard to convert.  You can find an example of how to configure FreeMarker in a Spring app looks like, here.  The only other thing we had to do was to put the line below into our BuildConfig.groovy file.

dependencies {
 runtime "org.freemarker:freemarker:latest.release"

Now, the only thing we had to figure out was where to put the FreeMarker templates.  At first, we had them in our views folder where the GSPs went, but we were getting 404s when we ran the app.  After some debugging (thanks Roy for helping debug!) we figured out that the template loader was looking for the templates in the web-app folder.  That was easy enough to fix, we copied our templates from the views folder over to the web-app folder.  After that, everything worked just fine!

So, to recap, we added a typical Spring configuration to the resources.groovy file, added the FreeMarker jar as a runtime dependency in the BuildConfig.groovy file and put our templates into the web-app folder (in the folder configured in the prefix of the viewResolver).

The solution was frustratingly simple after we figured it out.  I wrote this post because I researched and experimented on whether this was possible or not for over two days without any success.  Hopefully this helps anyone else who is trying to use FreeMarker in their Grails app.

If you're like me, though, you want to see more.  Here's an example of a generic Controller:

class ApplicationController {

    static defaultAction = "show"

    GrailsApplication grailsApplication

    def show() {
        [model: [version: getAppVersion()]]

    private getAppVersion() {
        def metadata = grailsApplication.metadata
        return metadata['app.version']

It has one public method, show.  We want that when you navigate to /app-name/application or /app-name/application/show that it displays the version of the app.  I created a template, /web-app/application/show.ftl.  Now, the template contents are:

hello world<br>

When I navigate to /app-name/application/show, I get:

Which is as expected.  Pretty slick.  We're still at the beginning, but this should allow us to borrow front -end devs from other teams since they'll already understand the view technology and we'll be using the same tools that their teams use.

Friday, April 12, 2013

Story: The Necromancer's Apprentice

This story is another Chuck Wendig Flash Fiction challenge.  It's a fun one, I hope you enjoy it!


Max sat amongst the dead, whistling to himself.  He counted them one more time to make sure he had collected the twelve bodies his master had asked for.  He nodded with satisfaction when he saw that he'd gotten enough.

Max reflected how happy he was with his current role as a Necromancer's apprentice.  He'd tried other occupations, of course, but none of them gave him the job satisfaction that this one did.

He laughed as he thought about his tenure as an apprentice in the Thieves' Guild.  When the authorities brought down the whole guild, the rest of the thieves had pegged him as a mole, but he had just accidentally led the authorities back to the hideout after stealing the mayor's "Key to the City".  Who knew that the key didn't actually unlock any doors?

Then there was the time that he tried to join the Druidic Order.  The look on those Druid's faces was priceless when he walked into a society meeting wearing the chain mail he'd found on a dead bugbear.  He still found their dislike of metal armor silly.

Max walked over to the cabinet that held the spell components that his master would use to raise the corpses.  He pulled out a little of this and a bottle of that and placed them on the ceremonial table in the middle of the room.  Next, he grabbed the large cauldron and placed it on the table.

Laying out the spell components reminded him of his tenure as a cleric's apprentice in the Church of Slinne, the Goddess of Life.  He was still making payments to pay for the repairs caused by the fire he accidentally started with the ceremonial torches.

Now, though, he'd definitely found his niche.  He'd been with his master for almost a year now.  It was Max's longest term of employment by at least three months.

His reverie was interrupted by the sound of something gnawing on bone.  Max looked over at the bodies and saw one of his master's pet rats chewing on the femur of one of the more decomposed bodies.  He ran over and shooed the creature away, shaking his head.  He didn't know why his master kept those creatures around.

They did remind him of the time he apprenticed for a Ranger in the Hundart Forest.  The Ranger's companion, a very large wolverine named Scrappy, had never liked him.  His apprenticeship ended abruptly when he accidentally lit the creature's tail on fire.  It was also how he got the scars on his thigh.  Wolverine claws could do a lot of damage.  Good thing his former master had had a healing spell prepared at the time.

He heard his current master coming down the stone stairway and quickly finished organizing the table the way he knew his master liked.

"Good evening, Max," his master, Alacast, said as he approached the table.  "Is everything ready?"

"Oh, yes sir," Max excitedly answered.  "We've got twelve corpses of varying levels of decay all ready to be risen."

Alacast spent a moment looking over the dead.  "No trouble in the cemetery?"

That question reminded Max of how he'd met Alacast.  The Necromancer had sent his previous apprentice to the graveyard where Max had been working as a gravedigger's apprentice.  He'd interrupted the apprentice as he was robbing a grave.  Max had offered to help him dig up the body, but the apprentice had refused.  As Max leaned against the gravestone to watch the apprentice work, the stone shifted and fell into the grave, crushing the apprentice.  Alacast's magic had alerted him to his apprentice's demise and he'd hurried to the cemetery.  When he arrived a few minutes later and saw what had happened, he offered Max the apprenticeship.  Gravedigger work hadn't been for him, so he accepted.

Back in the present, Max answered, "No, sir.  The gravedigger was passed out drunk again."

His master nodded and returned to the table and began the chant that would raise the corpses into undead.  Max stood behind his master watching intently as he chanted.  Max knew that this spell would take some time, so he leaned back against the wall.

What Max hadn't realized was that it wasn't the wall right behind him, but rather a lit brazier.  The brazier fell over, knocking down the one next to it and so on until the dozen braziers around the room had all fallen over.  Max cursed himself when he saw that several of the corpses had caught fire.

Alacast stopped chanting and glanced over his shoulder at Max.  Sheepishly, Max said, "Sorry, master."

The Necromancer turned and knocked over the cauldron on the table in front of him, spilling the contents onto the remainder of the bodies that hadn't been burning but were now being eaten away by the acidic contents of the cauldron.

The two of them glanced at each other and broke out laughing.  Alacast, between chortles, said, "This is why we work well together, Max.  Birds of a feather are we.  At least they were already dead."

Max smiled and nodded.  He said, "I'll get the mess cleaned up, master, and fetch you a dozen new bodies."

Monday, April 1, 2013

Table Top Day

Along with millions of other gaming enthusiasts, I celebrated International Table Top Day recently.  I love playing games of all types and I've been playing board games since I was little.  When TableTop began on Geek & Sundry, I loved it.  I already liked Wil Wheaton a lot, but having him play some of my favorite games with other geeky celebrities was awesome.

I'll be the first to admit that I don't play board games as much as I'd like, but I think that's part of the point to International Table Top Day.  The point is to take time out of our busy lives to celebrate games and to get together with our friends to play our favorite games or to try new games with new people.

My wife and I decided to stop by The Source Comics and Games for Table Top Day because I'd heard that John Kovalic was planning on being there.  We went there and played a new game that we ended up liking enough to buy.  It's called "Hirelings: The Ascent".  It's kind of the reverse idea of the typical "dungeon delving" game.  You play as one of the hirelings of the heroes that delved into the dungeon and you're trying to escape after the party has all died.  You have the heroes' equipment and you use it to evade the monsters and get out of the dungeon before the dragon's fireball catches up to you.  It was pretty fun and we got to play with the game's creator.  I think we'll try it out with our five year old pretty soon.

The highlight, of course, of Table Top Day to me was meeting John Kovalic.  I've been following him on Twitter pretty much since I joined it and on Facebook for quite some time.  I love his art, Munchkin and Dork Tower.  Meeting him was awesome and he was so nice.  We chatted a bit about the game he was playing, about Apples to Apples and Munchkin.  He told my wife and I about a Disney version of Apples to Apples that we're going to try to find to play with our kids.  Plus, I got to get my picture taken with him AND he signed our copy of Munchkin and Apples to Apples!

Table Top (the show) has increased my already great love of games.  It's made me aware of games that I didn't know about before or made me interested in games that I wouldn't have thought I'd be interested in.  Table Top Day has done the same thing for me with a special interactive component.  I went to a great store that I don't go to often enough and bought a game that I tried there.  It was a great Table Top Day and I'm looking forward to the next one!

Inside Apples to Apples

The cover of my newly signed Munchkin box!

Friday, March 15, 2013

Story - The Balance of Magic

It's been a very long time since I've written a story, much less published one on my blog.  This story is part of my Uroth world, but far in the future compared to the other Uroth stories I've posted.  It's part of a bigger story line that I have in mind, but haven't written yet.  I hope you enjoy it!


Beret sighed as he shifted his pack from one should to the other.  It wasn't a far walk from his small farm to town, but he had a lot to pick up and it would have been nice if his mule had been in a mood to make the trek with him.  Since his mule hadn't wanted to even stand up for him, he just decided to go on his own.

A sound from behind him made Beret turn and stare in fascination as a strange looking wagon rolled by him into the town square.  The first thing that he noticed about the wagon was that it didn't have a team of animals pulling it.  A man sat on a bench at the front of the wagon.  He was dressed in a funny looking garment that covered his entire body and was holding a wheel that seemed to guide the wagon to the left or right.

Beret scratched his head, trying to figure out what made the wagon move.  The driver saw him standing there and waved.  "Come to the town square, friend, and we will explain the marvels of this wagon and many others!"

Beret hesitated, but then shrugged to himself and followed.  The blacksmith shop would still be there after he saw whatever the driver had to show.  His hesitation became moot when he saw the blacksmith emerge from his shop and follow Beret and the wagon into the square.

The wagon stopped in the center of the square and the driver disappeared within through a door behind his bench.  Beret looked around the square and saw that most of the small town was turning out to see the spectacle.  The blacksmith, his name was Moost, stopped next to Beret.  "Good morrow, Beret.  Do you know what's going on?"

The farmer shook his head.  "The driver said that he would explain how the wagon moved without a team, so I followed him here."

Moost's face turned dark.  "Must be some sort of wicked magic," the blacksmith growled.

The blacksmith was twenty years older than Beret, born near the end of the Great Magic War.  As such, he'd grown up hearing war stories from his father.  Beret didn't know or care much about the war himself.  Moost's generation still feared and hated magic.

Beret's attention returned to the wagon as everyone in the square jumped when a gap appeared in the roof of the wagon and the two sides of the wagon slid down and out to form a stage nearly twice the area that the wagon had occupied.  Beret saw the driver and another man, this one wearing the elaborate robes of a mage, standing on the stage.

Moost growled under his breath said, "Mage".

Beret saw many others grimacing.  The mood in the square quickly turned from one of curiosity into hostility.  Moost bent down and started to pull a cobblestone from the road when the driver's voice rang out over the square.

"Ladied and gentlemen!  I understand your reactions to seeing my mage friend, Trianon.  The Great Magic War is still fresh on many minds around Uroth.  That is why we have come.  If you can hold off lynching us for a few moments, we are here to show you that not all magic is evil."

Beret heard hisses and grumbles in the audience.  Moost stood up with the cobblestone, but held it in his hand rather than throwing it.  The driver continued, "My name is Everet.  Trianon and I are travelling the length and breadth of Kalath, showing people the wonders of Applied Sorcery, or as it's known in some circles, Mechanical Sorcery.  Our goal is not to sell you anything, though we wouldn't turn away your gold if you see something you like."

He sent another genuine smile towards the crowd.  The crowd didn't seem as likely to riot against him and Beret knew why as he couldn't help but like this man.  Everet continued, "Our goal, instead, is to educate the masses about the large scale benefits of Applied Sorcery.  As you folks have demonstrated, there is a growing trend of distrust for magic ever since the Great Magic War.  We believe that the best way to counteract this unfortunate turn of events is to show people that magic can be used for so much good."

Everet pointed down to the wagon beneath his feet as he continued speaking.  "A great example is this self-propelled wagon.  It has many benefits that ordinary team-driven wagons cannot provide.  One, no animals to feed or hurt themselves during your journey.  Two, this wagon, on good roads, can move faster than any creature could pull a wagon safely.  Three, the mechanism that drives this wagon does not have a weight limit.  You could load this wagon full of the heaviest metal and still achieve the same speeds as if it were empty."

Beret glanced around the crowd and saw that they were as entranced as he was.  His own rickety wagonette was pulled by the most ornery mule that ever lived.  He often chose to walk to town, as he did today, instead of bothering to hitch up the wagon and drive to town.  The benefits of the self-propelled wagon were obvious to all.

The townsfolk all listened to Everet speak and Trianon demonstrate other equally remarkable gadgets for the next hour.  Beret lingered in the square as the rest of the townsfolk dispersed.  Some people approached the wagon and bought the little trinkets they saw.  Eventually, Beret was the only one left in the square.  Everet and Trianon were organizing their wares in preparation to leave when Beret finally got up the nerve to approach them.

As he approached, he heard shuffling behind him.  He turned and saw Moost with his stone hefting it for a throw.  Thinking quickly, Beret threw his pack at Moost, ruining his throw and making the stone fly wide of its mark.

Moost growled at Beret and charged him.  Beret closed his eyes and prepared for the impact with the much larger man.  A few moments later, he opened his eyes to see Moost, a panicked look on his face, hovering over him suspended in mid-air.  Beret glanced over his shoulder and saw Everet and Trainon with big smiles on their faces.

Everet walked over and stood in front of Moost.  He said, "We don't want any trouble, blacksmith.  We mean you no harm, but we will defend ourselves.  If you leave now, we'll think nothing more of this incident.  Do you understand?"  He waited a moment, then sighed.  "You can move your head."

Moost nodded quickly.  Everet signalled Trianon and Moost fell to the ground.  The blacksmith quickly got up and ran to his shop without looking back.

Everet put a hand on Beret's shoulder.  "Well met!  You were the one I saw on the road into town, are you not?"

Beret was somehow not surprised that Everet remembered him.  He seemed like the kind of person to remember everyone he's ever met.  "Well met, Everet.  I am indeed.  My name is Beret."

He smiled to himself and said, "Welcome, Beret.  What can I do for you today?  Are you interested in buying some tool to help your farm?"

Beret also wasn't surprised that Everet could guess his occupation.  He had the look of a farmer with the clothes to match.  He shook his head, "No, I don't think that I could afford any of your wares, but that is indeed what brings me to your cart."

For the first time, Beret saw the confidence on Everet's face disappear.  "I'm afraid that I'm not following you, Beret."

"Well, Everet, I don't have much to show for a lifetime of farming.  I barely scrape up enough food and money from my farm to pay for my own way.  Not enough to make any woman interested in struggling along with me at any rate.  As such, I was wondering if you'd be interested in a proposition?"

"I'm listening, Beret," Everet responded.

"One of my neighbors with a larger farm has offered to take me on as a hand and buy my property from me.  The only reason that I haven't done so is that having my own land is marginally better than working someone else's.  Your arrival gives me another option," Beret said.  "I'd like to do what you do, Everet.  I'm not a natural salesman, like you are, but if you can find me a partner that is, I'd like to travel Kalath and spread the same message that you have here."

Everet's winning smile returned to his face.  He waved the mage over.  "Trianon, my friend, I do believe that we have a convert."

Tuesday, February 19, 2013

History is Repeating Itself...Again

The Internet is like the Caribbean in the Sixteenth Century.  No, I don't mean it's full of Spaniards, French and Englishmen, though they are present on the Internet too.  I mean that the Internet seems to turning into a lawless area prone to increasing levels of conflict.  I'm not talking flame wars here, people, but rather "cyber war".  I personally don't like that term, but I'll use it because I don't have a suitable replacement.  If you read the article I just linked, you'll read an us versus the world story, but the whole time I read that article I couldn't help but draw links to a time centuries ago when the Spanish were probably saying much the same things about the English and French.

The Spanish were constantly shipping silver from Mexico to Spain and their rivals and independent entrepreneurs wanted in on that action.  Eventually, piracy became a huge problem in the Caribbean and led to several wars between the European powers as they fought to control shipping in the Atlantic and Indian Oceans (not to mention their religious differences).  Eventually, things settled down when England emerged as the biggest naval power in the Caribbean and shut down most pirating organizations there.

I've been reflecting on similarities between that period and now.  Right now, on the Internet, it seems that there are lines being drawn and sides taken in this new free-for-all battle happening on the Internet.  The US is on one side, Iran, China and Russia seem to be on their own sides.  Everyone seems to be attacking everyone else out there right now, much like in the sixteenth century in the Caribbean.  If you read the history of piracy there, you'll note that players came and went and eventually, England won out by outlasting the competition.

That could happen with the Internet, too, and brings up several questions.
-Do we really want it to go that far?
-How much virtual destruction, theft and damage will happen if we let it play out like it did in the Caribbean?
-Would there even be an end to the "cyber war"?
-How will the cyber war play out in the real world?
-Will it cause real wars, much like piracy in the Caribbean caused (and was caused by) real wars?

I don't know the answers to these questions, but I would like to posit some guesses.  First of all, I don't think we want events to run like they did in the Caribbean.  We don't want a long period of conflict that only works itself out when one power can dictate how the others will behave.  That path would mean incalculable damage to the world economy and leave one nation in control of Internet security or governance.

That is assuming that one nation (or a coalition of nations) could even win the struggle.  In the modern world, that would mean that the conflicting nations would probably have to fight a real war, or find a way to control an enemy nation's Internet infrastructure (not likely).  I do think that large scale cyber wars would be likely to spill into real world conflict.

For example, let's say that Iran manages to bring down our nation's power grid (not that I'm saying that's possible).  We would go through some amount of time recovering from the event and then figuring out who was responsible.  Do you know what would happen after that?  We'd invade Iran and I don't think there's anyone in the world who thinks that their military really stands a chance against ours.  What would that mean though?  It would be like Afganistan and Iraq all over again.  There would be a long period of occupation and fighting a guerrilla war against foes who have all the time in the world to kick us out and a population motivated to see that happen.

Switch that to China or Russia.  Say one of them decided to initiate a full-scale cyber war against us.  We'd duke it out on the Internet, and then someone would end up declaring war in the real world.  I don't think that anyone really knows how a war against Russia or China would end up, but it wouldn't be pretty and could even end up in Nuclear War.  None of which I'd be excited to have to endure.  Hell, switch it to England or France and you're likely to get the same outcome.  They are our allies right now, but things change.

This line of thinking makes me think of the Chinese curse, "May you live in interesting times".  These are interesting, and scary topics.  I wish I knew what was going to happen, or even what was likely to happen.  I only know that I want things to go smoothly and peacefully.  We'll see if that can happen.

It also makes me think of the far future, when we start mining Near-Earth Objects.  Will space piracy be next?  At least with that, we do have a direct historical reference and not an inference, but would events play out any differently than they did in the sixteenth century?

Tuesday, February 12, 2013

What it Means to be a Consultant

It occurred to me the other day that a lot of people don't really know what I do and how it's different from what a lot of other people do in the IT industry.  If you want a detailed definition of IT, you can go here.   Basically, we make computer systems that do the things we're asked to make them do (most of the time!).  This industry consists of more jobs than just developers and engineers, but I'm not going to explain about the different jobs because it's unimportant to the topic.

I've been working in IT for over seven years now.  For most of that time, I've been a Consultant.  What does that mean?  It means is that I work for a company who sells my services to another company for a fee.  As a Consultant, I have a full-time job independent on whether or not my company has a contract to sell my work to another company.  This is an important distinction from other people who work in IT.  There are three other groups: Contractors, Full-time Employees (FTEs), and Offshore.

Consultant vs. Contractor

Contractors are people who contract directly to the customer, without an intermediate employer, like I have.  This normally means that the Contractor is taking home more pay, but they are not receiving any benefits (i.e. insurance).  Contractors, by definition, are bound to a contract with their customer, but once that contract is complete, they can either renew the contract (assuming their customer wants that), or move on to another customer.  This is similar to me, but my employer also has a say in where I go.  Contractors typically have to find their own gigs, or pay a placement agency to do so for them.  My employer finds my gigs for me and pays me a full wage when I'm on the bench, if they can't find anything for me.  When a Contractor doesn't have a gig, that person isn't earning a wage.

Consultant vs. Full-time Employee

The first similarity is that a Consultant and an FTE are both fully employed, complete with benefits.  When I'm working for a customer, I behave like that customer is my employer.  When most people ask, I don't say I work for Daugherty Business Solutions, I say I work at Best Buy as a Consultant from Daugherty Business Solutions.  If I'm in a hurry, or don't want to confuse the issue, I just say that I work at Best Buy.  This is also becomes one of the hardest parts of being a Consultant.  When it's time to leave one customer for another one, I've already developed an affinity for the workplace and the people who I have worked with there.  I've worked at eight different customers in the seven years I've been a Consultant.  I'm still in contact with people from those customers through Facebook, or Twitter, etc.

Consultant vs. Offshore

The main difference here is that I work at the customer's location.  Offshore people are typically employees of a company located away from the customer's location (either in another country, or another part of the same country).  As such, I get a lot of face-to-face interactions that the Offshore people don't get.  From my experience, this helps me produce better results.  I've worked with Offshore teams before and the results are always hit or miss.  The main benefit, of course, is that the costs of Offshoring are greatly reduced compared with what a company will pay for my services.  This is a real, calculable benefit, but you should also pay attention to the adage, "you get what you pay for".

Why am I a Consultant?

A Contractor makes more, so why be a Consultant?  There are several reasons for this.  I'm lazy and don't want to have to find my own employment and I'm too cheap to pay someone to do that for me.  Also, I don't have to worry about having a gap of employment when my current contract ends.  If my employer can't find something right away, they'll put me on the bench and I'll do some internal work until they find something.  This is the biggest benefit to me.  The bench is no fun, but I'm still getting paid and I can use the time to improve my skill base or bring some value to my employer through an internal projects.

You can get stability from being a Full-time Employee, why not do that?  Stability there comes with a price, monotony.  If I end up not liking a customer for any reason (commute, people, atmosphere, etc.), I can request not to be renewed there when the contract is complete.  As stated before, I don't have to find a new job then, I can just wait until my employer has found one.  Also, not every company uses the same technology stack to develop their systems.  Moving from one customer to another can increase your skill base and your personal network.

As for Offshore, until companies in the US start selling Offshore services to India and China as their labor costs increase, I'm not going to even begin to think about that.


Overall, I'm happy with my current role as a Consultant.  I could see myself doing something else, but I just don't think that I'd be as happy in those roles as I feel now.  I have good flexibility, careeer mobility and stability.

Thursday, February 7, 2013

Yes, I Am Lame

Yes, it's been five months since my last post.  You guys deserve better than that.  So, I'm here to tell you that I'm working on a non-fiction blog post right now that will go up this week.  I'd like to tell you that I'm working on another story, but that's just not the case.  I don't know what it is, but I really, really, really haven't felt like writing for the past few months.  Not just writing fiction, but also regular blog posts either.

It's not that suitable topics haven't come up.  A lot has happened in the past five months, but my desire to write just hasn't been there even though I could have had interesting things to share.  I'm going to turn that around, not because I'm filled with a desire to write, but because I'm filled with a desire to have a desire to write.  Does that make sense?

So, check back later this week (or subscribe via email, using the widget on the right, or using RSS) for a non-fiction blog post.  I'll keep my brain working on ideas for a fiction piece, but I can't make any promises on that.