Saturday, February 22, 2020

[Tech] ESP32 Programming from ARM64 Windows

(Disclosure: I am an employee of Microsoft and work on Windows 10 on ARM, but the content here is from me on my own time. Views expressed are not those of my employer, and there's no guarantee of...well, pretty much anything, but I try.)

I have had some experience using Windows 10 on ARM (ARM64) devices and, given their extreme battery life and sufficiently good performance characteristics, I thought one would be a good foundation for an IoT development machine. (Think about not needing an outlet at a hackathon...)

To test this, I recently decided to finish a project I have most of the parts for: a WiFi-controlled pair of LED strips. A long time ago someone got me a modest ESP32 break-out board for Christmas and I've been itching to use it, and I've had the LED strips since I came up with the idea.

I may yet author a Hackaday.io project describing the build, but for this article I'll be focusing on the development environment. (If I do, I will add the link here and it will be listed here.)

Sunday, February 2, 2020

The Werewolf Moment [not fiction]

Over the course of time, I have had the opportunity to play what I call 'hidden identity' games. The entire group openly has one objective while a subgroup is secretly given an opposing objective and knows about each other, but the subgroup loses if it is discovered. A low-prep version called either Mafia or Werewolf is popular; in it, the group is secretly divided into 'villagers'/'citizens' and 'werewolves'/'mafia'. Each round the whole group decides one person to 'kill', revealing their identity but excluding them from further votes and discussion, then the werewolves decide on one person to 'kill'. The villagers are trying to find all the werewolves while the werewolves are trying to kill all the villagers. Sometimes an oracular character, say a detective, is added to rebalance the game.

There are about as many different sets of rules as there are fans of the game. :)

Board-ish games with this concept include One Night Werewolf, Werewords, Avalon, Tortuga, and Secret Hitler.

While playing Secret Hitler over the course of a few weeks, I noticed an interesting emotional moment in the game. As the subversive subgroup's subterfuge grows in complexities and stakes, the game often reaches an 'ah-ha!' moment in which the subgroup subtly (or not-so-subtly) outs itself to the rest of the table. Depending on the trust relationships that have been built up, parts of the overall group may be convinced one way or another; typically, though, it becomes clear who is closing ranks around whom and who is pushing what agenda.

The game tends to end pretty rapidly after such a moment, for better or for worse.

What's interesting to me is that feeling of things clicking together, of certainty, of finally knowing whom to trust. The other side of this, of course, is if that moment comes too late: sometimes it comes when the subgroup has everything aligned according to the game mechanics to reach its goals, so it is able in that moment to do something so revealing because staying hidden instantly no longer matters. Sometimes it's just a screw-up (my especiality). It can also spell doom; in one game of Secret Hitler, I had been outed as Fascist (capitalized to emphasize the reference to the game), but that meant that two other Fascists were so trusted that one was able to get elected to make the final decision that won the game. (That game was pretty epic; the subgroup discover process had failed in a spectacular fashion, and part of why I was outed was that the other Fascists didn't think I was one of them.)

Truth be told, I don't like playing as one of  'the bad guys'; that said, the last few games have been *quite* instructive about what the subgroups tactics need to look like. For example, in that last game only two of the six Fascist policies were enacted by Fascist subgroup members (IIRC). The rest were from luck, subversion, clever smokescreening, and manipulation. I managed to land a presidency with another Fascist who deliberately selected a Fascist policy, but I waited until he explained that I had given him no choice (I had) to claim that I had drawn three Fascist policies (statistically believable at that point in the deck) when in fact I had drawn two Liberal policies (drastically skewing the stats for the next two to three presidencies). There may have been a better move, since I was outed two presidencies later as obviously Fascist due to this, but it took a Liberal in the next presidency down as well and left the other Fascist sufficiently trusted to help steer the last vote to Fascist victory. (The look on the other Fascist's face confused me until I learned he thought I was Liberal.)

Draw what lessons you will from this. In any social situation, someone with covert subversive values will typically not outright confess them, but instead will act in secret and sew confusion and misdirection. Overt group affiliation is not helpful when attempting to identify such a person and is often useful for concealment. The OSS (CIA) called one such approach Simple Sabotage (see Section 11 on page 28-31).