Challenge to Assistant developers

Apple, Google, Microsoft and Amazon are all competing in the digital assistant field. There are pros and cons to each. Yesterday I received an Amazon Echo Dot (2nd gen) and I’ve been dabbling with it. So far Alexa reminds me more of the command-driven voice apps I tinkered with on the CBM Amiga decades ago than she does of Hal, but there is promising progress.

You’ve heard me rant about Cortana, I don’t have a Siri to tinker with and while I’ve had a highly positive experience with Google’s voice recog, for some reason I just haven’t used it in anger – I’ll try and remedy that in the next week or so.

But having the discrete device like this finally gave form to the notion that’s been percolating in the back of my head this last year or so of watching the assistants emerge: Makers.

One of these assistants needs to cross the bridge for home enthusiasts that empowers them to interact with their devices and applications in their terms.

I should be able to rustle up a few dozen lines of code and create my own little agent that transforms into a feature of my assistant exclusive to me and my ecosystem. Once I can do that, someone will build tools to make it easier and more accessible for idea people who aren’t interested in learning to program.

The problem is that to thrive, it’s going to have to be open. Hold your horses there, I’m not anti-proprietary, I’m just stating this simple fact. Apple and Siri aren’t contenders because the winner is going to be enabling a farmer who got his kids to write a raspberry-pi controller to check on his irrigation system from 10 miles away.

I don’t see Alexa being the winner, because her value in is selling Amazon Prime and Amazon Prime Music subscriptions. I suspect anything beyond that is gravy of the cold, lumpy kind from an Amazon perspective, but I’m happy to be proven wrong.

That leaves Google and Cortana.

Google sells advertising, but they have a history of open APIs. Bringing makers into the fold and enabling personalization has all kinds of value potential to Google, starting with bringing you into the android fold, disinsentivizing you from using Apple or Amazon, etc.

Microsoft is built on the success of open architecture and they’re making a large push to support IoT stuff, so this would be a return to roots for Microsoft that could really make WinIoT attractive, so long as they can manage to focus on the role of a driver and not try to restrict it to “must run on Windows”.

There is one more potential contender, though: Facebook.

Mark has shown an interest in exactly this kind of field with Jarvis. They’ve invested a lot in AI, they like releasing the stuff they build into the community. Their mission statement is “to make the world more open and connected”. This notion fits in with the ideas behind Facebook’s internet.org

It’s not that it’s currently impossible to do these things, but there’s a huge barrier to entry. For example, the simple task of turning on (or off) my PC? Voice control is largely going to be about inter-action; set the heating in another room, check on the house while you’re away, remind me of something in 30 minutes when I might be in a different room or building or vehicle…

(*Edit: You can actually build your own Alexa skills. But it’s definitely not entry-level stuff)

Xbox and Cortana

As far as I know, my Xbox One has been turned off for a couple of months – standby maybe. Not even using it for it’s entertainment features: the handful of apps we use run better on our smart tv. We’d tried putting the comcast cable output thru the xbox -> the tv, which was ok for live tv, but completely broke down when faced with us trying to use our “DVR service”. I forget the details, but plugging the cable box directly into the TV and putting the Xbox on HDMI 2 made my life easier.

Sure, you can say “Xbox on” (or “Hey cortana, turn on” as it is now), and it turns on the xbox and the tv, but it doesn’t switch input sources, which means using the remote. It’s a trivial thing but it’s one that makes you not bother saying “Hey cortana, turn on” or reaching for and fiddling with the xbox controller and the tv remote – when I can just pick up the tv remote and press one button to power it on and a second button to start netflix/amazon/youtubve/etc. The TV wins at this game.

I wanted to know if the xbox had a fix for the source-switching yet, so I powered it up. I tried a few Cortana commands and a search, and all I could find was a low-voted xbox live thread complaining that the xbox can’t switch sources.

The Xbox1 UI has definitely changed a lot since I was actively using it, I couldn’t find jack. I was trying to find a way to play music or videos from my local network, and it turns out the Xbox doesn’t come with a media player by default – you have to install one. After that, it did OK playing the videos although I’m pretty sure I wasn’t getting 4K.

But then I tried browsing the store. I tried to use Cortana to navigate but – well, forget that. “Do you want me to search for that?”, I reply “No” and cortana hears “now” and goes off and searches for “now”.

So I tried “Hey cortana, open cortana settings”, and up popped Khan Academy. Ugh!

Parts of the Cortana UI appear from time to time, but I couldn’t find a way to actually open the cortana ui with the notebook etc, so I couldn’t find any kind of way to do some voice training with Cortana. She’s *incredibly* unhelpful on the Xbox – but that’s maybe because I’m not using a headset.

During my attempts to browse the Apps and Games stores, I was continually frustrated by a lack of responsiveness in the UI. I eliminated it being the controller or it’s connection, it just seemed to be the UI being really sluggish.

Then there was the weird stuff like “Game Clips” for Elder Scrolls where it’s just a guy telling you to go into power settings and do something with power saving mode so your Xbox doesn’t explode. The video buffered every few seconds, despite the Xbox claiming it was getting 60Mb/s speeds. *Shrug*

So I went into Network Settings and noticed a “Bandwidth Statistics” option. I selected it.

Apparently: the Xbox can only take screenshots of games, you can’t take screenshots of things like … settings.

According to the Xbox, it has used 1.2GB of bandwidth in November and 13GB of bandwidth in October.

Which is odd, because, as I said, it’s been off for the last two months. Unlike other editions of Windows, there didn’t seem to be a way to get a break down of how the bandwidth was used…

I tried a few more experiments with Xborktana, until it started to annoy me, and decided that the UI is just as unhelpful and unpleasant.

Is there some secret plan by Microsoft to kill off the Xbox One by making its users give up?

 

(* I say “DVR service” in quotes because it doesn’t appear to be an actual DVR where you record a local copy of shows onto your device, they appear to be on-demand streamed such that you can’t watch the content if your cable or the service has problems, it can take several seconds to respond to remote inputs like pause or rewind, etc)

Digital assistants – plural.

Siri, Alexa, Google Home/Now, Cortana… One thing none of those links gave you was the ability to use the assistant from your web-browser. You have to install the right app for a specific ecosystem on specific hardware :(

A family household is likely to be a complicated device-ecosystem, a typical house is going to have TVs, computers or laptops, tablets or pads, phones, music and/or game systems.

I want you to try role-playing this scenario, ideally sitting down.

You have a household assistant, you can ask it who is at the door, get it to place phone/skype calls, change the tv channels, play music… You just have to say “Hey house” and the command you want.

Ok. It’s cold. Ask the house to “turn up the heat”.

“Hey house: turn up the heat”.

Great. The room starts to warm up.

Now, you can go back to reading on your tablet/laptop/phone this great news that your bank noticed it hasn’t been paying you interest and you’ll see a $1,000 deposit from them in your account tomorrow. There has to be a catch, or some small print, right? But it’s a bit dark and you can’t read the screen. There are no brightness controls on this thing, you have to ask the house to raise the brightness on the display.

Go ahead. Ask.

What do you want from Vanilla?

Travel facilities, quest simplification, loot retooling, mechanic changes, etc, have all been tuned to reduce friction of rapid leveling – but they have achieved a system that satisfies nobody.

Playing Old-WoW has been reduced to playing a slot machine that gives you a quarter back for every 4 spins of the wheels. It’s just there to distract you until the main show.

The reward-set for the starting quest hub in each leveling zone is un-special, and the pacing is such that you’re out-leveling the quests before you’ve finished the first gear set. At this stage, you need to fight yellow/orange mobs to get off more than 2-3 attacks, and you know that if you just went to the next zone you’d be having more interesting fights with better gear.

Crafting items during this phase are essentially pointless since if you try to gather the materials to make something useful, you’ll either get a better random-drop while you’re or out-level the item from bonus exp/etc while you’re working on it.

Despite all this, with 100 levels to reach end-game content, leveling is still. too. slow.

So now the majority of WoW’s legacy content is unpleasant either way:

. Nothing lives long enough for you to develop a “rotation” or learn the deep mechanics of your class,
. Progress rate eliminates value in rewards, drops and crafted items,
. Progress rate eliminates value in interacting with the lore you are traversing,
. Travel access decouples you from rich environs lore is set in,
. Zones have been reduced to quest hub sequences making gameplay dependent on travel access – WoW today feels more like SWGs early mission system than the rich questing experience of the release game,
– Compare with Suramar!
. Exploration is made pointless,
. Progress rate makes zone-completion counter-productive,
. Many zones/quest lines handle co-operation poorly,
. Progress gating makes it counter-productive to group up since you are still limited to content tagged level-appropriate,
– Misses out on opportunity for guilds to put together “hard mode” levelling groups that could race through content above their level for faster exp turn around and more challenge,
. Crafting is largely pointless: the time (and bonus exp) it takes to gather your materials often sees you out-level any item that would be useful,
. Lack of useful crafting/drops makes interaction at these levels (e.g auction house, crafting, etc) largely pointless

I posit that we need to use different levers and switches to allow rapid character progression and try to restore leveling to a more vanilla pace and character:
. Make it easier to get heirloom gear,
. Add bigger exp bonuses to heirloom gear,
. Target dungeons and raids for power-leveling,
. Dial-back the progress rate of world questing, leverage the “Chapter’s” concept seen in Legion and perhaps a “Lore” counter two; progress bars are awesome,
. Dial-back the stats across loot drops in world questing,
– Re-add some challenge to leveling,
– Re-add some value to crafted items,
– Re-add some value to rewards,
– Re-add some scope for stat tinkering during leveling,
. Tune up the difficulty of world questing mob encounters by 5-50% for longer fights and more opportunity to experiment with your skills, stats, etc,
. Re-factor some of the world-questing story-lines so that you come back to places more often:
– Currently you do 3-4 quests for “Jim” in “A town” who sends you for 3-4 quests with “Sue” in “B town” who … next zone,
– Originally you’d go back to “A town” to see if new quests had opened up; this largely went away to speed up progression rate,
– Gives you more reason to be involved in the area and designers chance to give an npc richness that might endure longer,

The goal, then, is to allow recapturing some of the richness of playing and developing *a character*. If you want to kick-back and roam the hills, slowly gathering bear pelts, take off your heirloom gear and have at it. But if you just want to be a healer for your raiding group and need to get it done, throw on your heirloom gear, run a bunch of dungeons or maybe a couple of raid instances, and you’ll be set.

I think it might also be a good idea to consider allowing a *free* choice of starting a toon at Wrath or BC.

Pi for kids?

Last year I gave my nephews an arduino starter kit as a present. They’re really bright, so it just made sense to them. Faster than I could demonstrate that wiring up the button and the lights let them create a control they’d already figured it out and wanted to know what else it could do.
 
I realize now it was handing someone of my generation a battery, some cash, and saying “you can power anything with this”. It fuels the path of creativity without nurturing it.
 
This year I was going to give them a raspberry-pi starter kit but it’ll just wind up being a way to run games if there’s not something to fuel and guide their imagination a little.
 
“It can do anything electronic”. “Like what?” “Uh, like, uhm, drive a motor” “Oh, to do what?” “Look, this is why I’m a programmer, just imaginate some stuff, squirt!”
 
And they’re too young for me to point them at “forums”. So:
 
I’m hoping some of you might be able to recommend maybe some kits, books, perhaps online courses or guides for a variety of beginner, entry/kid-level projects that include the programming but perhaps focus on the more physical aspect of doing things. They’re *not* gonna want a series of tutorials on how to make different patterns of blinking lights, they’re going to want something that demonstrates practical potentials and – ideally – gives them reason to go to the store with their parents and see the aisle of potential components they might tap into to fire off their little imaginations.
 
Ideas?

Ghost of Clippy-past

Cortana has some great functionality crippled by an obsolete, out-of-date set of concerns generated, perhaps, by Windows 8. Cortana wouldn’t be terribly out of place in 2010, but today?
clippy
A few days ago, Windows bamboozled me. A little pop-up appeared (grr, and stole focus): “If you tell me which teams you like – or don’t – I can tell you how they are doing”. My third thought(*1) was “who is this message from?!”
I’m just guessing it’s from Cortana, if so it seems like the Cortana team is for some reason resurrecting the worst of Clippy… (*2)
askmeany
Thanks to daily interaction with Google, Amazon, Facebook, Siri, etc, a modern user will interpret “Ask me anything” on a device differently than they would have in 2010.
disablesearchIf your plumber has to google every step of a basic repair job for you, you’re going to try another plumber next time. You don’t hire an accountant on the basis that they “know the URL for TurboTax”.
When someone says “ask me anything”, the response “you can look that up on the web” quickly becomes a contradiction of the original statement.
Eventually, it feels like they lied.
That’s the current presentation of Cortana.

Virtualized desktops vs multi-boot

I’m trying to figure out a good way to compartmentalize/containerize my various Windows desktop usage modes: Development, gaming and general use. This seems like a good way to combat a number of things such as the surface-area of each model (exposure to risk) and things like registry bloat etc.

With fast boot times, multi-boot isn’t a terrible idea. But I kind of have this notion in my head of having a graphical Dom 0 (Win10, Ubuntu, something) where I can see my guests as windows and use them thusly, paste, drag’n’drop between them, etc, but have the option to quickly transition them to full screen at any time.

I found (thanks to Bill Hulley) that KVM can do some of this (https://bufferoverflow.io/gpu-passthrough/) but it sounds brittle/fragile to me, and I’m increasingly wary of this level of hackery for supporting such aggressively-evolving systems as GPUs, stuff gets abandoned, APIs and ABIs change, a maintainer drops out…

Having two user accounts might be an option, but they share the same HKLM and things like MSVC aren’t great at being discrete.

Windows Containers sound interesting, but I don’t know that there’s a way for the app inside a container to expose a GUI on the host, all the instructions I’ve found so far are for server-based containers. So for now, I’m just gonna continue putting all my eggs into the one basket :)

Would the interviewer be right?

Please avoid stating which problem these are solutions for.

During a recent discussion the following code was suggested

int desc(const Node* node, int d)
{
  int l = d, r = d;
  if (node->l) l = desc(node->l, d + 1);
  if (node->r) r = desc(node->r, d + 1);  // edit: thanks, Nico
  return max(l, r);
}
int d2(const Node* root)
{
  return root ? desc(root, 1) : 0;
}

One of the folks in the discussion shook his head and said: “If this was an interviewer, they would want you to do it in one function, though”. Then he presented this:

int d1(const Node* root)
{
  if (root == nullptr) return 0;
  return max(d1(root->l) + 1, d1(root->r) + 1);
}

Then he made the assertion “this is what an interviewer would be looking for”.

Drone registration

Have you registered your drone? It turns out you actually register yourself as a drone owner – rather than your individual drones. You get a single, 10-digit, UAS Certificate Number that you can put on all your drones.

It costs a hefty $5 unless you register before the 20th, in which case you save $5! o_O

Happy new year

To the random individual still tuned in, a happy new year to you.

I’m still at Facebook, no evidence of it being the evil empire folks want to believe it is. Rather, a collection of folks who worry about the same things you do, who care about privacy not least because their mom is on Facebook too.

I’ve been playing Crypt of the Necrodancer, Faster than Light (which I didn’t play when it was hot and new) and a lot of Kerbal Space Program.

I’m starting to feel I’m done with KSP now, though; I can launch to orbit, even recover small payloads from orbit with a recovery ship, I’ve built a (crappy) station.

I squeezed some extra longevity out of the game with mods including MechJeb (an autopilot, so I could focus on building rather than flying, because I just find the flying part tedious key-holding). But I haven’t flown a rover, built a base on another planet, manned mission to Duna etc.

It may be because I don’t feel “free” to experiment with stuff before I launch it into space. I’ve built rovers and driven around KSC with them but I’ve no clue how I would get it into space and drop it anywhere useful. (It doesn’t help that stock fairings are broken in 1.0.5 and turn any rocket into Tippy McSplodey).

Development-wise, nothing exciting to report at the moment. I’m building up a hankering to get my teeth into C++14 and ++17 properly, but I’m lacking a good project to work on and a good description of what the changes are to actually rustle up a project.

Talking with the new team at CRS/Playnet, I’m filled with a lot of confidence. I think the clean break is going to prove good for the guys, they’re clearing away the dead bodies that the old team — self included — were stumbling around. I’m really looking forward to them having a successful 1.35 launch. We left them a lot of landmines, so … be gentle on them.