120Hz FTW!

I have been using a 144Hz monitor for gaming for a while now, but I recently replaced the monitor I was using with the M1 Mac Mini with a 120Hz, 1ms G2G one.

Wow! With that monitor, Mac OS is as smooth as an iPad Pro. Ok, I get it. The ProMotion display on the iPad Pro is 120Hz, so of course it’s that smooth. The thing is, I’m not used to seeing that while working on a desktop. The difference is *immediately* obvious.

Problems on the M1 frontier

I hadn’t gotten around to writing about my newest Mac, even though I’ve had it for a while now. Unfortunately, now that I am finding the time, it’s because of an unexpected problem with it. Oh well, that’s life.

Backstory

A few months before the new M1 Macs were announced, my mom’s iMac (20-inch, Early 2009) started to fail for her. This machine had already had its HD replaced once and, from the symptoms I was seeing, it looked like it was on the verge of happening again.

Since I had stopped using my iMac to host GCW, and I had a gaming PC with enough horsepower that I could use it as a backup to make music, I wasn’t really doing anything mission critical on the Mac, so decided to wipe it and give it to my mom as an upgrade. That machine was incredibly badass for its day, and is still running fine. Between the processor upgrade (Core2Duo to i7), the Fusion Drive, the top (at the time) Mac graphics chip (780M), and the increased system RAM (4Gig to 24Gig), the new machine behaves easily >10x faster than what she had. Woot!

Of course, my secret plan in all this was to replace my iMac with a new M1 Mac when they became available. 😉

What I got

What I ended up getting was this…

Of course, this wasn’t my first Mac mini, and I had lots of peripherals lying around, so “downgrading” from the iMac wasn’t a big deal, but I have to say I was not prepared for how much faster this new machine is.

I can honestly, say that this is the most responsive Macintosh I have ever worked on, and that includes my (almost) current gen, max spec, work MBP, which cost four times as much.

Starting up an application? Instant. Starting an Intel-based application via Rosetta 2? Almost as fast (after the first startup). Gaming performance? Everything is faster, even comparing against the dedicated 780M in the iMac, and that includes games written for the Intel architecture.

Wow! To say I’m pleased with the performance would be a massive understatement.

And now the bad news.

Like any first generation product, there have been growing pains — Blutooth dropouts, USB issues, etc. Generally, these have been minor and new releases of macOS 11 are bringing improvements.

At this point though, there are two issues which are pretty serious:

Lack of support for M1
Because of Rosetta 2, most applications you run work fine on M1. However, the closer you get to things that are at the edges, like printer drivers and music software, the more likely you will be to see problems. I’m still nowhere close to having all of my music software running on the new machine, but at least my mainstay, Reason, works as does Logic Pro (of course).

The display flickering bug
This is a reasonably wide-spread issue that causes certain combinations of content being displayed to flicker in brightness and have faint vertical lines. The problem is quite bad, when it happens, but I usually only see it when watching videos with dark backgrounds.

Here is an example:

Notice how the whole screen flickers when the lightning flashes

It’s hard to get a good demonstration of the problem, because it usually only occurs when the display is in flux, but at one point I did manage to capture a video of a static case. Here’s a close up:

At this point, there’s no fix for the problem. Anecdotally, there’s some evidence that this is a software bug, which hopefully means it will eventually get fixed, but who knows.

Also, in case you think it’s just me, here are some links from around the net:

I have a case open with Apple, of course, but they weren’t able to provide any useful suggestions, and fell back to the old standbys:

I did try running in safe mode (with no effect), but the other two are particularly sad because neither of those are possible on an M1. Argh.

I guess we’ll see. Hopefully, this gets fixed at some point. I’ll update this post when something changes.

Mini PCs

As you can tell from my Raspberry Pi addiction, I’ve always been fascinated by “mini” PCs (i.e. very inexpensive computers in tiny packages). My latest foray into this world was triggered by the hope that I could set up my living room TV as a Zoom/Webex/Skype/Hangouts space for family get togethers.

I tried using a Pi for this, but it was a struggle, with a mix of failures from missing features to inability to recognize the camera to performance problems, etc. I think if I was only using one service, I probably could have fought to make it work, but it felt like it was going to be too hard to get all of the services going.

This led me to wonder whether I could find a cheap “actual” PC to do the job and coincidentally (or at least I hope it was a coincidence), Amazon decided to point me at a sale on these…

In typical Amazon fashion, this is called

Mini PC, Windows 10 Pro Mini Computer Intel Gemini Lake J4125 Processor(up to 2.7GHz) Desktop Computer, 6GB RAM 120GB ROM, 4K@60fps, Dual Wi-Fi, Gigabit Ethernet, Bluetooth 4.2

On sale, I was able to pick one up for less than 200 $CDN. This is a surprisingly powerful little beast at that price point. It’s about 13cm on a side, making it only a bit larger than a Pi in an Argon ONE case. It’s quiet, it drives my 4K TV fine, it even has an internal slot to add a SATA drive that I filled with a 1TB SSD I had lying around.

Now, I will say it’s not fast. It just barely has enough horsepower to display 4K video, but that did work for the YouTube and Netflix examples I tried.

As to the reason why I bought the box, since it’s running Windows, all of the standard teleconferencing services worked OOTB using a Logitech C920 video camera. I was even able to do a video call through my home NextCloud instance, which surprised me.

Overall I’m quite happy.

Pi, home theatre, and Harmony remotes

Just for grins, I took my Raspberry Pi in the Argon ONE M.2 case upstairs and plugged it into the living room home theatre. I have a small wireless keyboard/trackpad device (that I got with an old QNAP NAS, of all things), which I could use to talk to it. This worked, but the range was terrible — basically, I had to be within 50cm of the Pi for it to work. I have ordered a “real” Bluetooth wireless keyboard/trackpad from Logitech. I’ll let you know how well it works once it shows up.

I also have a Harmony remote, that I’ve been using with the living room gear, and I have to say this has been the best universal remote that I’ve ever had. For grins, I added the Pi as a “Computer” in the app for the remote, and was surprised to find out that the remote wanted to pair with the Pi over Bluetooth. After doing this I am now able to move the cursor and type text on the Pi from the remote app on my iPhone. This despite the fact that the Pi isn’t running Mac OS or Windows. Very cool!

Using the remote, I was able (from my couch) to run Kodi and VLC (both of which worked well) and was able to do some light web browsing. Typing text into the remote app isn’t a good enough experience to want to do anything serious there, but the Logitech keyboard should fix that.

Looks like “argonPi” has a new home.

It works!

Yes, my little temperature sensor app works with the real Sense Hat hardware. Here’s a picture.

Note: that picture is taken in low light so the shutter speed is long enough to catch all of the pixels. You don’t notice the LED scanning with the naked eye, but the camera really shows it (see picture below).

When that picture was taken, it was still in a case with a fan, but it was hard to see the display and the fan noise bothered me. I took it out of the case and added a right angle extender to the GPIO connector on the Pi, so the display stands up, which keeps everything cool enough that no fan is required. I then added four risers and the lid off another old Pi case with some rubber feet, which keeps the board off the ground (and also increases the airflow).

It actually reads a couple of degrees too high, but the accuracy of the readings isn’t all that important as long as it tracks relative temperature values. I tested it by taking it out into my garage (in January), where the temperature dropped, the display turned red, and email was sent. Yay!

(See part 1 for more details about the app.)

Python ?

Wow. I have to say I never thought I was going to end up writing Python programs for fun and (no) profit. That is until I got a Raspberry Pi Sense Hat, at least.

The specific project I’m working on is a remote temperature monitor for an unoccupied site that I’m responsible for, to allow us to react if the furnace goes out there before the pipes burst.

Given the Python library for the Sense Hat, it was basically trivial to build a program that would watch for the temperature to go outside a given range, and send email to me if it did. It took a couple of hours longer than I expected it would to write, but my excuse is that it really was my first Python program. 🙂 (Also, it seems there are quirks around getting accurate temperature readings from the SH, so I’m still tweaking the program, but it’s basically working.)

Given the 8×8 display on the Hat, I even managed to provide a continuous temperature display. 8×8 is not enough pixels to make something look good, so you end up with something like this (as drawn by the Sense Hat Emulator developer tool):

Ugly but readable. For the inquisitive, here’s the “McQ’s First Python Program” version of a function to display the digits:

###########################################################
# Display two digits on the sense hat.
 

# Digit patterns
digits0_9 = [
    [2, 9, 11, 17, 19, 25, 27, 33, 35, 42],  # 0
    [2, 9, 10, 18, 26, 34, 41, 42, 43],      # 1
    [2, 9, 11, 19, 26, 33, 41, 42, 43],      # 2
    [1, 2, 11, 18, 27, 35, 41, 42],          # 3
    [3, 10, 11, 17, 19, 25, 26, 27, 35, 43], # 4
    [1, 2, 3, 9, 17, 18, 27, 35, 41, 42],    # 5
    [2, 3, 9, 17, 18, 25, 27, 33, 35, 42],   # 6
    [1, 2, 3, 9, 11, 19, 26, 34, 42],        # 7
    [2, 9, 11, 18, 25, 27, 33, 35, 42],      # 8
    [2, 9, 11, 17, 19, 26, 27, 35, 43]       # 9
]
     
def display_two_digits (a_number, color): 

    global digits0_9
    black = (0, 0, 0)
     
    if a_number < 0:
        negative = True
        a_number = abs(a_number)
    else:
        negative = False
         
    first_digit = int(int(a_number / 10) % 10)
    second_digit = int(a_number % 10)
 
    # set pixels for the two digits
    pixels = [black for i in range(64)]
    digit_glyph = digits0_9[first_digit]
    for i in range(0, len(digit_glyph)):
        pixels[digit_glyph[i]] = color
    digit_glyph = digits0_9[second_digit]
    for i in range(0, len(digit_glyph)):
        pixels[digit_glyph[i]+4] = color
     
    # set pixels for a minus sign for negatives
    if negative:
        pixels[56] = color
        pixels[57] = color
        pixels[58] = color
     
    # set bottom right pixel if number is more than 2 digits
    if a_number > 99:
        pixels[63] = color
     
    # display the result
    sense.set_pixels(pixels)
 

Of course, you pass in a color for the digits to show, so when the temperature is outside the range, you can show it in red. 😉

Anyway, feel free to point out all the noob Python programming mistakes. I’m always happy to improve.

That’s better.

So take a look at this…

I apparently have joined the big leagues, although it’s a bit too early to say for sure. The ping time isn’t great, but I guess it will be good enough. For comparison, here’s what I had before the upgrade:

Ping: 4ms
Down 47.5
Up: 10.4

I’ve tried GeForce Now and it’s like night and day. The game looks basically like it’s running locally now.

As you can see from this post, GCW transferred over seamlessly too.

Now, let’s try some MMOs… 🙂

Fun with Pi

There have been a number of interesting things happening in the Raspberry Pi community lately.

One new hotness is the RPi 4 with 8Gig of RAM, which in addition to having more RAM than you will likely ever need on a machine like this, also has a slightly updated power module that improves the behavior with some USB-C power supplies. It does mean that you can now open too many Chromium tabs to keep track of on this platform too. 😛

Another interesting update is the support for booting off of USB drives, instead of the MicroSD card. This lets you use an SSD over USB3 as your main drive, which is both much faster than the built-in MicroSD, and will have a significantly longer lifespan.

Finally, there is the 64-bit version of Raspian (now renamed as Raspberry Pi OS), which actually matters given you can get a Pi with more than 32bits of address space, but it will likely also improve performance for many tasks once the beta kinks are ironed out.

Anyway, being the RPi geek that I am, here is my latest desktop…

An 8Gig RPi4 with a 500Gig Samsung SSD, in the awesome Argon ONE Pi 4 case, which has both a temperature controlled fan (that is almost always off under normal workloads) and, believe it or not, a working power button that does a safe shutdown! This is definitely the slickest Pi case I’ve used, even if moving all the ports to the back meant making it nearly 50% larger than the Flirc case, which was my previous favorite.

Anyway, even with an SSD that cost more than the Pi and the Argon ONE case together, and the Pi overclocked to 2GHz, it’s still too slow to be a great desktop experience, but it works well enough that I was able to write this post, while watching youtube videos, with several other apps open, including LibreOffice and Gimp, so it’s definitely real.

Google was wrong…

no one wants a pure web laptop.

As someone who has been using Chromebooks for a while…

… I have always tried to push the limits of what you can do with them. More often than not, the limits I hit were caused by one of the core tenets of the platform, that everything you need to do will be done with web apps. It turns out, this was never true, and it’s looking increasingly less likely that it is going to ever become true.

I read a web article a while back called “Is Chrome OS right for you? A 3-question quiz to find out“. The first two questions in the author’s quiz are:

  1. Do you spend most of your time using the web and web-centric services?
  2. Do you have specific local programs that you absolutely need, or could most of the things you do on a computer be accomplished with web-centric equivalents — along with Android and/or Linux apps to fill in any gaps?

At some level, these two questions capture both the history, and the problem with Chromebooks. When Chromebooks were first being developed, the notion that we might end up doing everything on the web was aspirational at best and, more cynically, was an attempt by Google to force people onto a platform they “controlled”. It rapidly became clear that the under-powered, first generation devices that were being built were too limited for day-to-day use, and as the complexity of applications that were being built on the web increased, they couldn’t even handle those web apps well.

Even more telling is that, even if we believed a web-based future would eventually come, what we have actually seen is the world going in a different direction: It’s not web apps that people run, but rather mobile apps. Question two above suggested we would use Android apps to “fill in any gaps”, but it’s Android (or iOS) apps that people typically use now, even if there are web app alternatives.

So what happened? Google added support for Android apps to Chrome, and Apple is in the process of doing the same on their platform. Want proof that it’s a mobile world? Just go take a look at the relative sizes of the Google Play Store and the Chrome Web Store. Go ahead, I’ll wait…

And the funny think about all this, is that yes, Chromebooks are useful now, because they can run the applications people are using, and have large screens and input hardware that makes using those applications easier than running them on phones. Oh well.

Sony WF-1000XM3

I have been a wireless headphone geek for a long time. To give you some idea how bad it is, I have all of:

  • Beats Solo3
  • Marley Smile Jamaica
  • Trekz Titanium (bone conduction)
  • Plantronix Backbeat Fit
  • Soundcore Liberty Air
  • Corsair Void Pro (times 2)
  • Steelseries Arctis 7

… and that’s only the ones that I still currently use.

When the Apple AirPods Pro and Sony WF-1000XM3 came out, I tried them both and decided to pick up the Sony’s based on a perceived slightly better sound quality. Since then, I’ve seen several reviews of them both, with some level of agreement on the sound, and indications that the noise cancelling is also better.

However, my overall experience with the Sony’s has been quite poor, to the point that in retrospect I’m confident the AirPods would have been the better answer. Honestly, the UX on the WF-1000XM3 is so bad that I can’t help but think Steve Jobs would have fired any team that came forward with something in the same state.

The first issue is the companion app which, despite several updates since I first ran it, is still frequently unable to connect to the headphones, or drops the connection at some point after it gets connected, or simply crashes completely. It also includes something called “Adaptive Sound Control”, which has the following Engrish description:

The app detects your actions and [Ambient Sound Control] is switched.

Whatever this is supposed to do, the behavior manages to be simultaneously be both intrusive and not useful. I turned it off almost immediately.

The headphones themselves are also unreliable. Sometimes when you take them out of the charge case, they don’t BT connect at all. Sometimes they connect (i.e. show up as connected in the BT device list) but don’t become available as headphones (doh!). If they do get connected, the connection will later sometimes drop for one or both of them.

And speaking of “one or both”, the strangest thing about them is the way they start up. They behave a bit like they are two different bluetooth devices that notice while they are connecting that they can work together. The start up sequence has three voice prompts:

  1. Indicate they are powered on (“Power on.”)
  2. Indicate the current battery level (“Battery fully charged.”)
  3. Indicate they are connected (“Bluetooth connected.”)

However, because they sync up part way through the start up, you will hear somewhere between zero and three of those messages in each ear, and by that I mean a *different* number of messages in each ear. It’s a terrible experience.

[Aside: Hey Sony, there is absolutely no reason to ever say “Power on.”. If you say any of the other prompts, we know the power is on. 😉 ]

One final comment: the WF-1000XM3 — btw, who thought that was a good name for *anything*? — are quite a bit heavier on the ear than, for example, the SoundCore Liberty Airs. I didn’t realize how much of a difference this was until I used the Airs again recently. I now find myself going back to the Airs often, even though the WF-1000XM3 have clearly better sound.