How to disable links opening in a new tab

One of the most infuriating UX choices on the web is the developer’s choice to open every single link in a new tab. There are a few sites I interact with, including Aliexpress, where the designers have inflicted this on the users.

Fortunately, I found a solution. The Chrome extension target="_blank"-toggler works well. When you hover over a link which would open in a new tab, it superimposes a visual signal. Now you have a choice. If you click on the link, it will open in a new tab. If you Command + Shift click,^[The ⌘ + ⇧ combination works on macOS. It is probably CONTROL + Shift on Windows, but you’ll have to check the documentation.] the link will open in the same tab. Problem solved.

Setting up Arduino IDE with Heltec ESP32 module for macOS

Heltec WiFi Kit 32 ESP32 module

The Heltec WIFI Kit 32 is an interesting little module that integrates a WiFi/MCU SoC and a small OLED display on a single board. If you want to set up the Arduino IDE to work with this device and you’re on macOS, this is for you. This particular ESP32 module has a number of impressive features: 240 MHz processor speed and 4 MB of flash memory. The onboard OLED display can be conveniently used for debugging.

Install command line development tools

If you haven’t already installed the command line dev tools, you’ll need to do so.

xcode-select --install

For some reason, I had to do this twice before it would install. It eventually succeeded.

Install the Arduino support files

mkdir -p ~/Documents/Arduino/hardware/espressif
cd ~/Documents/Arduino/hardware/espressif
git clone https://github.com/espressif/arduino-esp32.git esp32
cd esp32
git submodule update --init --recursive
cd tools
python get.py

With the last command python get.py I got an SSL error. I was able to workaround it but downloading the mkspiffs archive here. My target machine is still on 10.11, and I downloaded mkspiffs-0.2.1-osx.tar.gz. Then I just moved the archive (not unzipped) to ~/Arduino/hardware/espressif/esp32/tools/dist. Then I reran:

python get.py

It still threw an error related to openssl, so I updated the Python distribution with Homebrew^[Homebrew is an excellent package manager for macOS. It’s incredibly easy to install. See the link provided.], and updated openssl:

brew install openssl
brew install python

Then I was able to run get.py:

python3.6 get.py

Now you’re setup to use the Arduino IDE to develop for this powerful little board.

Heltec WiFi Kit 32 pin diagram

References

New Yorker: Michael Cohen and the end stage of the Trump presidency

Brutal piece by Adam Davidson about the pivotal role that the takedown of Michael Cohen plays in the unraveling of this disastrous presidency.

The narrative that will become widely understood is that Donald Trump did not sit atop a global empire. He was not an intuitive genius and tough guy who created billions of dollars of wealth through fearlessness. He had a small, sad operation, mostly run by his two oldest children and Michael Cohen, a lousy lawyer who barely keeps up the pretenses of lawyering and who now faces an avalanche of charges, from taxicab-backed bank fraud to money laundering and campaign-finance violations.

NYT: Tethered to a buffoon

A brutal piece on Trump from the New York Times.

There are plenty of examples these days, from Moscow to Budapest, of how “democracies” can be manipulated to the point where they can yield only one result. This is Trump’s objective, and for it he needs a weakened Justice Department, a weakened press and an American public that will believe anything. He has had setbacks but is stubborn.

Trump’s toolkit is familiar. In it are the tools of every authoritarian brute everywhere. Americans are better than this, though.

Stalin, Trump, and the cult of personality

Великий Сталин — знамя дружбы народов СССР!

Great Stalin - banner of friendship of the peoples of the Soviet Union!

After reading about U.S. President Donald Trump’s “Number 1 fan”, Gene Huber, I was struck by the similarities between the adoration of Trump and that of Soviet leader, Josef Stalin. Throughout his tenure as General Secretary of the Communist Part of the Soviet Union, a cult of personality developed around Stalin. He was often called Великий Сталин (Great Stalin.) Propaganda posters depicted Stalin as a benevolent steward of the needs of the people.

Not always what it seems

Спасибо любимому Сталину - за счастливое детство!

“Спасибо любимому Сталину - за счастливое детство!”

(Thank you dear Stalin for a happy childhood.)

A software debouncing class for rotary encoders

Rotary encoders are notoriously difficult to get right.

Although I haven’t used this new encoder class yet, it looks very interesting. From active Teensy forum user Theremingenieur, it allows initialization with upper and/or lower limits.

You can find the code in this thread.

Implementing a simple menu interface on OLED display

While working on a project to automate environmental control in our greenhouse, I needed to implement a menu interface on a small OLED display. In this sub-project, meant to test the concept, I’ve used a Teensy 3.1, a small I2C-driven 0.96" monochrome OLED display and a rotary encoder.

Bill of materials:

  • Teensy 3.1 - the Teensy 3.1 is no longer available, but you can easily find the compatible Teensy 3.2.
  • 0.96" yellow/blue I2C OLED module - I used the version with the yellow band at the top so that it this area could act as the highlighted region of the display.
  • Rotary encoder with push-button switch - I used this one from Adafruit, but there are many options.
  • {% asset_link MC74HC14.pdf 74HC14 Schmitt Trigger inverter %} - to debounce the pushbutton.

Description

This project is a proof-of-concept for using a rotary encoder to manipulate an on-screen menu of options. A number of electronics design concepts are used here.

Carl Sagan's tools for detecting baloney

Carl Sagan’s “Baloney detection kit” is arguably more important now than ever. His 9 rules for critical thinking work for science and they can work to detect political baloney, too.

Arguments from authority carry little weight — “authorities” have made mistakes in the past. They will do so again in the future. Perhaps a better way to say it is that in science there are no authorities; at most, there are experts.

Resetting the Syncthing index

I use Syncthing^[No, there’s no iOS client. I’m OK with that.] to keep my laptop, desktop, and workshop computers in sync.^[Why don’t I just use Dropbox like everyone else? I trust peer-to-peer syncing because I’m in control. I don’t know what Dropbox is up to.] At least 99.9% of the time it works perfectly. Rarely, it seems to choke because of some edge case that I’ve never been able to sort out. But it never recovers on its own. Instead, it continues to report that a remote is 99% done syncing.