Monitor Hack: A $30 KVM Switch

Salt and pepper. Hammer and nail. Socks. All things that are better as a pair. And monitors, according to most devs at least.

Nearly all of us prefer dual monitor setups. With a single computer the dual monitor setup is relatively straightforward - connect the monitors to your computer and you’re ready to go. But what do you do if you frequently switch between computers and want to switch the source for the monitors?

One solution is a Keyboard, Video and Mouse Switch, aka KVM Switch. A KVM switch is a hardware device that allows multiple computers to share peripherals, like monitors. The downside is a quality KVM Switch with support for mulitple 4k, 60hz, USB-C monitors can cost upwards of several hundred dollars.

Enter Software Engineer Haim. Haim created a $30 alternative using a hardware/software solution with an inexpensive USB Switch and two programs he wrote (in Swift and Rust, for Mac and PC) to detect and automatically switch the monitor inputs.

Read about Haim’s Monitor Switch on his blog ≫

Debouncing API Calls with Promise Chaining

Typeahead (or autocomplete) suggestions are a useful UX enhancement - helping users find what they’re looking for in a much more efficient way than executing a number of searches in a row. As the user types in the search input, the application queries the API for matches and displays the results.

But there’s a potential downside to this - on every change of the input value the API is queried - potentially leading to a lot of unecessary API requests, and race conditions when dealing with the asynchronous responses.

This week Software Engineer Jordan Papaleo details a solution for improving the performance of typeahead inputs using Promise chaining with Lodash’s debounce method to reduce the number of API requests and simplify response handling.

Read the article on Jordan’s blog ≫

Working at Theorem: A Typical Non-Typical Day

Theorem is a remote-first workplace, it always has been. Nearly all of us work from home and we’re extremely well-versed in distributed teamwork. Because of this, we didn’t think lockdowns would affect us too drastically.

But almost nothing is normal these days, and that includes life for remote workers. This week Theorem Software Engineer Leandro López gives us an inside look at how lockdown has impacted his daily schedule in Buenos Aires, Argentina.

The biggest takeaway, for me, is that in order to survive this crazy new world we are living in, you need to work with great people, who understand not all experiences are equal, who trust you will work with professionalism and responsibility, and who you trust back in the same way.

Read the article on Leandro’s blog ≫

Distributed Systems Fundamentals Part 2: You Can Say That Again!

At Theorem, we approach problems by reasoning about them from first principles. To truly understand a problem and be confident about your solution, you must have a working understanding of the fundamental constructs and motivating logic behind what you’re doing. In this spirit, we’re releasing a blog series about the fundamentals of distributed systems. This post is the second of that series.

Continue reading...

SwiftUI Implications

SwiftUI was warmly welcomed by the development community when it was announced at this year’s Apple Worldwide Developers Conference (WWDC). Given the wide variety of platforms and screen sizes, it makes sense for Apple to provide a standard UI abstraction layer which works across all of their devices. Creating, managing, and positioning each UI view, and their countless properties, to form the expected layout is a time consuming and error-prone task. It adds little value, but a lot of development effort, to the resulting apps – even more so if multiple device types are to be supported. SwiftUI addresses these challenges, improving application quality and decreasing development effort.

Continue reading...

Distributed Systems Fundamentals Part 1 or: How I Learned To Start Worrying and Confront the Possibility of Message Loss

At Theorem, we approach problems by reasoning about them from first principles. To truly understand a problem and be confident about your solution, you must have a working understanding of the fundamental constructs and motivating logic behind what you’re doing. In this spirit, we’re releasing a blog series about the fundamentals of distributed systems. This post is the first of that series.

Continue reading...