Marriage Amidst COVID-19

Have you ever watched something come back alive?

Back in February I remembered getting asked nonstop how wedding planning was going. I was really tired of answering that question to be honest, but I felt like we were fine. We had a Trello board(highly recommend for all your project planing needs) with tasks broken down by party and due dates. It definitely was a lot of work, but we were doing it! Really the only thing we didn’t take into account was a global pandemic happening.

It was sort of a slow burn for me. I remember hearing whispers of some kind of outbreak in China late last year and then in February when I caught the flu I saw signs in the urgent care center about getting tested(back when there were tests available when you wanted them). Then we had state-wide orders to work from home if you were able. I still don’t think I realized the magnitude of what was happening at this point or what plans wouldn’t survive in the wake. I remember assuring Amy, “I mean, worst case is some people might not travel all the way to California.” Oh early March Kevin, how naive you were.

I can honestly say it was the worst week of my life. Not only were we told that there just wasn’t a possible way to still do our wedding event, but each of the back up plans also were impossible to pull off too. I feel sort of silly for how much of a emotional toll the cancellation took on me. We were healthy, had jobs we could work from home, and still in love, but just unable to have that big expensive ceremony with flowers and food – first world problems, am I right? I think I was mostly frustrated because I knew these things ultimately didn’t matter. We each received text message after text message about “It’s really your love that is the important part”. Yes. We knew that. It wasn’t really our desire to have a giant party so much as it was us wanting to celebrate with our friends and family. Every single person invited to our wedding(and of course others, but guest list limits) had left their mark on each of lives, turning us into who we were and who we would become together. We wanted that community to know and feel their part in our marriage. That’s what we lost.

Have you ever watched something come back alive? We did. That community that we thought wasn’t going to get to play a part showed up in force. Family dropped everything they were doing to take care of anything they could handle in our place. Dear friends sent us flowers. Our premarital pastors fed us and provided space to process loss. People still bought gifts for us despite being told there would be no ceremony they could come to. We got invited to virtual happy hours to talk and play games to take or minds of everything. We felt their love. We felt your love. It calmed us in the midst of the chaos. It made us smile before the tears had finished drying. It reminded us that you all still are an integral part of our story and that you feel valued. Wedding reception or not.

We’re still getting married tomorrow, as planned. Not at the venue. Not with a room full of guests. But with a ceremony that will celebrate who we were becoming and all the people that got us there.

Still having chicken and waffles though. That was a must-have.

Some Thoughts on Being a Rules Lawyer

I wrote about role-playing last time, so I figured I should cover the opposite, “rules lawyering”. What is rules lawerying in a tabletop game? Well, typically it’s when a player(DMs included) halts or derails the game being played to scour the rules for something to make the situation work in their favor and places the rules as written(RAW) above all other interpretations. I don’t believe this is inherently bad. Ultimately, the DM’s job is to present how the rules work in the way they do, and players should also be allowed to make a case about why the rules might or should work in a different way. This has gotten a negative stigma because, stereotypically, a rules lawyer will relentlessly argue their idea long past when the DM has given their ruling and instead of focusing on role-play in the game they only care about minmaxing their character’s stats and abilities.

Every DM at some point will either decide on a rule that differs slightly from the text for one reason or another or introduce a rule that doesn’t exist in a sourcebook. This is suggested in the Dungeon Master’s Guide, it tells the DM to alter the rules if you think it’ll be more fun for your game(It actually gives the DM total authority to modify any rule for any reason). So, in a perfect world all the DM’s deviations from RAW are well thought out, make the game more fun, and the players can simply trust their DM. But your DM isn’t perfect. They might make a rule that detracts from your fun, make a ruling in the moment that is inconsistent with how the game was previously played, or even just forget a rule. It is at these times that I expect you to pick up the mantle of being a rules lawyer and maybe even argue for a bit about what is going on. However, players should also have a good attitude even if you don’t agree with the DM’s final say. If something continues to seriously bother you, talk with your DM about it afterwards but let the game continue.

A different way that a rules lawyer mentality can negatively impact the game is that it can restrict rules to only what is written. Some things or actions should be possible even if there isn’t an explicit rule that covers an exact situation. DMs and players can fall into the trap of thinking “well it’s not in the rules, so I guess it just isn’t possible.” In my opinion, that is an incorrect way to handle the game(please remind me about this if you think I’ve fallen into this trap). One of the beautiful parts of D&D is that you can still figure something out to facilitate how an action might work when it is not explicitly in the rules. For example, if Player A is grappled by an enemy and Player B wants to try to break that grapple with their action, this should be possible to attempt even though the rules only give directions for how Player A can try to escape. This is a danger in always being a rules lawyer or following the rules RAW, it can severely limit how you play game.

Some Thoughts on Tabletop Role-play

A game that provides an emphasis on role-playing allow things like freedom of action, seemingly unlimited choices, and an open-ended world or story. Since we’re playing to get immersed in the world, your character’s entire existence can be story based; the more you play your character for the story, the more you are going to get out of the story. On the other hand, you certainly can play a character that constantly changes their desires, has no real fears, and always shares mutual objectives with the party, but I promise you’ll get more out of the game if you don’t.

Think about elements of your character when figuring out their personality. What drove them to become the class they are? What might their stats reveal about their personality? For example, with a low wisdom score they could be fearless, impulsive, or easily influenced. Being fearless might have caused others to look up to you as a brave adventurer your whole life. Maybe you’re used to receiving preferential treatment. Similarly, how do their past experiences manifest? A character with a history involving orcs killing their family doesn’t instantly mean they hate orcs and want to kill them all the time, they could just as well be utterly terrified of orcs and can’t stand being in the same tavern as one.

Ultimately you should have a character you think is interesting to play and will have fun playing. If writing a psychological profile for your character helps you get into the game, great! If you just want a simple smash-and-beat-em-up barbarian to kill things with, great!

Some examples for heightening the role-playing aspects in your game:

  • Don’t forget to share or shine the spotlight on other players
    • The story doesn’t, and really shouldn’t, revolve around your character, it is supposed to revolve around the party together. There might be an aspect if your character that takes a focus in the story, but that can just as easily impact the other characters too.
    • Sometimes your character’s intricate history doesn’t become relevant – it happens and it’s okay.
  • Show more than just tell about your character
    • A 10 minute long monologue or side text chat explaining to everyone that your character really hates dwarves is infinitely less interesting than your character mocking or even attacking a dwarf in the tavern and the group having to deal with the consequences.
  • Build relationships with PCs and NPCs, other beings in the world can be more useful to you alive than dead.
    • Consider allowing the bandits that ambushed you on the road to live, they might spread word of you around town or come to join you on your adventure. As for the dragon that has been terrorizing the kingdom that you have finally hunted down, try striking a deal instead killing it – what can it give you?
    • Making friends in different places can be invaluable if you need a favor or help later.
  • Play your character, especially when it matters
    • It’s good fun to have a low intelligence character to play as an idiot around town. But what about during combat when they need to make a split-second decision?
    • Remember your character’s flaw(s).
  • Putting your character into dangerous and deadly situations is cool
    • Some of the most memorable parts in our favorite stories is when a character sacrifices themselves for the greater good. If a battle means something to your character, they might push their own personal safety aside to take their revenge against the bandit king or to ensure the rest of their party escapes the collapsing dungeon exit.

 

Some Thoughts on Rain

Rain makes me appreciate the sunny days more. I find that when summer finally rolls around with a streak of sunny days in the high 90°s, I enjoy it(at least at the beginning). That warm temperature feeling is welcome because it isn’t going to last. It allows us to have float parties at Greenlake, go hiking more often, and see a long reaching view from a vantage point. Having something you enjoy disappear for a bit can allow you to appreciate other things. Not that I’m glad the rain I love is gone, but it being gone has given me a new space or time I wouldn’t otherwise have.

Rain forces me to slow down. This is true in both a literal and figurative sense. Traveling while in the rain I find myself moving slower, the wet ground can be slippery so extra care needs to be taken. I’m not sure if the idea of going outside is less attractive in the rain or that staying inside snuggling up with a blanket is more so, but I usually always find myself curled up in my reading nook. Rainstorms in Seattle also tend to come with a decent amount of power outages, I guess it’s all the trees falling on power lines. And yea, a power outage can blow when you just want to binge watch Stranger Things, but with the power gone it also gives way to lying in bed way longer then necessary, day dreaming those deep thoughts alone or with a friend, or finally picking up that theology book to read. When I am forced to slow down I am reminded of the things I usually leave behind when I’m too busy hopping from one thing to the next.

Rain cleans and refreshes. Not too long-ago Seattle had a really bad smoke problem. All this smoke from forest fires was being blown into our air space and it got so bad you could honestly stare at the sun and not hurt your eyes. It hurt to breathe and waking up in the morning your throat felt dry. After a week or two of this terrible air quality, the smoke was cleansed from our sky by a little bit of rain. That was all it took to become clear again! I don’t think I had been that happy for rain to arrive in a long time. It’s honestly an incredible gift whenever it falls from the heavens and rinses the world around us. The air smells different, plants become greener, and everything feels fresh.

Living in Seattle now for close to five years(whoa!) rain has become a more common part of my life. Seattle doesn’t get the most rain in the country but it is up there for most rainy days. Growing up in Southern California I wasn’t a stranger to rain. El Niño* brought plenty of to my elementary school, typically getting recess cancelled because the playground would flood. But when the rain stopped I knew it would be many months before it returned. I always looked forward to those spring days when the clouds would open up, the trees and bushes would ripple underneath the watery cascade, and the soft taps on the roof and windows would lull me to sleep.

*I just found out El Niño actually makes the Northwest hotter and drier while the Southwest gets all that rain, weather is neat!

I’m Bad at Checklists

Sometimes I have high ambitions for myself and decide to do something other than play PUBG all night after getting home from work. At the start of this year I made myself a checklist of things I wanted to accomplish by the end of January. Most of those items were things I wanted to accomplish by the end of 2017 but this time I was serious!

I went on an amazing Iceland trip back in March 2017 with three friends and I have hundreds of pictures and videos of the trip I want to share. I used to blog semi-regularly about tech stuffs, personal stuffs, and game stuffs in order to get myself into a creator mindset and not just a consumer. And lastly I have been working on a Windows10 application to help tabletop GMs to keep digital homebrew files organized. I have over 2 gigabytes of files on my computer detailing homebrew adventures, monsters, and items in a loose folder structure that I’ve realized is almost unsearchable on its own, so I set out to create a program to help me find a cool piece of magical treasure on the fly.

And I really was serious, I wanted to do these tasks! And I did work on them…a little bit. But I didn’t finish by February. I still haven’t finished them all and now it’s well into April! I have uploaded the Iceland pictures, I have made progress on my HomebrewDB app but it isn’t ready for the release, and this will be my first blog post in over two years. I’d hardly call that close to completion. I’ve always enjoyed finishing goals so much that when I don’t I end up agonizing about what went wrong. Was it my planning? Was it my competence? Was the goal too unrealistic? Did I not train enough to summit that peak? Or maybe I didn’t bring the correct equipment? I should have bought those new shoes, then I would have made it!

The guilt and anxiety we take upon ourselves for failing is not healthy. So, one of the things that I like doing instead is taking a look back and see what I DID accomplish, outside of the original goals. Many times, there are things that were still great accomplishments, took a lot of work, or had a great pay off that I can still be proud of. These aren’t excuses for not completing the original goals (still gotta do those!) but rather to prove that I’m not incompetent. Sometimes the literal goal is what you need to accomplish (a task at work or cleaning the bathroom) but sometimes a goal just gets you moving towards action!

So here are some other things I am proud to have accomplished:

  • My sister and I decided to book a trip to Great Britain within 3 hours, planned the whole trip in less than a month, AND pulled it off effortlessly. It was a blast traveling with my sister and we had never been to Scotland and Wales before!
  • I’ve launched a new homebrew D&D campaign that I’m very proud of. I’ve done a bit of world building and crafted adventures before, but this is the first entire setting I’ve written myself with it’s own nations and factions. Play sessions are going good so far!
  • I’ve been running an AirBnB, successfully too I think! I’ve also found out that I don’t want to be running an AirBnB for much longer…it’s been a lot of effort and time for less payoff than I’m getting out of it.
  • I worked on a chrome extension that calculates some fun statistics based off players’ dice rolls inside Roll20.

How to delay xaml dialog on button click

When using a ContentDialog in UWP to allow the user to make some kind of action that depends on a service or other asynchronous call, you probably want to ensure that call completes correctly before dismissing the dialog window. Otherwise, the result is just forgotten about. In our UWP sample app, users can give gold to a particular photo they like and leave a comment. In the GiveGoldDialog the user inputs their comment text and then presses the “ok” button, which the app then fires off actions to handle gold balance transactions and creating the comment on the photo. Before dismissing the GiveGoldDialog, we wanted to be sure that those calls completed.

When handling the PrimaryButtonClick event, before initiating the actions get a ContentDialogButtonClickDeferral object from the ContentDialogButtonClickEventArgs parameter. Creating this deferral object will prevent the button click from finishing until you complete it, suspending(or canceling) the dialog from closing until your service call finishes. Based on your service’s actions, you can even stop the dialog’s button click from closing the dialog by setting the args’ Cancel parameter to true. This could be done to tell the user that the request wasn’t able to complete and try again or that maybe their content failed some kind of validation. In our sample app we would cancel the the action if the user’s gold balance was too low to complete the transaction.

async void Dialog_PrimaryButtonClick( ContentDialog sender, ContentDialogButtonClickEventArgs args )
{
  //
  // Get the deferral because we need to await the
  // annotation to post.
  //
  var deferral = args.GetDeferral();

  //
  // Get creation status and if failed, let's
  // keep the dialog opened.
  //
  var success = await ViewModel.MakeFooServiceCall();
  args.Cancel = !success;

  //
  // Complete deferral to close the dialog.
  //
  deferral.Complete();
}

When we originally wrote this code, the deferral object wasn’t very well documented and it took us some digging to figure out what it was and how to use it. Now it seems to be well documented within an example, but maybe this post will still help someone :)

Easter 2017

It has been over five years and I am again brought back to N.T. Wright’s thoughts on Easter each time we gather to celebrate.

Despite a thousand Easter hymns and a million Easter sermons, the resurrection narratives in the gospels never, ever say anything like, “Jesus is raised, therefore there is a life after death,” let alone, “Jesus is raised, therefore we shall go to heaven when we die.” Nor even, in a more authentic first-century Christian way, do they say, “Jesus is raised, therefore we shall be raised from the dead after the sleep of death.” No. Insofar as the event is interpreted, Easter has a very this-worldly, present-age meaning: Jesus is raised, so he is the Messiah, and therefore he is the world’s true Lord; Jesus is raised, so God’s new creation has begun—and we, his followers, have a job to do! Jesus is raised, so we must act as his heralds, announcing his lordship to the entire world, making his kingdom come on earth as in heaven!

― N.T. WrightSurprised by Hope: Rethinking Heaven, the Resurrection, and the Mission of the Church

How do we make His kingdom on earth as in heaven? By loving others. By caring for those in need. By campaigning for justice. By keeping your integrity. By taking care of the environment. By building hospitals and digging wells. By preaching, painting, singing, and sewing.

What we do with our lives in the now matters greatly because with them we are literally making earth more like heaven, or less like it.

ItemClicked event is not supported as an EventTriggerBehavior within ListItemTemplate

I’ve been working on writing some code samples for our Universal Windows Platform, they really are pretty neat how they enable a single app to run across Windows desktop, phone, Xbox One, and even HoloLens eventually. We’ll have the code sample released in the near future, but for now I wanted to blog about some small issues I’ve run into, couldn’t find any relevant documentation or stackoverflow answers, and I ended up figuring out the solutions on my own.
In this case, we were creating a listview and each item we wanted to be clickable to navigate to a detail page regarding that item. The listview control does have a selected item functionality built in, but we didn’t want to use that. A simple command to execute when one of the items is clicked is exactly what we wanted.
<DataTemplate x:Key="ListItemTemplate"> <interactivity:Interaction.Behaviors>
  <core:EventTriggerBehavior EventName="ItemClick">
    <core:InvokeCommandAction
      Command="{Binding DataContext.FooCommand, ElementName=LayoutRoot}"
      CommandParameter="{Binding}" />
    </core:EventTriggerBehavior>
  </interactivity:Interaction.Behaviors>
</DataTemplate>

<ListView ItemsSource="{Binding TheItems}"
  IsItemClickEnabled="True" SelectionMode="None"
  ItemTemplate="{StaticResource ListItemTemplate}" />
 Seems like this will get the job done, but compiler kept throwing us this very helpful error.
Cannot add instance of type 'Microsoft.Xaml.Interactions.Core.EventTriggerBehavior' to a collection of type 'Microsoft.Xaml.Interactivity.BehaviorCollection'. [Line: 27 Position: 95]
Cannot add instance of type 'Microsoft.Xaml.Interactions.Core.InvokeCommandAction' to a collection of type 'Microsoft.Xaml.Interactivity.BehaviorCollection'. [Line: 29 Position: 99]
Cannot add instance of type 'Microsoft.Xaml.Interactions.Core.EventTriggerBehavior' to a collection of type 'Microsoft.Xaml.Interactivity.BehaviorCollection'. [Line: 28 Position: 95]

Well, after a bit of digging I found out that a data template does not support an event trigger behavior for the event name as ItemClick. The ItemClick event is actually specific to the ListView xaml control, which is why the compiler complains that it cannot be added to the BehaviorCollection, so in our event trigger behavior we had to use a different event entirely. The Tapped event is the event we want, it is a high level event to cover both touch and mouse interactions.

<DataTemplate x:Key="ListItemTemplate">
   <interactivity:Interaction.Behaviors>
      <core:EventTriggerBehavior EventName="Tapped">
         <core:InvokeCommandAction
            Command="{Binding DataContext.FooCommand, ElementName=LayoutRoot}"
            CommandParameter="{Binding}" />
      </core:EventTriggerBehavior>
   </interactivity:Interaction.Behaviors>
</DataTemplate>

<ListView ItemsSource="{Binding TheItems}
  IsItemClickEnabled="True" SelectionMode="None"
  ItemTemplate="{StaticResource ListItemTemplate}" />
 There we go. Now, when a user clicks, or touches, one of the items shown in the ListView, the proper trigger is fired.  Hope this helps!

Staying Fresh When Behind

Dota Match 1246203674

I’m still not exactly sure how we end up winning this game, sheer willpower? The opposing team had a better hero composition, more carries (also better ones in my opinion), they were ahead of us by over 5k xp multiple times within 30 minutes, and we had a player (Slardar) that seemed to be feeding on purpose. The only thing we had going for us was their Lion kept taking all their kills, hard to believe when they have a Sniper and Riki. Within the first 10 minutes my lane partner was calling it game over, and I honestly thought he was right. We couldn’t get much farm and they were killing us if we stepped past our towers. But like any competition, you need to hold onto some small bit of hope in order to win. Giving up is the last thing you want to even think about. So, we kept playing. We held our own at our high ground and they couldn’t break us.

So remember, it doesn’t matter what comes, fresh goes better in life!

Playing with Noobs

Lately I have not been playing many single player games at all. I have a few I would like to play through, but I’m currently immersed in multiplayer team games. The biggest taker of my time is currently DOTA2 followed by Destiny and now that Smash Bros is out, I’ll probably be learning the newer ropes for that too.  Multiplayer games have this innate ability to be easy fun compared to a single player campaign simply because you are playing with other people; friends or not, the game is infinitely more interesting because you are interacting with actual people and can be more fun. Can being the keyword there, because when your game revolves around other players it no longer goes the way you want it to. Just like in a team sport, if someone fails to perform their role then you can fail as a result even if you do yours well. This happens more often than I’d like, or maybe that is confirmation bias, and I’m not ashamed to admit that it can frustrate the hell out of me.

The other day a few buddies and I were playing a game of Dota2 with a player on our team that was almost certainly brand new to the game. This sniper didn’t buy any of the suggested items, instead he only bought items which improved his agility statistic (which does make some sense as agility is the hero’s primary stat). We tried suggesting better items to buy/use, but he kept buying agility items. As a result, he died a lot in the early game, “feeding” the other team gold and exp, making the rest of the game a very one-sided experience. My friends and I didn’t blame or yell at the sniper player over our voice chat, but we all knew who cost us the game, or at least a good game. We all wondered, “Why are playing with a first timer? Why is this possible for the game to match us up?”.

Earlier this week I was going through the Vault of Glass raid on Destiny with 5 other coworkers. A raid is a type of mission that is usually much larger in scale and requires a team of players to work together to conquer obstacles, enemies, and puzzles to finish it. You need above average teamwork to accomplish this challenge, and it can take hours to complete. I have gone through the raid a few times now but this time I believe we had more people on the fireteam that hadn’t finished it than those of us that had, and I was the most experienced player. Throughout the raid I could feel frustration bubbling up when someone didn’t do their part, missed an oracle call out, or just died when they shouldn’t have. Any fault in someone’s play usually result in a team wipe and we would have to start the section over again. Our final time was 3 1/2 hours when it usually takes my more experienced group about 1 hour. I couldn’t get mad though, I had joined this group of my own choice. We were also talking and laughing throughout the entire thing, it was very fun even though it was taking a lot longer. I stayed because every raider has their first raid when they were learning what to do, what not to do, etc. I’m sure I was the same or worse when I first learned it all.

So why is playing with noobs so frustrating when it is an inevitable experience? After all, you can’t truly ever have someone play their first team game without playing with actual teammates, it wouldn’t be a real first game. When you play any game, you feel competent at, you expect to at least do well enough to be satisfied with your performance. But the shtick of any team game is you can’t do your best if someone else holds you back. Just like how a team victory feels that much better when everyone is assisting each other, a team loss feels that much worse when you can’t do your job because someone isn’t doing theirs’. It has happened, it is happening, and it will continue to happen. I think too many noobs face people yelling at and insulting them, so they keep their microphone and speakers off and therefore don’t learn from others who sometimes actually try to help them in game. I’ve found the best response is to take a breathe, pop a mentos, and make the best of the game you can. Talk to the noob, be friendly, and explain things you think he may be confused with. It is surprising how quick they will start asking you more questions or be more eager to help out once they see you as an ally/teacher. Or they might not, refuse to take any advice, drag your team down to a frustrating loss. Oh well, there’s always the next match.