Jon Schneider's Tech Blog

Monday, December 04, 2017

I just learned about the Advent of Code -- an event with a new short, fun programming puzzle published in each of the 24 days leading up to Christmas.

I noticed that primary event sponsor SmartyStreets has some cryptic text as their sponsor comment:

U2VuZGluZyBDaH Jpc3RtYXMgY2Fy ZHMgdG8gYmFkIG FkZHJlc3Nlcz8K

I won't spoil what it says here, but the only hint you should need to decode the text is that it is base64 encoded. (Also, automatic base64 decoder websites are readily available!)

Also, I'm publishing my C# Advent of Code 2017 solutions on GitHub. I'm generally aiming to optimize them for readability, rather than for minimum lines of code or fastest possible execution speed -- which is what I generally do as well when writing actual production code. That being said, I have been pretty blown away by the impressive brevity of the solutions of some of the event leaderboard's top members!

Saturday, December 02, 2017

Starting with my personal Game of the Year for 2017, and continuing on with the rest of the top 10, these were my favorite games that I played for the first time this year! Originally posted on the Gamers with Jobs forums.

1. The Legend of Zelda: Breath of the Wild (Switch)
- Bravely and brilliantly replaced the longstanding Zelda trope of "do a
few large dungeons, get the Master Sword, do several more large
dungeons" with a huge world that's really worth exploring. Exploring the
wilderness and happening upon concealed shrines managed to re-evoke the
feeling of discovery that I remember from playing the original NES
Zelda as a kid!

2. Super Mario Odyssey (Switch) - Full of great
surprises, beautiful art, fair challenges, and so many things to do. An
even better iteration on the gameplay, level design, and themes of past
Mario 3D titles (Mario 64, Galaxy, 3D Land) than I might have thought
possible.

3. SteamWorld Dig 2 (PC) - Rolled into this directly
after finishing SteamWorld Dig 1 for the first time, which turned out
to be an excellent way to approach it, with the NPC Dorothy from the
first game turning PC and searching for Rusty, the first game's hero
gone missing. Solid digging gameplay with lots of fun character
upgrades, both major and minor.

4. Blaster Master (2017) (Switch) - Blaster Master
for the NES was one of my personal nostalgic favorites. A great update
while still retaining the best parts of the original. Played through it
twice, getting the fun surprise at the end of the second playthrough for
100%-ing the game up through the boss.

5. Mario + Rabbids Kingdom Battle (Switch) - Great
tactical strategy game, minimizing the impact of luck on the gameplay,
and building on the foundation laid by X-Com by introducing lots of neat
new gameplay mechanics.

6. PPKP (iOS) - A simple yet interesting 1-on-1
brawler-type fighting game perfectly tailored to being played on a
mobile phone. Manages to make a deep and rewarding combat and upgrade
system out of only two in-game "buttons". App Store link.

7. Mario Kart 8 Deluxe (Switch) - My favorite racing
game in a long time. I actually enjoy watching others play this almost
as much as I enjoy playing myself; while just observing, I notice all of
the beautiful graphics happening in the environment around the race
track, whereas when I'm actually playing I tend to tunnel vision in on
the race itself.

8. Metroid: Samus Returns (3DS) - A very cool stride
forward in 2D Metroid games with the counter-attack and 360-degree free
aiming systems, even though I think I may still prefer the elegant
simplicity of the original Super Metriod (SNES) gameplay. Interesting
to compare and contrast this Metroid 2 (Game Boy) remake with last
year's indie take on the same, AM2R.

10. Fire Emblem Heroes (iOS) - A nicely simplified
pocket implementation of the standard Fire Emblem gameplay. I enjoyed
it when it came out, although I did lose interest fairly soon after
reaching the level cap of 40, despite the new content and events
periodically being released.

Friday, September 15, 2017

What it is: A device that filters adult and harmful websites for all devices on your home wi-fi network. Useful for households with kids.

It’s actually pretty small.

Setup: It was as easy as plugging the Circle into wall power and into my network router, then installing the Circle’s iOS app on my phone and going through a few straightforward prompts.

What it does: If your kids try to access the Internet outside of a range of hours you set, or attempt to visit a site that falls outside a set of “safe” site categories that you designate, they’ll get a “You’ve been filtered!” site on their device instead of the site they were trying to visit. (They might instead get a general “connection error” message if they were using an app, such as Netflix, instead of a web browser.) You can also manually “pause” the Internet for your kids at any time!

For older kids and parents: You can designate each device in your house as belonging to a particular person, and then designate each person as belonging to a particular age group, e.g. “Young kids,” “teens,” or “adults.” Each group can be assigned their own time restrictions and permitted site categories. You can also tell Circle to just ignore particular devices (such as printers).

Management: All settings are configured through the Circle’s smartphone app. I’ve found it to be easy-to-use.

Disclaimer: Not my family!

Key benefit: Circle works on all devices that use your home wi-fi to connect to the Internet. It’s therefore better than, say, Internet-filtering software that runs on your computer, but necessarily leaves your other devices – game consoles, tablets, phones, smart TVs, and anything else – unfiltered.

Corresponding key drawback: Circle works only on devices that use your home wi-fi to connect to the Internet. So if your kids have phones with active service plans, they can bypass Circle just by turning off their wi-fi. They could also bring their device to a friend’s house, or connect to a neighbor’s open wi-fi network, if there is one.

Recommended? Recommended! Easy-to-use, effective, and having no ongoing subscription fee, Circle has proven to be a great solution over the six months or so that I’ve been using it at home.

Friday, August 04, 2017

Symptoms

When using a Pokken Tournament controller (which is a 16-bit-style controller with a D-pad only, no analog sticks) with the game Cosmic Star Heroine in Steam on PC, the game recognizes the up/down D-pad inputs as left/right. For example, pressing Up on the controller moves the character in the game to the left.) The game doesn’t recognize the left/right D-pad inputs at all.

(From research I’ve done, I suspect that this issue may also affect other games built using the Unity engine, and/or the D-pad inputs on other controllers.)

Workaround / Fix

Part 1: Enable Generic Gamepad Configuration Support in Steam

Open Steam.

In the Steam main window, in the View menu, select Settings.

In the Settings window, select Controller (in the left pane), then click General Controller Settings.

In the “Big Picture”-style Controller Settings window, check Generic Gamepad Configuration Support, then click Back. (You may need to maximize the Controller Settings window to see the Back button near the bottom of that page. Or, just close the window.)

Part 2: Set up controller configuration for Cosmic Star Heroine

Part 2A: Open the Steam Controller Configuration window for Cosmic Star Heroine.

In Steam, select the Library pane.

In your list of games, select Cosmic Star Heroine.

Under “Links” on the right side of the window, click Controller Configuration.

Part 2B: Disable the Left Analog Stick input.

In the Steam Controller Configuration window, click the box in the lower-left that points to the left analog stick on the picture of the controller.

In the Style of Input dropdown, select None.

Click Back.

Part 2C: Configure D-pad input to be treated as Left Analog Stick input.

In the Steam Controller Configuration window, click the box in the lower-left-center that points to the D-pad on the picture of the controller.

In the Style of Input dropdown, select “Joystick Move”.

In the Output dropdown, select “Left Joystick”.

Click Back.

Part 2D: Save and apply the changes.

Click the Export Config button.

Click the “Save new personal binding” button.

Give your configuration a name – I used “POKKEN” – and click Save.

Close the Steam Controller Configuration window.

With this workaround, I’m finally able to play the 16-bit-era-like game Cosmic Star Heroine on my 16-bit-era-like, analog-stick-less Pokken Tournament gamepad controller!

Other Things I Tried, Unsuccessfully

I tried using the excellent JoyToKey to remap my controller’s D-pad presses to keyboard keys. Unfortunately, that didn’t work, as Cosmic Star Heroine then acted on both the remapped input and the original (and incorrect) D-pad input, such that pressing “Up” on the controller with my JoyToKey mappings active would result in my character moving diagonally up and left in the game. (And as of the time of this post, Cosmic Star Heroine doesn’t have any option to just disable or ignore controller input altogether, or to remap controllers from in the game itself.)

I also couldn’t find any config files or registry keys to reconfigure or disable controller input.

I’ve taken away from that trip an appreciation of the historical efforts by individuals like John Muir and Theodore Roosevelt to legally establish what has since been called “America’s best idea”: The preservation of these uniquely beautiful areas by inventing their designation as National Parks. This protects them for the enjoyment of the public from ownership by corporations which might charge high prices for admission, or build tourist attractions right in among the natural wonders.

During the trip, a parallel with the “ownerless” national parks occurred to me: The World Wide Web. In similar fashion to how anyone can visit and enjoy the national parks, the Web is also effectively a platform with no corporate owner, in that anyone can set up a new page or site without needing permission from a corporation.

One of the key reasons that the Web works so well is that Internet Service Providers – the companies like Comcast and Verizon that we pay for Internet connections – aren’t currently permitted (at least in the U.S.) to restrict access to certain websites. For example, Comcast isn’t allowed to make a deal with Google to allow you to connect to the Google+ site for free, but charge you extra to allow you to connect to Facebook. This principle is called net neutrality.

Net neutrality is really important for the emergence of innovative new online services, too. A new “like Netflix, but better!” startup business might very well have trouble even getting off the ground if Netflix itself could strike a deal with ISPs to greatly slow the Internet speed of new streaming video sites.

This all is relevant right now because the FCC is planning to significantly roll back net neutrality rules. This would open up actions like the above examples to ISP companies, which, understandably, will simply make whatever deals will generate the most profit.

Among ordinary citizens, one might expect that net neutrality should enjoy broad popular support across the political spectrum, both left and right -- and it does! After all, perhaps aside from ISP company executives, who wouldn’t want fast and unrestricted access to any website that they might choose to visit?

Next week on July 12, 2017, a great many websites are participating in an Internet-wide Day of Action to save net neutrality. You can learn more and join the action here: https://www.battleforthenet.com/july12

I’m hoping that the July 12 day of action helps our congress, as well as the general public, an understanding that our unique, shared “natural resource” of the Internet deserves the same sort of legally-guaranteed protection of open access for all that our wonderful public national parks enjoy.