Interested in designing computer games? Here’s some books!

Humble Bundle is selling 17 ebooks worth almost $500 on programming and game design on multiple platforms for the stunning price of $15.  Technologies include: Android, Swift, Unity3D, RPGMaker, Java in LibGDX, and HTML5!  As usual, they’re available in epub, Kindle, and PDF formats and are not encumbered with DRM, something that cannot be said for most computer games. 🙂

Unfortunately, the bundle goes away in about 35 hours from this post.  Sorry for the lateness of this notification, December has been a pretty rough month.

I hope you all had a wonderful holiday and here’s to a better ’17!  Let’s make gaming great again! 🙂


Dennis Ritchie, RIP

Well.  It turns out that Dennis Ritchie passed away five years ago.  In an article on Slashdot, they describe the anniversary of the death of famous people sometimes launches a ‘second death’ response, making it look like it just happened.  I somehow noticed that the reported date of his passing was different between the article and his Wikipedia entry but failed to look at the year.  *facepalm*

The Slashdot summary:

Dennis Ritchie invented the “C” programming language, so a second round of honors comes as no surprise. Although five years ago he passed away, some confusion over a tweet started the social media avalanche known as “second death syndrome”. The problem, especially if you look at it from Ritchie’s perspective, is that he’s been dead for five years — exactly five years. That time gap seems to have escaped some of the biggest names in tech, including Google CEO Sundar Pichai, who late Wednesday tweeted out Wired’s five-year-old obituary on Ritchie, thanking him for his “immense contributions.” Om Malik, a partner at True Ventures and the founder of tech site GigaOm, retweeted Pichai’s tribute before soon recognizing his mistake and tweeting an apology for “adding to the confusion and noise.” Craig Newmark, founder of the popular online bulletin board Craigslist, also paid his respects, saying, “this guy made a huge contribution to the world.”

I learned today that Dennis Ritchie passed away on October 8 at the age of 70 (Wikipedia says he died 10/12, I don’t know which date is correct, it doesn’t matter much).  Dennis was one of the gods of the early days of modern computing, being a major part of the team that created Unix and C.  The most respected C system used to be known as K&R C, the initials being for Brian Kernighan and Dennis Ritchie.

In many ways he was more fundamental to modern computing than Gates or Jobs as C and Unix are core to so many things today.  While I am not a fan of C as I prefer higher level languages, I definitely respect Unix and Linux.

Is what is new actually old, just relabeled?

My first job doing actual database programming was around 30 years ago, writing a dBase III+ system that sucked information from a commercial time charge billing system and produced much nicer and richer reports.

That’s ETL. The E and L were easy, the T took a bit of interesting work (setting the third bit of the last byte of a number to 1 to represent the field being a negative value?!). But when did the term start being bandied about in SQL Server as common nomenclature? At a guess, I’d say when Data Transformation Services became a part of the package, whenever that was.

Then a decade or so later, I wrote a system in Microsoft Access (probably 2.0) that allowed multiple users to coordinate individual databases so that each user could see other people’s information, but couldn’t change it.

That was sneaker net replication. Everything was copied on to floppies (some data sets were so minuscule back then!) and it worked reliably. I have no idea when replication entered the database lexicon, but I certainly didn’t use the term back then. We had SQL Server, but this group was isolated from our network because of reasons, so I had to provide the service through some unconventional means. And it worked.

So what’s next? What are we doing today, that we think is a one-off process, which will become a TLA or known term in a couple of decades? I have no idea, I hope to be fully retired and enjoying the German countryside then.

Updating Statistics

I read a post recently saying that updated statistics could prove more important to performance than optimizing indexes.  Cool stuff, and possibly much lighter on your server load.  If I can find the article that I read, I’ll post a link and/or an excerpt.

Here’s a couple of scripts using the undocumented sp_msforeachtable stored procedure, provided by MS since time began or shortly thereafter.

First, view the date that statistics were updated for every table:

sp_msforeachtable @command1="SELECT name, STATS_DATE(object_id, stats_id) as StatsDate FROM sys.stats 
WHERE object_id = OBJECT_ID('?')"

The results are interesting, you have one result pane for every table with one row for every index.  If your table name is part of the index name, identifying what is what shouldn’t be difficult.  But what was really interesting was the groups of indexes, including PKs, that the StatsDate field was null even after running an Update Statistics.  It took a minute for me to realize that those tables currently had no records.  *facepalm*

That ‘?’ functions as a variable substitution for the table name within the SP.  Its companion undocumented SP, sp_msforeachdatabase, has a similar wildcard.  One problem with sp_msforeachtable is that @command1 only accepts 128 characters, this is probably a carryover of the days that the maximum length of a char/varchar data type was 256 characters, with nchar/nvarchar taking half that.  Now in more modern SQL, char/varchar has a max length of 4,000 characters, so it’s not quite the problem that it used to be.  And you can find numerous rewrites of these stored procedures that do all sorts of spiffy things, probably also including bypassing this 128 character limit.

Next, update EVERY table’s statistics.  This is fine and pretty fast if your system is pretty small — if your system is pretty big, I hope you know what you’re doing before doing something like this!

sp_msforeachtable @command1="UPDATE STATISTICS ?"

Should you update statistics for every table every night, or multiple times every day?  The answer to that is left to the reader to research and decide what is appropriate to their installation(s).