Subscribe: Blogus Maximus
Preview: Blogus Maximus

Chris G. Williams

Beware: I mix tech and personal interests here.

Copyright: Chris G. Williams

What’s New in C# 7.0 Article in Code Magazine

Thu, 11 May 2017 19:49:59 GMT

Originally posted on:

My What’s New in C# 7.0 article in Code Magazine is out now.


You can find it online, at:

Or you can download the PDF of the entire issue, at:

You can also get a print subscription, at:

(image) (image)

MonoGame – v3.6 now available

Tue, 07 Mar 2017 18:38:10 GMT

Originally posted on:

MonoGame 3.6 now available!

Pardon the interruption of the regular MonoGame blog series, but this is important.  There’s a new version of MonoGame now available!!

Grab MonoGame 3.6 here:

There are a bunch of new features, and a small mountain of bugfixes and enhancements. 

Read the entire changelog here:

(image) (image)

7. MonoGame - Putting Text Onscreen With SpriteFonts

Wed, 22 Feb 2017 20:00:28 GMT

Originally posted on: – Putting Text Onscreen With SpriteFonts In MonoGame, text is displayed on the screen in much the same way as sprites, or 2D images. The difference is in how you prepare the font and how you work with it. To display text onscreen, you can create your own images of words, letters and numbers, and display them just like regular sprites, but this is incredibly time consuming and not very flexible, so instead we use a SpriteFont, which is a bitmap containing all the characters in a given font, pre-rendered at a specific size. Think of it as a SpriteSheet, only for letters, numbers and symbols, and you won’t be far off. Creating the SpriteFont In your Solution Explorer (below), double-click the Content.mgcb icon. (You may have to associate it with a program. If so, select MonoGame Content Builder.) Once you have the MG Content Builder open, click the Add New Item button (below) and then select SpriteFont Description and enter a name for your SpriteFont. This will create an XML file which you will need to add to your project, but first, let’s take a look inside: You can open up your copy by right-clicking the file and selecting Open File. If you open it in notepad, it’s a bit of a mess, so I recommend using Notepad++ or Visual Studio so you can really see what’s going on. For now, just focus on a couple of key areas… FontName and Size.  You’ll notice it’s currently set to Arial and 12, respectively. Just for fun, change it to “Verdana” and “36”, and then save the file. Go back to the ContentBuilder, and hit the F6 key to build your SpriteFont.  This is where the MonoGame Content Pipeline reads in your XML file, looks up the specified font on your system, and generates a spritesheet containing images of all of the characters in your font, at the specified size. Assuming you didn’t introduce any typos, you’ll get a message saying the build was successful. Go back to Visual Studio, and right click on the Content folder again and select Add –> Existing Item. You’ll probably have to change the file filter to “All Files (*.*)” in order to see your SpriteFont file, so once you find it (in the Content folder), select it and add it to your project. Now to just add a couple of lines of code, and we’re all set. Displaying the SpriteFont At the class level, in your Game1.cs file, right after the redMushroom variable, add this: SpriteFont verdana36; (If you didn’t follow the previous post, just add it right before the constructor.) And in the LoadContent() method , add this right after the redMushroom line: verdana36 = Content.Load("demo"); (Again, if you jumped in here, just put it at the end of the LoadContent() method, before the closing curly brace.) I called mine demo.spritefont, but you DON’T put the extension in here or it will throw an error. If you named yours something different, be sure to change it. Finally, inside the Draw() method, put this line in between the spriteBatch.Begin() and .End() methods: spriteBatch.DrawString(verdana36, "I PUT TEXT ONSCREEN", new Vector2(0, 200), Color.White); And if you didn’t follow from the previous post, add these lines instead: spriteBatch.Begin(); spriteBatch.DrawString(verdana36, "I PUT TEXT ONSCREEN!!", new Vector2(50, 275), Color.White); spriteBatch.End(); That’s it! You’re done.  Just hit F5 to see it in action. Next Up… I’ll cover listening for (and responding to) input. If you came directly to this page, you can find the complete list of articles here. [...]

Amazon Alexa Skills Article in Code Magazine

Mon, 20 Feb 2017 15:22:06 GMT

Originally posted on:

My Amazon Alexa Skills article in Code Magazine is out now, and it’s the cover article!!! Very exciting stuff.


You can find it online, at:

Or you can download the PDF of the entire issue, at:

You can also get a print subscription, at:

(image) (image)

2017 Syntax Code & Craft Conference

Fri, 17 Feb 2017 14:53:58 GMT

Originally posted on:

Looks like I'll be speaking again this year at the Syntax Code & Craft Conference, in Charleston, SC. 

Date: May 18 & 19
Topic: What's New in C# 7

C# 7 introduces a number of great features, including (but not limited to) pattern matching, tuples, and local functions. Additionally, several existing features have also been improved, along with overall performance.

In this talk, we’ll demo the new and improved language features and look at ways to take advantage of the performance improvements in C# 7 and Visual Studio 2017.

(image) (image)

6. MonoGame - Putting a Sprite Onscreen

Thu, 16 Feb 2017 18:48:24 GMT

Originally posted on: - Putting a Sprite Onscreen If you aren’t familiar with the term “sprite”, it refers to a two-dimensional (2D) graphical image that you can display onscreen. Sometimes they are individual images, and sometimes you can find them on what is called a SpriteSheet. Here’s an example of a SpriteSheet: We’ll come back to using SpriteSheets later, since that’s a little more complex than just putting a single image onscreen. I’m going to use this image for now: You can just right-click it and “Save As…” to your desktop or wherever, since we’ll be using it shortly. If you haven’t already, create a new MonoGame Windows Project. (Take a look here for a refresher on the project types.) Once you have the project created, you’ll want to add your sprite to the Content folder of your project. (right-click, Add,  Existing item…) Mine is called red_mushroom.png so you should name yours that as well if you’re following along (or, you know, change it in the code… whatever.) You’ll need to check the properties, and make sure Build Action is set to Content and Copy to Output is set to Copy if newer, like so: Next, open up the Game1.cs file and add the following variable under the SpriteBatch definition, before the constructor:         Texture2D redMushroom; A Texture2D is how MonoGame (and XNA) refer to a two-dimension graphical asset. Scroll down to the LoadContent() method and add this line:         redMushroom = Content.Load("red_mushroom"); The Content.Load<> is a generic that accepts a number of different types, including audio and 3D models. You can leave off the filename extension, or add it, it won’t make a difference, and it automatically looks in the Content folder by default! Lastly, scroll down to the bottom of the file and add this to the Draw() method, before the call to base.Draw:         spriteBatch.Begin();         spriteBatch.Draw(redMushroom, new Vector2(0, 0), Color.White);         spriteBatch.End(); I’m not going to go in much detail here about SpriteBatch, other than to say it provides a way to send multiple commands efficiently to your graphics card. We’ll dig into the SpriteBatch in a later post. The Draw() command has a lot of overloads, and the one we’re using takes the Texture2D, some coordinates, and a filter color. (Using white means we don’t change it at all. Try changing the color to Red or Blue and see what happens!!) You’re done! Hit F5 and marvel in the glory of a giant red mushroom on a cornflower blue background. Next up… I’ll cover putting some text on screen. If you came directly to this page, you can find the complete list of articles here. [...]

5. MonoGame - The Game Loop

Mon, 13 Feb 2017 19:35:54 GMT

Originally posted on:

The MonoGame Game Loop (just like the XNA Game Loop)

In the previous section, we talked about what you can find in the MonoGame project, so these methods should look familiar.  Now I’ll explain a bit more about them, but first, a picture…


  • The Initialize() method is called only once, when your game first starts up.
  • The LoadContent() method is called from the Initialize() method, and is where any content assets (3D, 2D, spritefonts, music) would be loaded.
  • The Update() and Draw() methods form the game loop.

The Game Loop keeps going until you exit out of it. One pass through both of these methods is called a frame, and on the Playstation and Xbox, you’ll get about 60 frames per second (FPS). Some smartphones run about 30 FPS. Your performance can vary significantly on a PC, because of the hardware involved, but consoles give a pretty consistent experience overall. We’ll cover a bunch of the interesting things you can do in the Update() and Draw() methods in a later post.

  • The UnloadContent() method is where you would dispose of any resources you loaded up for your game.


Next up…

I’ll cover putting something on the screen. If you came directly to this page, you can find the complete list of articles here.

(image) (image)

Adventures in 3D Printing

Mon, 13 Feb 2017 15:42:19 GMT

Originally posted on:  I have a Micro 3D Printer, which runs (usually headless) off an OctoPrint server, running on a Raspberry Pi 3.  I moved a few months ago and the whole setup sat in a box until this weekend. I start setting everything up again. I'm not a Linux expert by any means, but this thing is relatively plug and play, when it works. Fire everything up... led lights come on, it’s running headless (no monitor or keyboard) but I think it’s booted ok. Off to a good start. The OctoPrint server presents a nice web interface you can use to control your printer, so I try to connect from my desktop.  No luck.  Drag out a monitor, hmm... VGA, ok... dig around and find a HDMI to VGA adapter. Takes a little bit because none of my stuff is organized (AT ALL) but I eventually find one. Need a keyboard too... off to the garage to dig through more boxes. Eventually, I return, keyboard in hand. reboot the Pi again... lots of scrolling text, so far so good. I go to log in... hmm... crap. I seem to have forgotten my login and password.  Try a few things, no luck. Eventually, a few Google searches reveal the default login and password which I hadn't changed, so now I'm logged in. do a quick ifconfig (the linux equivalent of ipconfig.exe) and it looks like I've got an IP address, but it's different than the one I bookmarked for OctoPrint. Ok that feels like progress. Back to the desktop, change the ip address.  still no luck. Think... what's different?  New router. There's no way it's connecting, and the old IP was hardcoded. So back to the Raspberry Pi. Shut it down, pull out the SD card so I can edit the network config file on my PC. Dig around in more boxes for an adapter.  Uhoh... my main PC doesn't have a slot to read it. hmm... ok, looks like one of my other machines does, so I pop it in. Open the folder. It closes. *sigh* repeat this a couple times.  Apparently this adapter isnt any good. Find ANOTHER adapter, pop it in... try again. Folder stays open this time. ok good, open up the network config file and sure enough, the wifi info is wrong. change it to my new router, update the password, close it up. Stick the card back in the pi, boot it up… wait, wait… log in.  Try hitting it from my desktop. no luck. hmmm… think think, I sorta recall something about the server needing to be on the subnet as whatever machine is hitting it, maybe?  Check the ip on my desktop… ok, different subnet. Raspberry Pi is on wifi, desktop is wired. try changing the ip address on the pi, go through all the steps again… pull out card, put in card, edit file, etc…  back in the pi, boot it up… try to hit it.  Nope. I have two wifi networks (don’t ask) so I try connecting to the other one. just for grins I do a sudo apt-get update command on the pi. lots of errors and timeouts. Hmm… ok this thing OBVIOUSLY isnt actually connecting to the internet. That’s weird.  Go back and change it again, back to the original network. try running the update command again… same errors. Ok, what’s going on? Take a break, grab a drink… walk around the house mumbling profanities under my breath… go back upstairs, and look at my network info on my main pc. hmm… Linux is case sensitive.  ok, take another look, sure enough… SSID is all caps, but not in the network config file. Feeling a bit stupid, and triumphant, all at the same time, I change it again… boot it up. Holding my breath, I try to hit the server from my PC. Success!! Awesome…  but apparently I’m about 6 versions behind. Ok ok, fair enough. hit the update button, go look for something to eat downstairs. come back, reboot again. ok, it says my printer is not connected to the server. click the connect button… wait… wait… nothing. I check the log tab… it’s trying[...]

4. MonoGame - What’s in the Starting Project?

Tue, 07 Feb 2017 17:29:17 GMT

Originally posted on: - What’s in the Starting Project? Now that you have MonoGame & Visual Studio installed, go ahead and create a MonoGame Windows Project. You can call it whatever you want. In the Solution Explorer, you’ll see a Content folder (more on this in a bit), an icon file (put your cursor on it), and finally two .cs files: Program.cs and Game1.cs Program.cs is our game launcher. Go ahead and click on it. There’s not much there, other than a call to your Game1() class, and you will rarely have to do anything in this file. Program.cs The other file, Game1.cs, is a lot more interesting. This is where we’ll be spending most of our time. Go ahead and click on it and take a look around. The first thing you’ll probably notice are the namespace references at the top of the page. Even though there’s no actual dependancy on XNA in MonoGame, the decision was made to keep the namespaces in order to ensure maximum conpatibility with existing XNA code. Next up, we have the GraphicsDeviceManager and SpriteBatch. Those will be discussed further in a later article. The constructor is pretty basic, and includes a reference to the GraphicsDeviceManager and the Content folder. There are five methods in this class, which I’ll cover now. Initialize() – This method is called ONCE, when your game first starts up. Use it to set up any services or external things like non-graphical content. LoadContent() – This is where you would load your games graphical content, such as sprites, spritefonts (more on those later), and 3D models. UnloadContent() – THis is where you unload the content you referenced in the LoadContent() method. Update() – After loading your assets, much of your coding will occur here. This is where you check for user input, and also update the state of objects being used in your game. Draw() – This is where you draw onscreen, using the data you updated in the Update() method. These last two methods, Update() and Draw(), form what is known as the game loop, which I’ll cover in the next section. Next up… I’ll cover the Game Loop. If you came directly to this page, you can find the complete list of articles here. [...]

3. MonoGame - Project Types Explained

Mon, 06 Feb 2017 19:08:07 GMT

Originally posted on:

MonoGame Project Types Explained

In this post, I’ll cover the various types of MonoGame projects you can create within Visual Studio.


Assuming you’re running MonoGame 3.5.1 (from the installer) your New Project dialog should look something like the picture above. If you’re pulling down more recent (i.e. unreleased) builds, then you’ll likely notice some differences, such as OUYA being removed, and new projects possibly being added.

MonoGame Windows Project

This first project type is the one I’ll be using in the next few sections. This is the standard Windows game project.

MonoGame Windows 10 Universal Project

This project type allows you to create games for one or more device families, such as Desktop, Mobile, IoT, Xbox, HoloLens. For more information about Universal Projects and Device Families, be sure to read this post.

MonoGame Android Project

If you want to create games for Android smartphones and tablets, using C#, this is the project for you.

MonoGame Content Pipeline Extension Project

I’ll go into a lot more detail on the content pipeline in a later section, but essentially this project type enables you to create your own content types, or modify how existing ones are processed for your games.

MonoGame OUYA Project

Remember the OUYA? Yeah, me either. Unfortunately, this little Android powered console didn’t survive, and this project type didn’t either.

MonoGame Cross Platform Desktop Project

This project allows you to create games for Linux and Mac, and WIndows of course. More on this later too.

MonoGame iOS Project

Want to make iPhone and iPad games? Well, you’re going to need a Mac to deploy them, but you can start coding them thanks to this project.

Next up…

I’ll cover what you get in the MonoGame Windows Project, and take a look at what all the various sections mean. If you came directly to this page, you can find the complete list of articles here.

(image) (image)

2. MonoGame - What do I need, and where do I get it?

Mon, 06 Feb 2017 18:06:45 GMT

Originally posted on:

MonoGame - What You Need, and Where To Get It…

Development Environment

You’re going to need an IDE. If you’ve been developing for a while, you probably already have one of your own, or at least a preference. If you’re completely new to all of this, then it comes down to your choice of operating system.

If you’re running Windows, get Visual Studio 2015 Community. It’s free, and quite good.

If you’re running MacOS, the process is a little more involved, so follow these steps.


You’re going to need a copy of MonoGame, of course, but you’ll need to choose between the installer and the source code. If you’re just getting started, stick with the official installer! Once you’re up to speed, then you can consider pulling down the latest source and either contributing, or modifying it to suit your own purposes.

As of this writing, the latest official release of MonoGame is v3.5.1.  there’s a brand new version!!  You can find installers for the IDE and platform of your choice here:

That’s it for now. In the next post, I’ll take a look at the sample projects. If you came directly to this page, you can find the complete list of articles here.

(image) (image)

1. MonoGame - Why MonoGame?

Mon, 06 Feb 2017 22:24:00 GMT

Originally posted on:

Why MonoGame?

You’re thinking about getting into game development, and you’re trying to decide how to get started. There are a number of great reasons to go with MonoGame.

  • Maybe you found Unity to be confusing and even a bit overwhelming.
  • Maybe you prefer to “live in the code.”
  • Maybe you’ve used XNA in the past, and want to work with something similar.
  • Maybe you want to create a game that can run on Macs, Windows PCs, Android phones or tablets, iPhones and iPads, or even Xbox & Playstation… with minimal alterations or rewrites to your existing code base.

MonoGame offers game developers an opportunity to write their game once, and target MANY different platforms.

MonoGame is the open source “spiritual successor” to XNA, which was a great game development framework that is no longer supported by Microsoft.

There have been a number of quite successful games created in XNA and MonoGame. You can see a few here.

In the next post, I’ll cover what you will need, and where to find it. If you came directly to this page, you can find the complete list of articles here.

(image) (image)

Beginning MonoGame

Mon, 06 Feb 2017 22:02:00 GMT

Originally posted on:

I’ve had a few folks ask me for a good “Getting Started” tutorial for MonoGame over the last year and I’ve done a few talks on the subject, but hadn’t really had an opportunity to put anything together until now.

Instead of writing some massive thing that I never finish, I’m going to keep these posts relatively short, and focus on individual aspects of getting up and running with MonoGame, dissecting the starter project, and then move into cool things you can do.

As I create new pieces, I’ll update this post with links to them, and hopefully keep a running thread to tie them all together. Also, if I mention covering something later, I’ll try to add a bullet for it here so I remember to come back and add it.

Let’s see where it goes, and feel free to suggest stuff for me to cover as well.





  • More about the SpriteBatch
  • More about SpriteFonts
(image) (image)

Alexa, make me a sandwich.

Thu, 12 Jan 2017 18:47:56 GMT

Originally posted on:

Just wrapped up a pretty beefy article on Alexa programming for the upcoming IoT issue of Code Magazine. That was a lot of fun, and has definitely rekindled my interest in IoT and Home Automation. 

I've been spending a lot of time working with SmartThings and Z-Wave devices, and my Amazon Echo lately. Getting them all talking to each other. Mostly everything "just works" with minimal configuration, which is nice, and I've been experimenting with responding to sensor input. 

I've got my gecko tank set up to switch lights at sunrise and sunset, and that was easy enough. The dining room light is programmed to come on at sunset, if nobody is detected as "home" so we don't have to come into an dark house. I've bought a few smart bulbs, and smart switches, so I can schedule those (and so I can turn off the lights if I forget, without getting out of bed. ;) 

I've already tagged all the kids (like a pack of wildebeests) so I know whenever they leave and arrive at the house on school days. I've been eyeballing the Nest Thermostats, but haven't tried installing one yet. Not sure how involved they are.  

When we built the house, we wired everything for Cat6, and I'm setting up PoE cameras.
(image) (image)

Speaker Spotlight

Tue, 03 May 2016 14:10:56 GMT

Originally posted on:

I'm speaking at the Syntax Code & Craft Convention this weekend, and today they've featured me in their speaker spotlight blog post.  The prose is a bit more effusive and flowery than I'm normally comfortable with, but there's nothing in there that's technically untrue, so...  enjoy!

(image) (image)

2016 Syntax Code & Craft Conference

Tue, 26 Apr 2016 12:57:51 GMT

Originally posted on:

If you're in the SC Lowcountry, or not too far away, you should check out the Syntax Code & Craft Conference ( the weekend of May 6.

We've got quite the lineup (including yours truly...)  My talk...


Is there a technology game developers are looking at for not only the Windows ecosystem, but also cross-platform opportunities? MONOGAME! Looking to support iOS, Android, OUYA, PSM, Windows and more? MONOGAME!

In this talk we’ll cover the basics of MonoGame, it’s similarities to Microsoft’s gaming development platform XNA, the differences, how to get started and any tricks and traps to watch out for. Fun talk with plenty of code and demos.

Learning Objectives

  1. What is MonoGame?
  2. How/where to get it and set it up?
  3. How/where to use it?

(image) (image)

Danzig - Skeletons (a review)

Wed, 02 Dec 2015 17:58:08 GMT

Originally posted on: I listened to Danzig's new release SKELETONS today... TL;DR;  It's ok. His voice sounds great, but the selection of covers is pretty lackluster, with the exception of N.I.B. and a couple others.The Review....Let me start by saying I'm a fan of the musician/singer Glenn Danzig. I've been listening to everything he's touched since the early 80's. Misfits, Samhain, Danzig, Son of Sam, his various operas, etc...  He's changed lineups quite a few times since then, and he's released some great stuff, and some real crap, but I persevere.This latest release is a collection of covers of songs that inspired Glenn Danzig back in his formative years. That's cool, and it's a nice insight into where he's coming from, though if you've listened to him as much as I have, there won't be any surprises in terms of the bands, but perhaps the song choices will...Overall, I'm not in love with most of the song choices, and this release didn't really do much for me, although there are definitely a few standouts, as detailed below.I will say, this is the best (BY FAR) that his voice has sounded in years. You can tell he was struggling a little on a couple songs, but overall, it's great to get a Danzig album that's not overprocessed and has his vocals muddied out with too much bass.It's definitely worth a listen on Spotify, but I'm not sure it's worth your cash. If you really want an interesting album, check out The Lost Tracks Of Danzig, which is full of B-Side type songs and variant stuff that didn't make it into albums elsewhere.Skeletons Track List:Devils Angels - not a bad cover, somewhat reminiscent of his early Misfits work.  Worth a listen.Satan - this one is just ok. Not bad, but rather uninspired.Let Yourself Go - clearly this is an Elvis cover. It's good, and he even channels Elvis a little more than usual. This one is in my top 3.N.I.B. - this one sounds great. Definitely my favorite cover.  It helps that I like the original of course, but Danzig definitely does it justice. Great technical work by the band as well. Lord of the Thighs - ugh... just don't.  Not a fan of this song or the cover.  Decent guitar work though. Action Woman - I don't know what Glenn's going through in his personal life, or why he chose this song. It's kinda ok. I guess.Rough Boy - Love this song. Great cover. Definitely in my top 3. Again, his voice sounds great, reminiscent of his D:III work. With A Girl Like You - Another bass heavy cover. Not bad, and feels like a nice throwback to his punk days. A little muddy though. I don't like ANY Danzig song that distorts the vocals. Just saying.Find Somebody - I like the intro to this song... feels very familiar, like his Danzig and Lucifuge albums. Not a huge fan of the original song, and the chorus is just ok. (See Action Woman, above.)Crying in the Rain - God... his voice sounds GREAT in this song. But... another love song. ugghh... [...]

ADOM now on Steam, a review.

Tue, 17 Nov 2015 18:38:01 GMT

Originally posted on:

It's hard to believe that I've been playing this game for nearly 20 years.  My favorite game (ever) has just released on Steam this week.  If you like RPGs and/or Roguelike Games, you owe it to yourself to check out Ancient Domains of Mystery (ADOM) on Steam.  Since this is release week, it's on sale. 


Get It Here:

If you aren't familiar with ADOM, it's a roguelike game. Maybe you've heard of Rogue, Dwarf Fortress, Nethack, Heroic Adventure!, etc...?  It's best described as a Tactical-RPG where death is permanent and all items are randomized when a new game is created. Discovery is a huge part of a game like this, and there is plenty to discover here. Villages, Magic, Story, Questlines... ADOM has it all, and is one of the original roguelikes.

You may be thinking, how is this a roguelike... it's too pretty. It's true, ADOM has gotten a fresh coat of paint, along with some necessary engine overhauls to make it work in the Steam ecosphere, but it's still very much the same game at heart.  In fact, ASCII mode is only a couple of clicks away if that's how you roll. (Though I have to admit, the new interface is really sweet.)

I've only gotten a few games in since release yesterday, but I can attest to many, many late (all) nighters with this game.  There's a certain threshold that once you get past it, in terms of progress, you really don't want to stop, for fear of angering the RNG gods.

If you're looking for a fun, but brutal, RPG... you owe it to yourself to pick this one up.

(image) (image)

v1 of my .NET wrapper for Coinbase API has been released

Mon, 17 Mar 2014 16:59:18 GMT

Originally posted on:

As the title says, v1.0 of Coinbase.NET, my C# wrapper for the Coinbase API is now released. You can get it here: (image) (image)

Are you using cryptocurrencies? Request for info.

Thu, 13 Mar 2014 14:39:20 GMT

Originally posted on:

Hey everyone,

I'm working on an open source library involving Bitcoin and I was wondering how many (if any) of you are currently working with cryptocurrencies in your apps & games?
Whether you are buying/selling them, or just accepting them as a form of payment, I'd like to get some idea of what you're doing, what APIs you're hitting, what you think of it overall, and how I can (possibly?) make things like microtransactions and in-app purchases easier for you.
Feel free to leave a comment on this post, or message me if you don't want to talk about it publicly.
(image) (image)

upcoming user group / conference visits

Wed, 26 Feb 2014 14:41:38 GMT

Originally posted on:

The next 6 months are going to be pretty fun (and by fun, I mean hectic.) In addition to a couple of interesting side projects (writing & video), I'm also going back on the speaker circuit. Fortunately, I'll be able to tie a few of these stops to some "vacation" destinations.

3/18: GSP Developers (Greenville, SC)
4/22: Enterprise Developers Guild (Charlotte, NC)
5/15: WNC.NET (Asheville, NC)
7/11: Codestock (Knoxville, TN) TENTATIVE
8/07: RV.NUG (Roanoke, VA)
8/28: DevLink (Chattanooga, TN) TENTATIVE
9/13: Code Impact (Jacksonville, FL)

Taking the mystery out of CryptoCurrencies

Maybe you've heard of BitCoin, but what about LiteCoin, DogeCoin, AmericanCoin or BBQCoin? (Yes, really.) These are just a few of the available CryptoCurrencies that are showing up. If you've wondered what they are, how to get them, how they work, or what Bitcoin Mining is, then this is the talk for you.

Once you've got them, what do you do with them? We'll cover some code and show ways to leverage BitCoin and other CryptoCurrencies in your applications. Whether it's taking payments, or buying and selling the coins themselves.Taking the mystery out of CryptoCurrencies

Maybe you've heard of BitCoin, but what about LiteCoin, DogeCoin, AmericanCoin or BBQCoin? (Yes, really.) These are just a few of the available CryptoCurrencies that are showing up. If you've wondered what they are, how to get them, how they work, or what Bitcoin Mining is, then this is the talk for you.

Once you've got them, what do you do with them? We'll cover some code and show ways to leverage BitCoin and other CryptoCurrencies in your applications. Whether it's taking payments, or buying and selling the coins themselves.
(image) (image)

Are Cryptocurrencies Ready?

Tue, 14 Jan 2014 19:43:39 GMT

Originally posted on: Cryptocurrencies Ready For Mainstream Use? Are we?   I'm a big fan of the major cryptocurrencies like Bitcoin (BTC) and LiteCoin (LTC). I’m not really paying any attention to the dozens of derivative (and in some cases satirical) alternatives, such as Dogecoin and Coinye, but I think Bitcoin and Litecoin have a real shot at permanence.   Having said that, do I think they are ready for prime time, mainstream use? Not yet, and here's why... Cryptocoins have no intrinsic worth. In other words, they hold no value of their own. At this time, the only way *most* people (i.e. the non-enthusiast layman) can assess the value of 1BTC is by comparing it to another more established currency, like USD, EU, GBP, etc. There's simply no other way to describe it to someone else. "But wait," I hear you argue... "I can tell the value of a Bitcoin by looking at how much someone charges for something, in Bitcoin." This is true, however, it's also misleading. The only way this is of value is precisely BECAUSE you know the intrinsic value of what you're buying in your native currency. Looking online, you know that you can buy a $50 Amazon Gift Card for 2.2047LTC. Therefore you can puzzle out the value of 1LTC as being a little under $25, but you're still just trading one currency for another. You know exactly what LTC is worth, because the intrinsic value of what you are buying is printed on the item. How about something a little more abstract? If you don't know a lot about Bitcoin, or follow it regularly, would 250 apples for 1BTC sound like a good deal to you? How about 500? If it were 250 apples for $1, you'd jump on it... because you know exactly what $1 is worth. (Hint: at Bitcoin’s current valuation of roughly $900, it would be a really bad deal for the buyer.) To take it a step further, cryptocurrencies in general are an unstable bunch. If you don't know what it's worth, and you don't know what it can buy, and you don't know it's value on any given day (or hour) then you are at the mercy of the seller at the time of purchase. This isn’t as big of a deal when buying tangible product, face to face, especially if you like to haggle. But what if you are buying digital product, with a digital currency, via an internet connection to a “faceless” website? You either accept the price, or you don’t. There’s nobody to argue with. Unlike our U.S. Dollar, there are no printed or minted practical denominations of BTC. Sure you can buy a 1BTC coin, but with current prices hovering around $1000 per BTC, how would you spend it? Most things you would buy are in incredibly small fractions of Bitcoin. Don’t believe me? Here’s another example: Let’s say you bought 1 Bitcoin at a bargain price of $800. A week later, it’s worth $950. Yay!! Thrilled with your windfall, you decide to purchase a $50 Amazon Gift Card later that day. Unbeknownst to you, China has decided to ban the Bitcoin exchanges (temporarily, it turns out) causing a momentary plummet in the value of 1BTC. Let’s say it’s now worth $400 (this is based on reality.) Had you purchased the gift card when your Bitcoin was worth $950, it would have cost you .05266BTC. Now it will cost you 0.125BTC. Doesn’t seem like a huge difference, but when the Bitcoin market stabilizes a couple days later, going back to approximately $900 for 1BTC, can you tell me how much you spent on that $50 gift card? So how do [...]

Are you a gamer? Get ready for your barcode tattoo and RFID chip.

Tue, 17 Sep 2013 19:42:38 GMT

Originally posted on:

Gamers should be monitored and tracked? Oh, how the stupid burns. It burns.

"why aren’t we looking at frequency of purchases per person? And also, how often they’re playing and how many..."

It's a shame that blonde hair and a pretty face are mistaken for the ability to think. Who gave this nitwit a microphone, anyway? Oh right... Fox News.
after-mass-shooting-fox-news-host-wonders-if-gamers-sh-1335462866v (image) (image)

updated bio

Tue, 17 Sep 2013 19:29:55 GMT

Originally posted on:

I've recently updated my speaker bio...

"After eating his rival siblings in utero and being raised by a pack of wild televisions, Chris G. Williams entered this industry with a passion for mobile game development and hash browns (scattered, covered and chunked, if you please.)

He speaks on a variety of topics, and really enjoys Windows Phone, Game Development, and Windows Phone Game Development. He used to talk about XNA, but well... we don't talk about XNA anymore."

In other news, after a LONNNG self-imposed break, I'm looking to do some speaking here and there. Got a Code Camp or "Day of whatever" coming up? Feel free to drop me a link. 

(image) (image)

Have you played Baldur's Gate II?

Tue, 17 Sep 2013 18:50:35 GMT

Originally posted on:

With only $10, a GOG account and a handful of patches, you too can play one of the greatest computer RPGs ever created. The patches mentioned in this Kotaku writeup go a long way in fixing bugs and also modernizing the UI of the game.

The BGII Enhanced Edition isn't terribly far off, of course, but given the mess they made out of BG1EE, I'm not terribly optimistic. (Yes I realize not all of it was the studio's fault.)

Got any favorite Infinity Engine D&D games? I'd love to hear about them.

(image) (image)