Showing posts with label nerd. Show all posts
Showing posts with label nerd. Show all posts

Thursday, January 12, 2023

Zilthar du Holstier

Hi there, it's been quite some time since I posted anything. I just wrote a background for a potential D&D character and I was so happy with it that I wanted to post it here. Enjoy!
-------------------------------------------------------------------------------------------

Brand Haversack was beginning to doze while sitting at the antique desk situated in the middle of one of the many guest rooms located in Castle Holstier, the home of the Count Holstier who ruled the small, nearby village in the name of the Lords of Waterdeep.

The Count had commissioned Brand to update the family’s history. The Count’s grandfather had been the last one to do so nearly 500 years ago. Brand had the three thick volumes stacked in front of him, though he had been forbidden to crack any of them open before he finished interviewing the living family members.

Which is what he was waiting for presently. The youngest son, whose name Brand was not given, was over an hour late for their appointment. Once that interview was over, Brand could begin the rest of his research into the more recent family history.

The bard hadn’t heard anyone enter, maybe he had finally fallen asleep, or maybe the youngster was just that stealthy. Anyway, Brand was startled when the young elf said, “Hello bard, my father has told me that you have been commissioned to document our family’s history.”

Brand quickly sat up and pretended to organize the papers in front of him to distract from his dozing. He replied, “Yes, and well met! My name is Brand Haversack. Poet, philosopher, and historian extraordinaire! I’ve been eagerly awaiting your arrival.”

The young elf eyed the bard skeptically, but gave no indication of understanding the dig or any interest in furthering the conversation. He simply stood in the doorway and gazed idly around the room.

Brand gestured to the chair across from him where the youngster’s two older brothers, two older sisters, mother, father, six uncles, and four aunts had sat before him. The bard said, “Please sit… uh… well, your father refused to give me your name. We can start there and you can tell me about yourself.”

Something about the elf’s demeanor changed at the mention of his father, and not in a more pleasant way. The elf sat down gruffly, making it obvious to Brand that he didn’t want to be there. He said nothing.

Brand bit the inside of his cheek to brace his already low patience and said, “Your father hasn’t told me anything about you. He apparently wants me to learn from you without any prior biases. So, let’s start with the basics. What is your name? Tell me about yourself.”

Brand dipped his quill and prepared to write as the young man began speaking, “Well, my name is Zilthar du Holstier, youngest son of Cranthar du Holstier. I will turn one hundred and fourteen next Mirtul. I don’t really know what else to say about myself that might interest you.”

Brand sighed inwardly. He’d met all kind’s during the past few weeks, but getting anything out of this kid was going to be harder than getting gold out of a dragon. He said, “Well, start at the beginning, Zilthar. Tell me of your upbringing.”

Zilthar’s gaze became unfocused as his mind reached into his past. He said, “Well, I was born right here in this castle. As you have probably already heard, my mother died during my birth.” Brand had heard that, but wrote it down again anyway. Zilthar continued, “My education started here, of course. My father’s sister, Murandiel, was the one who raised me and taught me the basics before I was sent to Courassier Preparatory School in Waterdeep. While there, I lived in our family’s villa in the North Ward with my aunt.”

The young elf paused and Brand knew that there was more to the story. He prodded, “What happened during school?”

Worry crossed Zilthar’s face, but Brand didn’t understand why. The young elf said, “It’s not what happened, it’s what didn’t happen. What never happens in my life.”

Brand had to admit that his curiosity was piqued. With bated breath, he said, “What didn’t happen?”

Zilthar glanced towards the open door. Without hesitation, Brand jumped up and quietly closed the door and returned to his seat. The young elf still hesitated, so Brand said, “Whatever you say within these walls will stay here, young Zilthar. Not everything that your family, or yourself, tells me will go into print.”

That seemed to satisfy the elf, who said, “I didn’t see my father or brothers for nearly two decades during my schooling. Even my aunt became distant during the last few years. I was alone more than not. I hardly had any friends at school. You probably heard about what happened in my grandfather’s day,” Brand hadn’t yet and made a mental note to come back to that, “the other nobles’ children certainly remember it. No one wanted to be friends with the boy from House Pariah.”

Instead of digging into the details of whatever happened to House Holstier, Brand pressed on into Zilthar’s life by saying, “That must have been lonely. What happened after your schooling was done?”

Zilthar’s gaze grew distant again as he searched his memories. He said, “My father wanted me to become a wizard, you see. Standard noble children requirements, of course, one great warrior, one great cleric, and one great wizard. I was not and still am not interested in the magical arts.”

Brand realized he was sitting on the edge of his seat, eager to hear more. He asked, “What did you do?”

Zilthar, defiance in his voice, said, “I ran away, of course.” He paused and Brand saw that he felt foolish as he said, “Not in a childish way with a hobo sack full of cookies or anything like that. I meant that I left Waterdeep with a meager amount of equipment, I didn’t want my father saying that I owed him anything by taking a large amount of money from our coffers. I traveled to Silverymoon in search of Dove Falconhand. I had heard many stories of her adventures and ideals and I felt a close connection with those ideals myself.”

The young elf looked sheepish when he said, “Of course, she wasn’t in Silverymoon and I couldn’t get any information from anyone in the city about her. They probably thought I was some sort of spy. It was pure foolishness, of course. Even if she had been there, it wasn’t as if the great Dove Falconhand would meet with a lowly elf-child with stars in his eyes.”

Zilthar looked up, dreamy-eyed and said, “It would have been the highlight of my life to have met her.”
The young elf blinked away his dreams and said, “Well, I was out of money by that point and signed on with some caravans heading south and west towards Triboar. As happens too often near the Evermoors, the caravan never made it to its destination. We were attacked by a horde of trolls a day out of Olostin’s Hold. I was knocked out early in the battle, so I don’t know what happened to my compatriots exactly, but was told by those who saved me that nothing of the caravan remained except my broken body discovered beneath the wreckage of one of the wagons. They said that I had been dragged there, probably by one of the other caravan guards.”

Brand’s heart was pounding, he was intrigued, this interview was already more exciting than any of the others. Zilthar continued, “I awoke, what I was told was two weeks later, in the High Forest as the prisoner and guest of the Uthgardt tribe called the Tree Ghosts. Normally, they would have killed me as they found me, but their shaman had had a vision just two nights before of finding a lone survivor of a troll raid. That survivor was me.”

Brand found himself stunned by the revelations that Zilthar was sharing with him. He was still taking copious notes. The elf continued, “The shaman kept me in his tent as I recovered. His vision told him to keep me alive, but not what to do with me afterwards.

“Anyway, I lived with the Tree Ghosts for the next few weeks. They put me to work repairing tents, gathering food, things like that. To be honest, I don’t exactly know how long I was there. One night, the shaman woke me up in the middle of the night and told me that he had been inspired by a dream to bring me to their ancestral mound for a test. We left the camp immediately and walked for a few hours.”

Zilthar paused here and looked Brand in the eyes as he said, “You’re not going to believe this next part. Sometimes, I have trouble believing it myself. As dawn approached we arrived at the largest tree that I have ever seen in my life. ‘This is the Grandfather Tree,’ the shaman told me. ‘It will test you and if you pass, it will bring you enlightenment.’”

The young elf closed his eyes and said, “I can’t really explain what happened next. The shaman led me to the tree and left me there. I had what I can only describe as a hallucinogenic vision of sorts. I couldn’t describe it to you and do it justice, but suffice to say, it was an enlightening experience and led me to my goddess, Mielikki and the path of the ranger.”

Brand nodded with sudden understanding, he’d known many rangers in his own life and the link between Zilthar’s desire to meet Dove Falconhand and the rest of his story made sense. Zilthar continued, “When I awoke from my vision, the shaman was gone. I knew then that I would not be welcomed back with the Tree Ghost tribe, and had to find my own way. The vision I had had contained hints of what I was to do, so I left the grove surrounding the Grandfather Tree and found my equipment piled neatly there. I took it and left that sacred place with a light heart and hope for the future.

“I lived for the next few years in the High Forest. I spent some time with the elves, centaur, and fey of the forest and learned the skills of a ranger from them and on my own. I struggled and prospered and struggled some more, but it was a worthwhile experience to be sure.”

Zilthar sighed and remained silent for a few moments. Brand finished catching up with his notes and asked, “What happened then?”

The young ranger’s face betrayed his irritation with himself when he said, “Then suddenly I became homesick. To this day, I don’t know why, but I just had to get home. The trek took me a couple of months. I traveled south through the High Forest towards Unicorn Run. To be honest, a not so small part of me hoped to come across Mielikki, though I know that would have been quite a rare event. Once I arrived at the river, I built a raft from fallen logs and driftwood. I rode the river as far as Secomber, then traveled across the land back here. It was a pretty uneventful journey, though I was anxious about the aftermath of my return.”

Brand sensed another hesitation from Zilthar and waited for the young elf to continue as he made some additions to his notes. Finally, Zilthar said, “When I got home, nothing happened. My father, who hadn’t seen me in decades and hadn’t had news of me in some years, didn’t make any fuss about my return or my absence. It was all very anticlimactic. I took over responsibility for the gardens and farms and defense of the village from my eldest brother so that he could attend court in Waterdeep and here we are five years later.”

The bard hesitated here. He saw many paths he could take from here. He could dig further into some of Zilthar’s adventures, which would mostly be for his own personal entertainment. Or, he could end the interview and move on, an act that his employer would most certainly approve of. Or, and this was the path he wanted to take on most, he could encourage this young, bored, and mostly ignored ranger to make a change in his life, to go out and find adventure, to make the world a better place.

Zilthar and Brand stared almost solemnly at each other for a few moments. Brand felt like he understood Zilthar. His own adventuring days were over, of course, but he recognized the wanderlust and dissatisfaction within the young ranger. Not able to stand it any further, the bard said, “So, when do you leave?”

Confused, Zilthar asked, “What do you mean? Is that your way of dismissing me?”

Brand chuckled and shook his head. He said, “No, young ranger, it is my way of pushing you in the direction you want to go anyway. When are you leaving this castle? When will you restart the life you so desperately want?”

Brand could practically see the gears turning in Zilthar’s head. The young ranger said, “By Mielikki, you’re right. I’ve just been waiting for an excuse or something to make my exit and see more of the world.”

The bard smiled and said, “That is what I gathered from your story and demeanor. Your father will likely sack me for it, but I must encourage you to follow your heart.”

Zilthar quickly stood and said, “My father will not know of your encouragement, dear Brand, and I say ‘dear’ without any hint of irony or sarcasm. You have shown me what my heart has been trying to tell me since I returned home. I do not belong here and want to see what is out there for me. Thank you!”

Without another word, the young ranger darted out of the room, leaving the door wide open behind him.

Brand chuckled again and organized his notes. He sure hoped that the Count Holstier didn’t hear about his involvement in his youngest son’s departure. His own adventuring days were over and he needed this commission to buy food and lodging for the foreseeable future and Harping did not pay as well as one would have guessed.

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!




Thursday, July 11, 2013

Basegolf

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!

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!

Tuesday, July 3, 2012

Random Pictures


In honor of having my best month on the blog ever (in terms of page views), I've decided to post some cool pictures.  If you're not interested in this kind of stuff, feel free to skip it.

The first item isn't a picture, but rather a video of my daughter signing the Mahna Mahna song with me.  Every now and then I hear her signing it, which means that I've raised her right.

Link from Link to the Past
This picture is Link from Link to the Past made out of Perler beads.  I've made quite a few 8-bit characters from them, but this is one of my favorites.


This is a portrait that Kate, my daughter, drew of me.  Pretty accurate, I think.
My wife and I saw this deer in our backyard the other day.  Pretty awesome!
This is a small walking trail near our house.  Kate had just said, "We're on an adventure!"

I was behind this Lotus in traffic the other day.  You don't realize how small they are until you're close to them.  I don't think that I'd even fit inside!

These are my kids looking at the penguins at the Minnesota Zoo.

More Perler bead characters that I've made.
Hope you enjoy these pics.  I'm working on a story that I'll post here in the next few weeks, or, if Chuck Wendig posts another interesting story challenge, maybe you'll see on of those on here soon.

Thursday, June 21, 2012

Social Anxiety


If you've read my blog before, you'll realize that I'm a geek, or, if you prefer, a big nerd.  I'm cool with that.  It's who I am.  One of the reasons that I am who I am is because of social anxiety.  In high school, I would escape social situations by playing video games alone at home and only hanging out with the few close friends that I had.  I've always felt anxious in social situations, but only lately have I realized that even though work is obviously a social situation, I don't feel anxiety about going to work or meetings at work.

I started to wonder why this was true.  I thought that if I could figure out why I felt different about work that I could somehow apply that to normal social situations.  So far, the only thing that I can think of is that I don't see the people I work with as social entities.  That's hard to explain; even though I like most of the people around me at work, I guess that I don't feel like I'm there to be social.  I'm there to work.  I'm not a psychologist by any means, so I don't know if that's the right answer or not, but it presents a problem if that's true.  If that's true, it means that I can't apply it to other social situations because I am in those situations specifically to socialize.  I'm also not saying that I don't feel social anxiety while at work.  Running into someone you know just walking down the hall at work is quite an awkward situation for me.  Do I look in their direction?  When should I acknowledge them?  How do I acknowledge them?  I don't know how other people do it so effortlessly.

Just to be clear, the anxiety I feel about social situations isn't just a tiny amount of stress.  It's a nearly crippling, hard to breathe level of stress.  Just yesterday I had a company social event (we bowled at a fancy bowling alley place called Pinstripes).  Before the event, as I was driving there, I was practically in a panicked state.  I was thinking over and over that I didn't have to go and that I should just skip it.  Once I was there, the stress lessened, but I could still feel it in my gut the whole time I was there.

So, what do I do?  I push through the feelings as best I can.  Yesterday, I just forced myself to go inside and talk and bowl and try to have fun.  I still felt terribly awkward the whole time and hope that others didn't pick up on that.  In many social situations (such as parties), I can just stand around and not talk to anyone.  In these situations, I'm afraid that I come off as a pretentious jerk who doesn't want to talk to anyone.  That couldn't be further from the truth.  I would love to talk to people and get to know them, but I'm crippled by anxiety over saying the wrong thing, or not being able to follow social customs.  So, I just stay quiet and out of everyone's way.

Just writing about this is hard.  I don't even know why I decided to write about this at all.  Maybe I'm wondering how other people who have social anxiety handle it.  If you feel like sharing, leave a comment.  Maybe I hope that getting this off my chest will help me deal with the issue.  I don't know.  Sometimes I feel like Raj from The Big Bang Theory, but not as extreme and more general than just not being able to talk to pretty girls.

Thursday, May 24, 2012

Javascript TDD/BDD/Unit Testing


I've been doing some pretty cool stuff at work lately and I think it's time for me to share some of the cool things that we're doing.  Web development isn't anything new, I've been writing HTML since I was 12 years old, but it has changed quite a bit since I wrote my first, very simple, web pages.

Another thing that isn't new for me is Javascript, but I never really got that into it or relied on it to do anything powerful.  Since starting at Best Buy, I've really gotten good at Javascript and have realized that it is quite powerful and can do a lot of good for a website.  I've also realized that it can also do a lot of harm to a website.  One thing that a lot of people omit from Javascript development is testing.  A lot of people consider testing their scripts in the browser to be adequate for their purposes.  I disagree.  Coming from back end systems, I know that thorough testing is very important and I think that this is a component of front end systems that has been lacking across the industry.  That being said, there are ways to automatically test your Javascript without using a browser.

One of the goals of the team I'm on is to introduce an automated testing tool to test Javascript automatically when the project is built.  Our build is written using ant, which I hadn't used since college, but since it's well documented, I didn't have any trouble picking it up again.  Also, I'm using Eclipse as my IDE, so it supports ant syntax highlighting and parsing, which is very helpful.  Ant is very powerful, but since it's written like XML, it can be hard to write complicated constructs like looping and conditions, but we've made it work for us, so far.

I was put in charge of incorporating Code Quality tools into our build.  At first, this was a little overwhelming.  I was just starting to get good at Javascript development and didn't have any experience with testing tools for it, but I started doing research on the internet and quickly found some testing frameworks that I didn't think would be hard to incorporate into our build.  We settled on using Jasmine and I worked on finding a way so that we could call our spec scripts from our build.

This started the frustrating part of our journey.  The people who built Jasmine don't support the different ways to launch the tool (like from an ant build), but only the framework itself.  Okay, I can overcome this, there are some open source tools that I can use listed right on their page.  I started with Jasmine-Node since we were using Node.js for our local web server to test our pages.  I quickly realized that this wouldn't work for us since Jasmine-Node doesn't create a DOM and a lot of our Javascript relies on a DOM in one way or another.

My next attempt was to try Node-Jasmine-DOM.  It has DOM support and Jasmine integration, so I thought I was getting close.  I incorporated it in the build and got it to run in the browser, but there's an aspect to Node development that I didn't realize until it was too late.  Node makes it really easy to use other Node tools as dependencies in the tool you are building.  This is great for reuse, but dependencies are called that for a reason.  One of the dependencies that the Node-Jasmine-DOM tool used had a defect in it and that was blocking our scripts from being tested in the build.  I waited patiently for a couple of weeks after submitting the bug to the owners of the dependent tool, and there was initially some good back and forth about it for a while and someone submitted a workaround for the bug.  I was excited and tried it out on my machine, but their workaround didn't work for mem (in Mac OSX), but worked in Windows.  I went back to the forum and they had closed my defect, so I commented that the workaround didn't work for me and I needed another way to make it work for me.  Another week of waiting without a response and I decided to pursue another way to run our tests.

I started my new search by trying to find a tool that would run Javascript straight from a command-line.  I would do myself what Node-Jasmine-DOM was trying to do (create a DOM and insert Jasmine).  Enter Rhino and Env.js.  I found a blog that had done this before and I was all set.  It took me less than a day to incorporate these new tools into the build and I was immediately running our specs from the build.  At the same time that I was ecstatic to be finally done with this, I was very frustrated that I had wasted so much time trying some of these other tools.

For those curious about what exactly I did, read on.  For those who don't want the technical details, thanks for reading this far!  This next part may not be for you as it will be pretty technical.

Our test target in our ant build does a few steps to run the spec scripts.  The first step is to identify the pages that need testing and has some logic built into it for that.  The next step is to convert these pages into spec runners (example), this means that I needed to insert references to our spec.js files and the Jasmine Javascript files.  Since I wanted to test the Javascript on the page, I just copied the page, changed the extension to *.runner.html and inserted the appropriate spec and Jasmine scripts.

The next step that the build does is to get the list of runner files and run them.  I created an ant macro for this step.  The Build-Doctor guy provided the envjs.bootstrap.js file that I started with, but later customized.  His was very simple and was basically just a for loop that told Envjs to load a page.  I found that that wouldn't work for more than one runner, so I changed it a bit to reload Envjs at the beginning of the loop and then load the runner file.  I also added some console.log entries so that the build is more vocal about what it's doing.

Here's where I got a little bold and changed the Jasmine.js and Env.js files to eliminate some extra console.log calls that I didn't feel were required and I added some in a couple of places where I wanted visibility.  In the end, it looks great in the build and it creates JUnit style reports that our Jenkins CI server can interpret.

I was planning on covering the other major aspect of our build, Freemarker, but this post is getting pretty long, so I'll save that for another day.  Below are some examples of what I did in our build.

This is the macro I wrote in our ant build.
<macrodef name="runRunnerList">
 <attribute name="runnerList" />
 <sequential>
  <echo message="Running files: @{runnerList}" />
  <exec executable="java">
   <arg line="-jar ${dir.lib}/java/js.jar -opt -1 lib/javascript/envjs.bootstrap.js @{runnerList}" />
  </exec>
 </sequential>
</macrodef>
This is the results of running a spec in our build as seen in the terminal.
     [exec] Launching runner: /trunk/bin/debug/_slider/_sliderTest.runner.html
     [exec] 
     [exec] Runner Started.
     [exec] _slider : should have 100 hundred items after the method addItem is called 100 times ... 
     [exec] Passed.
     [exec] _slider : should have 99 items after the method removeItem is called ... 
     [exec] Passed.
     [exec] _slider : should have zero items after the method removeAllItems is called ... 
     [exec] Passed.
     [exec] _slider : should show slider when content extends past the width of the slider ... 
     [exec] ***FAILED***
     [exec] _slider : should hide slider when content does not extend past the width of the slider ... 
     [exec] Passed.
     [exec] _slider : should remove padding from the left side of the viewport ... 
     [exec] Passed.
     [exec] _slider : should add the class bby-slider-item-first to the first item in the slider ... 
     [exec] Passed.
     [exec] _slider : should recieve the second item out of five and the HTML should match ... 
     [exec] Passed.
     [exec] _slider: 7 of 8 passed.
     [exec] Runner Finished.
     [exec] 
     [exec] Done with runner: /trunk/bin/debug/_slider/_sliderTest.runner.html
This is one of our runner files. The highlighted parts are what the build inserts into the file.
<!DOCTYPE HTML><html lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/__common/__common.css" rel="stylesheet" type="text/css" media="all">
<link href="../css/_slider/_slider.css" rel="stylesheet" type="text/css" media="all">
<script type="text/javascript" src="../js/__common/libraries.js"></script>
<script type="text/javascript" src="../js/_slider/_slider.js"></script>
<link rel="stylesheet" type="text/css" href="../js/lib/jasmine-1.2.0/jasmine.css" />
<script src="../js/lib/jasmine-1.2.0/jasmine.js"></script>
<script src="../js/lib/jasmine-1.2.0/jasmine-html.js"></script>
<script type="text/javascript" src="../js/specs/_slider.spec.js"></script>
</head><body>
<script src="../js/lib/jasmine-dom/jasmine-dom-matchers.js"></script>
<script src="../js/lib/jasmine-dom/jasmine-dom-fixtures.js"></script>
<script src="../js/lib/jasmine.console_reporter.js"></script>
<script src="../js/lib/jasmine.junit_reporter.js"></script>
<script type="text/javascript">
$(function() {
    jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter());
    jasmine.getEnv().currentRunner_.name = "__common";
    jasmine.getEnv().execute();
})
</script></body></html>
I will note here that most of our runner files have actual content in the body. The specs for this runner insert some test content into the body before the spec is run. The scripts in the body are inserted just before the </body> tag.

Thursday, April 26, 2012

Project Euler


I've always had a fondness for math.  I've always been pretty good at solving math problems too.  Today, a friend at work made me aware of Project Euler.  For those of you who don't know (probably most of you), Project Euler is "a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve".  Man, solving math problems with programming?  Where do I sign up?

So, I've begun my struggle to get through the 381 problems listed on the site.  Problems 1 and 2 were easy, things that we had to do in college.  Problem 3 is a little tougher, but still pretty easy.  That's how far I've gotten in an hour.  I'm going to keep going though, I'll update the blog with my progress occassionally.

Spoiler alert: I'm posting answers to problems 1 and 2 below.  Don't read if you're going to attempt this.  I'm using Java as my language of choice to solve these problems.

Problem 1:

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

I first solved this recursively, but was getting stack overflow errors, so I went to the simpler method of brute force.

private static int MAX = 1000;
private static int calculate() {
int sum = 0;
for(int index = 0; index < MAXindex++)
if(index % 3 == 0 || index % 5 == 0)
sum += index;
return sum;
} //end of calculate method

Problem 2:

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...  By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

private static int MAX = 4000000;
private static int calculate() {
int sum = 0;
int first = 1;
int second = 2;
while(second <= MAX) {
int temp = first + second;
if(second % 2 == 0)
sum += second;
first = second;
second = temp;
} //end of while loop
return sum;
} //end of calculate method

There you have it.  Notice that I haven't posted the results of running these.  Gotta leave something to you guys!

Thursday, March 29, 2012

Recent Inactivity

Hello everyone.  As you may have noticed, it's been quite some time since I've posted on the blog.

I'm a creative person.  Creative people have to have creative outlets, or we go insane.  I have several creative outlets: software development (my job), writing (on here), and crafts.  Over the past year or so, I did a lot of writing that I've posted on here and a bit that I haven't.  That, along with work, was my main creative output.  Lately, though, I've been into crafting with Perler or iron beads.

I don't know if you've heard of these beads before, but they're used to create little trinkets.  I've taken the liberty of posting some of my creations below.  My wife and I have opened a joint Etsy shop where I plan to post these and future creations up for sale.

Is this the end of Story a Week?  Yes.  Will I continue to write and post stories up on my blog?  Most definitely.  I will continue to write because I love to do it.  I will just do it in my own time.  After all, I still have at least three storylines that I want to wrap up for you all.  I can't just leave you all hanging like that.  :)

So, enjoy these photos of my little creations.


I've also created a Mega Man, a Yoshi and a Princess Peach, but the camera battery died before I could take those pics.

Wednesday, September 14, 2011

Speaking Out With My Geek Out

As you all know, I'm a geek.  I wear that label proudly.  The word is in the name of this blog, after all.  In high school, being a geek or a nerd was a bad thing.  I didn't have a problem with my status, but I know a lot of people who did.  I've written a couple of posts in the past about being a geek or a nerd.  You can read about the differences (if any), and my own growth as a geek.

The reason that I'm writing another post about my own geekiness is for the Speak Out With Your Geek Out event.  I gave a couple links in my last post, but here they are again.  I think that geeks are quite vocal about our pursuits already, but I think that this event is designed to have us unite in our passions.  Passion for our hobbies/jobs/etc. is part of what makes us geeks.  Some put being smarter than other people as being a part of being a geek or a nerd, but I don't like that.  It puts us on a pedestal that I don't always think applies to all of us.  In fact, I think that there is a little geek in all of us.  Isn't there something that you are passionate about?  Is there something that you're willing to argue about for hours?  Then you might have a little geek in you.

A lot of people would either take offense to that, or let that bother them.  I say, own it!  Be proud of yourself!  I value my geekiness and it's part of what makes me, well, me.  I think that I've had pretty good self-esteem throughout most of my life and I think that it's good to feel good about every part of you.  I own my geekiness and I think that this is an integral part of the event.  Speak out with your geek out!

That brings up why geeks, in general, are so vocal about their hobbies/interests.  We're a passionate folk.  We love what we love and like to share it with others.  Sometimes this is received well, but other times we are derided for it.  This whole event was inspired by an article that a blogger, who will go unnamed here, wrote that derided a Magic player for his hobby.  Now, I've been known to be a little judgmental in my old age (btw, GET OFF MY LAWN), but I try not to be.  You shouldn't judge others by their perfectly healthy, normal and legal activities.  If it makes them happy, why is it your business to judge them for it?

That being said, I think that being a geek is becoming more mainstream.  I don't want to sound like a hipster here (I was a geek before it was cool), but I might end up doing that.  With the rise of superhero, popular science fiction and fantasy movies, things that were typically geeky are getting more popular.  Look at vampires.  True blood, Twilight, etc. are turning something that was the subject of geeky literature and roleplaying games into a mainstream money making machine.  And that's what it's all about.  The movie and television industries have found a way to turn these items into profitable ventures.  I, for one, applaud them for it.  I'm happy to have them producing fantasy/science fiction/superhero movies because they'll be better produced and better quality.

So, to wrap up this post.  If you're a geek, be proud of it!  If you don't think you're a geek, look within yourself and see your inner geek.  Don't shy away from it, accept it.  You might see that you like to identify with the geek culture that is evolving.

PS: Blogger, geekiness should be a word.

Monday, August 22, 2011

Critical Hit - MC Frontalot Concert Review

When I heard that MC Frontalot was coming to town, I was so excited.  I've enjoyed his music for years and I'd wanted to see him for quite some time.  Front was the first nerdcore act that I came in contact with through the GeekDad Hiptrax podcast.  The song was "Wallflower".  After that I soon found "This Old Man" and "It's Pitch Dark".  I quickly became a lifetime fan.

My wife agreed to go with me, which turned out to be totally awesome.  She was great company and enjoyed the atmosphere and the music.  We got there early and waited at the Spring Street Tavern (the club was in the basement).  We spotted Front walking around, which was cool and unexpected.

As the door time approached, I got more and more excited and the bar got more and more crowded.  They started allowing people down the stairs and Janice and I were second in line.  We paid our entrance fees (only $7 each!).  Right in the door was the merch table and I bought Solved! (before it's official release!).  I was excited to listen to it.

The first act came on a little later.  It was a band named "Trendy Trendy Space Vegans".  I originally thought they were called "Trendy Tranny Space Vegans", which fit into their attire (the sax player wore a bra on stage).  Their sound wasn't bad, and they did have a sax player, which I liked.  The lead singer had a lot of vocal range.  I'm not about to go out and buy all their music, but I'd listen to a couple of their songs if I happened upon them.






The next act was called "Valley Meadows".  They were an unlikely rap duo.  The shorter gentleman is a substitute teacher (I know because they rapped about it).  We didn't get much information on the other guy (except that he's divorced, they rapped about that too).  I thought their flow was pretty good, but they were rapping over borrowed beats and didn't write enough lyrics to last the entire song.  A couple of times they had to ask the DJ to cut the beat off after they'd finished their rapping.  I liked their rhymes and if they get their act a little more polished, they could put on a really good show.

The next act was Brandon Patton.  I'd heard the name before, but I didn't really remember where.  It struck me though when he took the stage that Brandon Patton was none other than Bl4k Lotus, MC Frontalot's bassist.  He was the real surprise of the concert too.  He played a set with an acoustic guitar and it seriously rocked.  He got the crowd into it with a Paula Abdul song of all things.  When he played a drinking song by the Pogues, the place practically vibrated with energy.  It was amazing.  I don't know how he did it; he played his own set and then went on to play a full set with MC Frontalot.  The man must have a ton of energy.







Front's set started out with a high energy version of "Tongue-Clucking Grammarian".  The way that the entire band got into the music was hypnotizing.  It was clear that the four of them are doing something that they love and truly enjoying performing the music.  They played three or four songs from Solved! after that with an older Front song or two mixed in.  I don't stay up late all that often, so before the MC Frontalot set began, I was getting pretty tired, but all of that melted away when they took the stage.  The band's energy was contagious and the whole set was a lot of fun.  When they played "It's Pitch Dark" and "Goth Girls", the crowd (me included, of course) really got into it.  It was truly amazing.  They finished their set with a two song encore featuring "I Heart Fags", which was dedicated to Minneapolis because we were recently named the gayest metropolis in the country; and the PAX Theme.  They merged in some elements from another theme quite popular with the geek crowd, but I'm not going to spoil it for those of you who might be attending PAX this year.  Let's just say that it sent shivers down my spine when they started playing it.

I've been to concerts before, but mostly in large venues with larger than life bands like Metallica and Megadeth.  The smallest venue I've seen a band in was when my wife, a friend and I went to Reel Big Fish at the Quest club in Minneapolis.  It was a two-story club with a large stage and large floor.  It was also a great concert, but none of the other concerts I've been to had the intimate feeling that the Frontalot concert did.  My wife and I managed to stand front (no pun intended) and center.  I have no trouble in saying that this was the best concert that I've ever been to.  I don't think that I'll ever go to another coliseum or festival show again, but I'd happily go see any of my favorite bands at a small club again.  MC Frontalot definitely scored a Critical Hit against Minneapolis last Friday.

Tuesday, April 28, 2009

Geek vs. Nerd

The other day my wife asked me why I thought I was a geek when all along she thought I was a nerd. Since then I've been having an internal struggle of which one I am, so I decided to do some research on the topic. Below is the results of that research. First, let's compare the definitions of the two words.
Geek Definition (dictionary.com):
  1. a peculiar or otherwise dislikable person, esp. one who is perceived to be overly intellectual.
  2. a computer expert or enthusiast (a term of pride as self-reference, but often considered offensive when used by outsiders.)
  3. a carnival performer who performs sensationally morbid or disgusting acts, as biting off the head of a live chicken.
Nerd Definition:
  1. a stupid, irritating, ineffectual, or unattractive person.
  2. an intelligent but single-minded person obsessed with a nonsocial hobby or pursuit: a computer nerd.
Well, Geek definition 1 and 3 are not too complimentary and neither is the whole nerd definition. I'm kind of liking Geek definition part 2 though. Let's move on to encyclopedic knowledge of the two words.
Geek encyclopedic definition (wikipedia.org):
  1. A derogatory reference to a person obsessed with intellectual pursuits for their own sake, who is also deficient in most other human attributes so as to impair the person's operation within society.
  2. A person who is interested in technology, especially computing and new media. Geeks are adept with computers, and use the term hacker in a positive way, though not all are hackers themselves.
  3. A person who relates academic subjects to the real world outside of academic studies; for example, using multivariate calculus to determine how they should correctly optimize the dimensions of a pan to bake a cake.
  4. A person who has chosen concentration rather than conformity; one who passionately pursues skill (especially technical skill) and imagination, not mainstream social acceptance.
  5. A person with a devotion to something in a way that places him or her outside the mainstream. This could be due to the intensity, depth, or subject of their interest. This definition is very broad but because many of these interests have mainstream endorsement and acceptance, the inclusion of some genres as "geeky" is heavily debated. Persons have been labeled as or chosen to identify as physics geeks, mathematics geeks, engineering geeks, sci-fi geeks, computer geeks, various science geeks, movie and film geeks (cinephile), comic book geeks, theatre geeks, history geeks, music geeks, art geeks, philosophy geeks, literature geeks, historical reenactment geeks and roleplay geeks.
  6. A more recent school of thought sees Nerd as being a derogatory phrase, whilst Geek is simply a description. It is taken to be someone who is an enthusiast, often in things outside of the mainstream spectrum, of note is that in this definition, there is no reference to being socially inept in the slightest.
Nerd encyclopedic definition:
  • Nerd is a term often bearing a derogatory connotation or stereotype, that refers to a person who passionately pursues intellectual activities, esoteric knowledge, or other obscure interests rather than engaging in more social or popular activities. Therefore, a nerd is often excluded from physical activity and considered a loner by peers, or will tend to associate with like-minded people.
Hm, interesting. One of the first things that I noticed is that the term Geek had a much richer and lengthy definition in wikipedia than Nerd did. Another thing that I noticed is that the encyclopedia definition for Nerd is like the dictionary definition, not particularly flattering. For the Geek definition, there is some negative connotations, but it's mostly all good (in my view anyway). Next I did a little digging into popular culture references to both terms.
Geek cultural references:
  • ThinkGeek.com (an online store for geeky stuff), Geek.com (a news/review site), geekcode.com (how to identify what kind of geek you are), The Geek Squad (a computer repair service now associated with Best Buy), GeekDad blog (a wired.com blog), Beauty and the Geek (a reality show)
Nerd cultural references:
  • Revenge of the Nerds (movie series), Nerdcore rap (music genre), White and Nerdy (Weird Al song), Slashdot.org (news for nerds), Nerdapalooza (nerd music festival), Nerd Herd (the Geek Squad of the TV show "Chuck")
I found more online stores under the geek term than the nerd term, but overall the searches turned up about the same number of references. Overall, I think that while Geek is turning out to be the more popular term choice, Nerd is also commonly used to describe the same person in the same way.

Before I began this research, I would have called myself a geek and balked somewhat at being called a nerd. At the time, to me, nerds were less socially accepted and more oblivious to the world around them than geeks were. As Richard Clarke said on the Colbert Report, "the difference between a geek and a nerd is that geeks get it done", a sentiment that I used to agree with After doing this research, I've found that people I would have considered geeks often refer to themselves as nerds instead. Now, the dictionary and encyclopedia were kinder to the term geek, but I think that is only because Geek has become a more recognized positive term than nerd has. In time, I feel, the term nerd will get the positive recognition that it deserves. Call me geek, call me nerd, either way, I will take it as a compliment. So, tell me what you think of all this? Are you a geek or a nerd? Which term do you prefer? Leave a comment! :)

Also, I've decided to include my favorite song of the moment in all future blog posts. Today the song is Indestructible by Disturbed.