Issues with the Microsoft Sculpt on USB-C MacBook Pros

Feel free to skip this if you do not want to hear about a very specific hardware issue I am having. I’m writing this so I have a reference document to point back to and share!


Update February 3rd: calling this fixed! I bought an individual Anker USB-C to USB-A dongle just to try one last thing before fully giving up and it’s been rock solid for a week straight. Here’s how it shows up in the System Report:

I have no idea why this connection would work better than using the USB-A port on Apple’s official Multiport adapter, but that’s just how bad USB-C is as a “one port to rule them all” solution. Leaving this page up as a reference for anyone else who has this issue!

Update Dec. 10: Thought the powered USB hub had done the trick, but had a drop this morning. It did last a lot longer between drops than before. Back to the drawing board.

UPDATE Dec. 9: cautiously optimistic that I’ve found a fix! Chris Dzombak mentioned trying a powered USB hub. I found an Anker hub with a wall wart power supply in the closet and have been using the keyboard/mouse for 24 hours without any drops.

The Problem

A few years back after having some bad back pain I picked up a Microsoft Sculpt keyboard and mouse. It’s been such a lifesaver in terms of limiting pain. The only downside is that it uses a proprietary USB-A receiver that is linked to the keyboard and mouse it came with. Lose the receiver and you have bricked your keyboard and mouse. To use it on a USB-C equipped mac it needs to go through hub or a dongle to connect to the computer.

Normally this isn’t an issue, however, with this setup about once or twice a day the mouse and keyboard completely stops working. To fix it I need to unplug whatever hub the receiver is on and move it to another USB-C port. It’ll then merrily work again fora few hours until it happens again.


  • In the “System Report” the receiver shows up as connected, but it just no longer accepts inputs.
  • Unplugging the receiver from the hub and plugging it back in does nothing. The whole setup needs to move to another port.
  • Any other USB 2.0 devices over USB-A that are plugged into that port via the hub also seem to freeze. My webcam, for example.
  • I have a backup setup and the same behavior happens with that one too. I’ve tried the official Apple multport adapter as well as a 3rd party option and it happens on both of them.
  • This all works on my iMac using its USB-A ports

But, the weirdest thing about this is that I leave the mouse turned off the keyboard will happily work fine with no issues.

I’ve contemplated just buying a good mouse and ditching the included mouse, but I would much rather just use this.

How can one even diagnose what’s going on?

I have no idea what to do from here. I’m open to trying literally anything if you think it might help.

Is there something I can check in to see what is happening with USB devices? Is there an app out there that can help this?

Has anyone else run into this before? If so, please email me or reach out in another way!

mA Draw?

Yesterday I began to think that maybe it’s being caused by some sort of power draw spike? Like the mouse is requesting something from the receiver and it’s spiking the mA request through the hub and MacOS just cuts it off?

Would it be worth using a powered USB-C hub? Does that exist?

What about alternative setups?

I’ve looked for a similar style keyboard/mouse to replace this with, but no one seems to make one that is tenkeyless, which for my style of upper back pain is crucial. If someone knows of one though, please let me know!

Sounds Good To Me! – A Halloween One Shot.

On Halloween I ran a game in which the players played as characters from a not-real-but-plausible 90s sitcom called Sounds Good To Me!. The show was all about the Good family who lived in the Detroit area. The game would be them playing the special Halloween episode from Season 2.

As a way to gauge interest I put together a title card for the show:

Needless to say, a number of people quickly expressed interest in playing out their TGIF dreams. I ended up running two sessions of this: one socially distanced around a campfire on a chilly fall evening, and another on Zoom.

The game part

It was important to me that the rules were as light as possible. I ended up adapting the one-page RPG, Lasers and Feelings, and calling it, Wisdom and Wisecracks. You can see the rules for Wisdom and Wisecracks on google docs. There’s a section for Character Creation and then a section of the Mechanics. It took some tweaking, but I was happy to keep it on one page with a second page to act as a rudimentary character sheet.

Character Creation

Character creation was the heart of this game. The idea was to lean into the genre tropes of 90s sitcoms (and, goodness, there are genre tropes in that age of television) and make a character that would be at home in any of those shows.

Each player built their character at the start of the game by deciding on their:

  • Name – they were all part of the Good family OR closely connected to the Good Family .
  • Archetype – are you a nerd, a jock, bad boy, etc. What kind of ridiculous stereotype are you going to play?
  • Family Role – caretaker/parent, comic relief, responsible child, etc. how do you fit into the family?
  • Flaw – what’s the thing that you’re always doing wrong? Simmering rage, troublemaker, always putting your foot in your mouth?
  • Catchphrase – what’s your catchphrase!

And lastly, because of Halloween, they had to pick a costume!

Throughout each session we asked additional questions about the Good family and learned more about everyone’s backstories. For me my favorite part of the game was seeing these characters come alive. It was interesting to see that both groups ended up with a crotchety grandpa figure as well as a kooky aunt/neighborly figure. The families were distinct yet still familiar.


One shots need to move quickly since you only have one night. I wanted the focus of the evening to mostly be on inventing the Good family; however, it was still important to have some game mechanics that could guide success or failure in their plans. After all, failure in storytelling games is almost always more interesting than success.

The core idea in Lasers and Feelings-like games is that when faced with a questionable action/decision in the game you roll a d6 (or more than 1d6 if things are going well for you) against a target number that you’ve chosen at the beginning of the game. If you’re rolling for something that is Wisecracks (ie flirting, trying to joke your way past a situation, or any other rash decision) you want to roll OVER your number. If you’re using Wisdom (ie deduction, asking an NPC for help, or basically anything rational) you want to roll UNDER your number.

  • Failure on all of your dice results in a consequence/complication
  • 1 success means you do it, but there’s a minor consequence/complication.
  • 2 successes you do it.
  • 3 successes you do it very well and something extra happens.

If you manage to roll your number exactly it’s Wise Wisecracks! You do it, get something extra, say your one liner and get to ask the GM a question.

And that’s about it for rules! There’s no real turn order or hit points or anything like that. It’s up to the GM to make sure that everyone is given the chance to tell their side of the story, but it’s very free flowing from there. This seems like it would be total chaos. It is somewhat, but it also works. If you’re used to play highly structured games like D&D I’d recommend you give a “rules light” game a try sometime.

In both games I found it to be surprisingly difficult for myself and the players to remember if they were trying to roll above or below their number. It’s an elegant piece of game design that also breaks people’s brains. Every roll the players had to ask if they were going above or below and nearly every roll I had to look it up myself. The next time I use this system I’m just going to give them two numbers that they are always trying to roll over.

We also didn’t do the “ask a question” part of Wise Wisecracks. It didn’t seem as necessary for the style of story we were telling.

Letter from the assistant producer

Before the game I sent out a letter from an assistant producer on the show along with a Doodle link for scheduling the game. I’d like to think that this helped set the tone of the game. Even if that was all in my head it was fun to write:

First: good job on the start of the season!

Whatever you’re doing is working, our ratings are up–way up!–and the network is finally willing to treat this little show of ours right. About time.

As part of the marketing efforts they’ve approved the budget for a few “fun” episodes. The eggheads in the writer’s room got wind of that and within minutes had concocted a ridiculous scheme for an on-location Halloween episode. I haven’t read the script, but they told me there’s a corn maze or some hokey midwestern nonsense like that. Anyway, it’ll be “spooky” and “really get the watercooler chatter going”. As long as it gets people watching and the farm doesn’t cost an arm and a leg to rent the place I do not care.

Shoot is planned to start around sundown. Have your drivers get you there by 6:30. We should be wrapped by 9:30 assuming you remember your lines.

Please remember your lines, corn freaks me out.

Chris Salzman
Assistant Producer, Sounds Good To Me!

Running the game

Both groups were a hoot! The first group was comprised of tabletop RPG veterans. The second group was mostly people new to gaming in this style. I went into some detail about the differences between these groups on my podcast. Check out Roll For Topic Episode 49 if you want to hear some free flowing thoughts about it.

The core idea of the game was that the Good family was going to a corn maze for the evening. I had some notes about the outline of the episode, but mostly we were all building the story together based on player actions and occasional dice rolls. Mostly I wanted to hit all the good points in a 90s sitcom: some minor peril, lessons learned about themselves, and wrapping up by dancing. For the real true fans you can read my unedited notes.

Both groups started by driving up to the parking lot of the maze, had at least one character immediately wander off to somewhere other than the line to get in, and took a circuitous route to get into the maze. In one of the groups the character who wandered off never actually made it into the maze at all! They ended up having a little B plot in an entirely different location that kept me on my toes.

Once they were in the maze all sorts of spoopy events happened including splitting the party even further and they reacted admirably. After navigating the maze they ended up at a big party in a barn with the Monster Mash playing.


Multiple players dressed up! One player sang a theme song! There was a lot of laughter!

A campfire on a cold night and Zoom are not ideal gaming conditions. Fighting either the wind or technology was distracting, but it was good to play regardless! I liked the system well enough to try it again in a non-Halloween context, although I don’t think I like the genre enough to, say, play an entire season. For “special event” settings like a holiday it was fun!

Videochatting on Thanksgiving: An acceptable teleconferencing solution for the whole family

In late October I started thinking about how in the world we were going to videochat with family on Thanksgiving in a way that didn’t involve holding a phone at arm’s length while we tried to keep a baby from grabbing it. I got some advice to use a computer for the video portion and an external speakerphone–like you might see in a conference room–for the audio.

For us what ended up working was:

  • iMac at one end of the table. This is admittedly overkill, but nice to have an all-in-one solution for the “computer” part of this. You could easily use a laptop, or a laptop connected to a tv.
  • External webcam (Logitech c920). What you’re mostly after here is a wider field of view than your computer’s camera. The wider field of view meant we all didn’t have to be directly on top of each other to be in frame.
  • External speakerphone puck (Jabra 410). I think this worked better than the iMac, but didn’t do any comparisons. Regardless, it was nice to have something that could be more centralized in the room rather than tied to the computer. I’m unlikely to use this thing more than a few times, but for the few times we use it it will be massively helpful.

Of course I didn’t grab a photo of this setup, but it ended up working very well! Bounced between Skype and FaceTime depending on what people had. Next time we do this I’m going to try use the TV as our display and put the webcam on top of the TV. It’s not the same as being in the same room, but needs must.

Small Box For Beach Treasures

On Friday we went to the beach in Port Huron, MI and my daughter collected rocks and shells. The rest of the weekend I worked on making a small box for her to keep those treasures in. Final dimensions came out to about 3.25”x2.25”x2”. Materials were white oak and Titebond III. Finished with three-ish coats of shellac buffed to a satin finish with steel wool.

Pictures taken in every woodworking project’s natural environment: outside in the grass on top of a scrap of figured walnut.

A small box is much harder than a big box.

The boards for this were resawn on the band saw from a single piece of scrap wood and then planed down to roughly 1/4″ on a thickness planer. I wanted crisp mitered corners, but the small pieces kept tearing out on the table saw and, frankly, I was closer to the blade than I wanted to be for those cuts, so I settled for simple butt joints. Now that it’s all together I quite like the look of the exposed end grain all around it.

You make boxes like this by gluing it all up as a solid rectangular cuboid (aka “a box”) and then cut around four edges to pop the lid off. Cutting the lid off is moderately harrowing; however, the upshot is you get continuous grain from the base to the lid and that makes woodworkers happy.

After the lid was free there was another hour or two pairing down high spots and squaring everything up with a sharp chisel. Then another hour or two hand sanding everything smooth from 100-220.

The little jagged tabs that align the lid and let it stay snugly in place were made by snapping some offcuts off with a pair of pliers and then artfully sanding them down. It’s a fun look and gives the design some teeth. It’s very satisfying to pop the lid on and off. And you can fit the box in the upturned lid as well. An unintended affordance, but delightful!

A Dad Goal of mine is that my kids grow up with little handmade curiosities like this littered about the house. My daughter smiled when I gave it to her and said “I’m going to put it in my room!”

A pile of knives

Our previous methodology of storing our knives was a pile in one of the drawers. In a nod to safety we had a scrap piece of wood in there as a divider to keep them separate from the non-pointy kitchen utensils.
It wasn’t the worst system. It wasn’t the best either. So I made a better one:

This took a few hours a few weeks ago and has made our knives a lot safer and easier to use. Grabbing one now doesn’t feel quite as fraught! I should have made it years ago.

Design Notes

  • The slots for the blades were made with kerf cuts on the table saw. I tried a few different manual saws because I aspire to being one of those philosophical back-to-basics handtool woodworkers. Turned out that the table saw blade was already the right width so I was able to save myself a lot of trouble.
  • Our drawer space is at a premium so having two rows of knives on the right lets save some space, while still making everything accessible.
  • This is highly customized to our random collection of knives. I designed it mostly by measuring the longest knives in each category (short ones in the front on the right, medium in the back on the right, long in their own compartment on the left) and then just going for it. Winging it is fun, but it did result in a lot of back and forth of test fitting.
  • The rows are slightly offset so that handles aren’t covering blades. I mean, of course they are, however, this wasn’t clear to me until I started to lay it out.
  • It’s a friction fit. We can easily remove it if we decide we want something else later on.
  • Made out of scrap pine and sealed with paste wax. I lightly rounded over all the edges with 120 grit sandpaper.

Front Garden

We had A2 Garden Guides design and landscape our front yard and it looks SO much better! Super happy with it:

And here’s the map they drew for us of what is what. This is really useful because our kiddo keeps asking us the names of things:



Varieties ‘Hino Crimson’, ‘Boursault’, ‘Gaiety’.


PJM Elite’


Mt St. Helen’


Hydrangea are shrubs grown for the large globes of flowers in the summer that dry and give winter interest. Varieties ‘Annabelle’ and variety unknown.


Variety ‘Jeanne”


We rounded out your hosta collection with a few more.


Shade plant with striking foliage.


Shade plant with feathery leaves and flowers.

Bleeding Heart

Late spring bloomer of pink and white heart-shaped flowers in a line on tendrils.


Variety ‘Globe.’ Evergreen with soft flat fronds.


Viburnum mariesii is a shrub with white puffs of flowers.


Amalanchier (common name Serviceberry) is a native shrub that produces white flowers in spring and edible red/black berries in June.


Oakleaf Hydrangea ‘Peewee’ are shrubs grown for the large globes of flowers in the summer that dry and give winter interest.


Low growing evergreen provides winter interest.

Solomon Seal

Shade plant with white bell flowers.


Carex pensylvanica is native to Michigan.

Strawberry flat

These are strawberries cultivated for eating, so make sure they stay well mulched to prevent rotten fruit. They will spread over the whole area.

Mulch (Hardwood)

Hardwood mulch is medium to dark brown, and will fade to a lighter brown after about a year. Thick applications will last 2 years.

Holly-tone (50lb)

Organic, natural fertilizer for acid-loving plants.

Plant-tone (50lb)

Organic, natural fertilizer to “ensure superior plant growth.”


Ribes americana is a native shrub with edible black berries. Updater

Years ago when my daughter was born I put together a website/app thingy to help us keep people updated on the progress of her coming into the world. The idea was that it was a single page site that would display a single message at any one time. If you were curious how it was going, you could check the site and not bother us.

I wrote a quick iOS app to help me update it from the hospital. Lots of people liked it and followed along for the entire 40 hours or so it took for my daughter to enter the world. It cut way down on the number of “what’s happening?!” texts we got, although we still got a bunch wondering if the site was broken since it was taking so long.

I consider this an example of an app that is a, in Robin Sloan’s words, a “home-cooked meal”. An app that doesn’t need to be spun off into a SaaS or be open-sourced, or grow an audience. It’s just for the people it is for.

We knew for our son we wanted to do this again. And, because nothing can be easy, it turned out I needed to rewrite the app. Who knew that Swift would change in the intervening years?!


iOS App

After being frustrated that the code I’d hacked together 5 years ago didn’t magically work with no bugs I ended up starting over from scratch using SwiftUI. Swift is better than it was 5 years ago, but still a frustrating language to jump into to “get something done real quick”. The documentation is bad.

Anyway, here’s the code for the view:

@State private var message: String = ""

var body: some View {
    VStack {
        Form {
            Text(" Updater")
            TextField("Enter Update", text: $message)
                .frame(height: 100.0)
            Button(action: {
                self.POSTfunction(message: self.message)
            }) {

And that ends up looking like this in the app:

Type in the box, tap “submit” and it fires off a POST request to a file on the server. The passcode is a hardcoded string that I have replaced below so you don’t “hack” me. The server checks for it over on its end.

Here’s the main function for the post request:

func POSTfunction(message: String) { 
        //Create dict and then convert to JSON
        var dict = Dictionary<String, String>()
        dict["passcode"] = "lolno"
        dict["message"] = message
        let data = try! dict, options: []) 
        HTTPPostJSON(url: "", data: data) { (err, result) in
            if(err != nil) {
            print(result ?? "")

The app is then sideloaded onto the devices I physically plug into my computer. This does not scale, but it does not need to.


Aside from general NGINX and SSL setup, over on the server I have a PHP file with one job to process the POST request:

	# Get JSON as a string
	$json_str = file_get_contents('php://input');

	# Get as an object
	$json_obj = json_decode($json_str);

	if($json_obj->passcode == "lolno") {
		$fn = "SECRETTEXTFILE.txt"; 
		$file = fopen($fn, "w+"); 
		$size = filesize($fn); 

		fwrite($file, $json_obj->message); 


PHP’s motto should be: “your server is already running it so why not abuse it?”

Shouldn’t this be saving to a database instead of a txt file? Yes. Absolutely.

Web Site

The site is a bespoke templating library that does server side rendering and delivers an HTML file to your browser that displays the text in the txt file in the middle of your screen:

		<title>Is the Salz Baby Here Yet?</title>
			body {
			#answer {
				position: fixed;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
				-webkit-transform: translate(-50%, -50%);

			Hi there, nerds! Here's what you're after:

			The text of the page update is being read from a plaintext file. I have a bespoke iOS app on my phone and am sending a POST request to the server to overwrite the file whenever I make a request. It's simple, it works, and, there's no history by design.

			I'll show you the code sometime! Just not now!
		<script type="text/javascript">

		<div id="answer">
				$fn = "answer.txt"; 
				$file = fopen($fn, "r"); 

				$contents = fread($file, filesize($fn)); 


				print $contents;


This file was more or less the same as it was before just with a more direct comment to the many nerds in my social network. This is me making good on the promise to show you how it all worked.


Programmers overcomplicate everything all the time. The hardest part of this for me was limiting the feature set to only the basics. Since this is never going to be used by anyone else I could afford to cut every corner there is. Heck, there’s no notification on whether or not the update went through. You go to the site to see it there. That’s extremely poor UX!

However, despite the length of the list of feature requests requests…it did its job admirably. Folks from all of our disparate social circles got to check in on us when they were thinking of us and get a glimpse into what was going on. And as people woke up on the 27th and saw the update we started to get trickled in congratulations from all over. The Workantile slack even started a thread to notify people whenever there was an update, which was heartwarming to watch.

I’m glad we did this and the site will show this very important message until the registration on the domain name lapses in about a year:


A friend emailed me after the birth to say that he’d asked the Internet Archive to archive the site when it updated. He said “When he’s older and you explain to him how you set up a website, tell him another nerd archived it.”

This was such a gift and I’m so thankful for my friend who did this:

Caspian Orion Salzman

Our son was born on May 27th 2020 at 7:17am. He was 21.25” long and 8lbs 12oz.

I told him this when he was born. Perhaps this is too much to lay at the feet of a baby, born into a country on fire, but I think he can do it:

Promise you’ll be kind.
Promise you’ll be good.
Promise to fight for justice.

He is named after Caspian from the Chronicles of Narnia, although I’m learning to like the Phish song as well. Orion is after the constellation. It’s vast and encompasses many stories. Later he can decide which one he likes best.

2×4 Bench, Rustic Strength

Finally finished this bench I’d been slowly working on. This was the second attempt at a similar design. Both found homes with friends. The first one will live near a firepit and this one will end up inside as a bench near an entrance. Final size is about 33″ wide by 16″ tall.

The wood came from scrap 2x4s and the box joint configuration created a surprisingly strong bench!

Started by milling the 2x4s on the thickness planer and table saw to get square edges and flat faces. None of them were acceptable without this step for the finish quality I was going for.

After milling, I cut the top and sides to slightly longer than needed. Then I attacked worst part of this project: the glue up. I didn’t want to have any screws or nails involved so gluing involved a lot of clamps and annoyances. Once it dried I evened out the legs and top ends with a circular saw, chiseled and hand planed everything reasonably flat and then sanded (a lot). Finished with a few coats of clear shellac.

I’d been wanting to try this technique for a while. After trying it? It’s neat, but oh-so-fiddly to get right. What I learned is that I never want to use 2x4s for “fine” furniture again if it can be avoided.

Cutting Boards, Racing Stripes Edition

Made two cutting boards yesterday! I have the week off from work and so naturally spent a few hours in the shop. One is spoken for, but another is still available as of yet ($40). Edit: Both are sold! Talk to me if you want one though since I’ll do another batch later this month!

Dimensions are around 9″x12″ with rounded edges. Pattern is: red oak, oak, walnut, red oak. The walnut came from a friend who had it in his basement and the rest is from Urbanwood. Finished with Howards Butcher Block Conditioner.