Cidco MailStation as a Z80 development platform

The Cidco MailStation is a series of dedicated e-mail terminals sold in the 2000s as simple, standalone devices for people to use to send and receive e-mail over dialup modem. While their POP3 e-mail functionality is of little use today, the hardware is a neat Z80 development platform that integrates a 320×128 LCD, full QWERTY keyboard, and an internal modem.

After purchasing one (ok, four) on eBay some months ago, I’ve learned enough about the platform to write my own software that allows it to be a terminal for accessing BBSes via its modem or as a terminal for a Unix machine connected over parallel cable.

A year old story, but come on, this is timelessly cool.

Windows 10’s new Hosted App Model

In Windows 10 version 2004, we are introducing the concept of Hosted Apps to the Windows App Model. Hosted apps are registered as independent apps on Windows, but require a host process in order to run. An example would be a script file which requires its host (eg: Powershell or Python) to be installed. By itself, it is just a file and does not have any way to appear as an app to Windows. With the Hosted App Model, an app can declare itself as a host, and then packages can declare a dependency upon that host and are known as hosted apps. When the hosted app is launched, the host executable is then launched with the identity of the hosted app package instead of its own identity. This allows the host to be able to access the contents of the hosted app package and when calling APIs it does so with the hosted app identity.

This seems like something that could be useful for progressive web apps, and maybe even Electron apps by making them use Edge Chromium’s rendering engine instead of having every Electron application use its own copy of Chromium, which could benefit performance and battery life.

How SNES emulators got a few pixels from complete perfection

As the lead coder of bsnes, I’ve been attempting to perfect Super Nintendo emulation for the past 15 years. We are now at a point where that goal is in sight, but there we face one last challenge: accurate cycle timing of the SNES video processors. Getting that final bit of emulation accuracy will require a community effort that I hope some of you can help with. But first, let me recap how far we’ve come.

The bsnes saga is a fascinating story of how an obsession for perfection can lead to something beautiful – not just the emulator itself, but also the various technical details and stories written about it. I doubt most people really needs the insane emulation accuracy bsnes strives for, but in the future, when original, first party SNES consoles have all died out or get incredibly rare, the accuracy of bsnes will be a godsend.

Dropbox’s journey to type checking 4 million lines of Python

Dropbox is a big user of Python. It’s our most widely used language both for backend services and the desktop client app (we are also heavy users of Go, TypeScript, and Rust). At our scale—millions of lines of Python—the dynamic typing in Python made code needlessly hard to understand and started to seriously impact productivity. To mitigate this, we have been gradually migrating our code to static type checking using mypy, likely the most popular standalone type checker for Python. (Mypy is an open source project, and the core team is employed by Dropbox.)

This post tells the story of Python static checking at Dropbox, from the humble beginnings as part of my academic research project, to the present day, when type checking and type hinting is a normal thing for numerous developers across the Python community. It is supported by a wide variety of tools such as IDEs and code analyzers.

I recently came across an article complaining about Python’s dynamic typing and couldn’t quite believe this was still the case. As it turns out, nowadays there is indeed a standardized way to do write type annotations and to type-check prior to runtime using mypy, all the while being driven forward by the good folks at Dropbox (which includes Python’s Benevolent Dictator for Life Guido van Rossum). This article provides a fascinating insider insight into the history of type-checking in Python and how it evolved in symbiosis with Dropbox’s codebase.

LineageOS 17.1, based on Android 10, released

We have been working extremely hard since Android 10’s release last August to port our features to this new version of Android. Thanks to massive refactoring done in some parts of AOSP, we had to work harder than anticipated to bring some features forward, and in some cases, introduced implementations similar to some of our features into AOSP (but we’ll get to that later).

Other than the Android 10 features, LineageOS 17.1 also brings back theming support (deprecated in 13.0), and the default installation solution is now Lineage Recovery (but other recoveries are still supported, and may even be advised by maintainers for specific devices).

Not every Android devices is supported right away, of course, but there’s a decent number of supported devices regardless.

Swift on Mac OS 9

It’s April 1, and that means it’s both April Fools’ Day and the anniversary of the founding of Apple Inc. While this year is a sober one due to current events, I think a lot of people still appreciate what people are creating and sharing to keep spirits up, whether that be music or art or… Impractical programming projects. And while pranks on April Fools’ seem less and less fun, obvious jokes and whimsy, not at anyone’s expense, are still something I believe in… And even better if they actually work.

Last year I implemented the world’s best code visualizer. This year I decided to seriously attempt something that I’d thought about in the past: getting a Swift program to run on Mac OS 9.

This is not an April Fools joke, but a real project that really works. An absolutely outstanding effort and great technical write-up.

Microsoft Edge is becoming the browser you didn’t know you needed

It’s no secret that we’ve been enthusiastic about Microsoft’s new, Chromium-based Edge browser for a while now. But that enthusiasm has mostly been limited to “a default Windows browser that doesn’t suck,” rather than being for any particularly compelling set of features the new Edge brings to the browser ecosystem.

In a folksy announcement this week, Microsoft politely declared its determination to step up our expectations from “doesn’t suck” to somewhere on the level of “oh, wow.” Microsoft Corporate VP Liat Ben-Zur spent plenty of time enthusing about the way the new features are, apparently, already changing her life.

The only thing that has me excited about the new Edge is that Windows will finally have a proper default browser that isn’t either complete garbage (Internet Explorer) or ignored by every web developer ever (the old Edge).

Rethinking OpenBSD security

OpenBSD aims to be a secure operating system. In the past few months there were quite a few security errata, however. That’s not too unusual, but some of the recent ones were a bit special. One might even say bad. The OpenBSD approach to security has a few aspects, two of which might be avoiding errors and minimizing the risk of mistakes. Other people have other ideas about how to build secure systems. I think it’s worth examining whether the OpenBSD approach works, or if this is evidence that it’s doomed to failure.

I picked a few errata, not all of them, that were interesting and happened to suit my narrative.

Honda bucks industry trend by removing touchscreen controls

Honda has done what no other car maker is doing, and returned to analogue controls for some functions on the new Honda Jazz.

While most manufacturers are moving to touchscreen controls, identifying smartphone use as their inspiration – most recently seen in Audi’s latest A3 – Honda has decided to reintroduce heating and air conditioning controls via a dial rather than touchscreen, as in the previous-generation Jazz.

Unlike what the introduction states, Honda joins fellow Japanese car maker Mazda in not just blindly using touchscreens for everything inside cars. This is a good move, and definitely takes some guts, since I’ve seen countless car reviewers – including my standout favourite, Doug DeMuro – kind of blindly assuming that any car without 100% touchscreen control is outdated, without questioning the safety consequences.

Good on Honda.

GNOME’s Mutter working on variable refresh rate support

A work-in-progress patch series was posted over the weekend for adding variable refresh rate support into Mutter for X.Org and Wayland. This includes checking for VRR support from connected monitors using the DRM properties, support for activating VRR, and the ability to toggle the VRR support via a DBus API. The VRR support isn’t advertised to Wayland clients at the moment for the lack of an upstream Wayland protocol around VRR.

I can’t wait for Mutter and Kwin to adopt and integrate support for variable refresh rates, so seeing these first patches is good news.

Ryzen 4000 review: AMD’s 7nm Ryzen 9 offers game-changing performance for laptops

When AMD introduced its Ryzen 4000 mobile CPUs at CES, the company made bold claims of game-changing performance. Coming off of years of underwhelming laptop chips, AMD promised it had optimized Ryzen 4000 for mobile computing.

Now we’ve tested those claims in AMD’s Ryzen 9 4900HS chip, an 8-core, 7nm chip with Radeon Vega cores. We’re stunned at the CPU’s impressive tour de force that defeats just about every Intel 8th- and 9th-gen laptop CPU we’ve ever seen.

Just open up your YouTube feed and you’ll see pretty much every PC hardware channel staring at disbelief in just how good AMD’s Ryzen 4000 mobile processors really are. This isn’t just a “kind of good enough” processor – the top of the line model is faster than or equal than Intel’s top of the line processor at both single core and multicore workloads, while using slightly more than half the power.

It’s all well and good for AMD to roundly run circles around Intel in the server and desktop/workstation space, but the laptop space is where the real money and mindshare can be found. This new line of AMD mobile processors is simply stunning.

Linux 5.6 released with WireGuard

Earlier this evening, Linus released Linux 5.6, which contains our first release of WireGuard. This is quite exciting. It means that kernels from here on out will have WireGuard built-in by default. And for those of you who were scared away prior by the “dOnT uSe tHiS k0de!!1!” warnings everywhere, you now have something more stable to work with. The last several weeks of 5.6 development and stabilization have been exciting, with our codebase undergoing a quick security audit, and some real headway in terms of getting into distributions.

WireGuard is probably the biggest new feature in 5.6, announced earlier today.

Control Panel isn’t dead yet – but the System applet is looking nervous

You may have seen dark rumors around the Web that Microsoft is about to kill off the classic Control Panel. Rest assured, friend, we were as horrified as you are—but on more careful inspection, this seems not to be the case.

That’s one of the many downsides of being at the mercy of closed operating systems like Windows or macOS – as a user, you’re not really in control, and your platform landlords can decide to remove vital functionality or features on a whim, and there’s nothing you can do about it.

If you haven’t done so yet, I’d highly suggest start looking at open source alternatives before it’s too late, because I feel the noose is only going to tighten more, not less.

The exFAT filesystem is coming to Linux – Paragon software’s not happy about it

Ars Technica reports on a story from the early 2000s 2020:

When software and operating system giant Microsoft announced its support for inclusion of the exFAT filesystem directly into the Linux kernel back in August, it didn’t get a ton of press coverage. But filesystem vendor Paragon Software clearly noticed this month’s merge of the Microsoft-approved, largely Samsung-authored version of exFAT into the VFS for-next repository, which will in turn merge into Linux 5.7—and Paragon doesn’t seem happy about it.

Yesterday, Paragon issued a press release about European gateway-modem vendor Sagemcom adopting its version of exFAT into an upcoming series of Linux-based routers. Unfortunately, it chose to preface the announcement with a stream of FUD (Fear, Uncertainty, and Doubt) that wouldn’t have looked out of place on Steve Ballmer’s letterhead in the 1990s.

This is some “get the facts” level of tripe. You’d think that in 2020, we’d be spared this sort of nonsense, and I’m sad I’m even spending precious bits on this one – but at least we get the name of Paragon out so you can avoid them like the plague.

AMD uses DMCA to mitigate massive GPU source code leak

AMD has filed at least two DMCA notices against Github repos that carried “stolen” source code relating to AMD’s Navi and Arden GPUs, the latter being the processor for the upcoming Xbox Series X. The person claiming responsibility for the leak informs TorrentFreak that if they doesn’t get a buyer for the remainder of the code, they will dump the whole lot online.

I’d love to hear the backstory behind this hack. For a company like AMD, such a hack must’ve been an inside job, right? While I know I shouldn’t be surprised anymore by just how lacking security can be at even the most prominent technology companies, I just can’t imagine it being very easy to get your hands on this documentation and code without some form of inside help.

MIPS Loongson 3 seeing support improvements with Linux 5.7

For those managing to get their hands on a recently released Loongson 3A4000/3B4000 or even older Loongson 3 MIPS64 processors, improving the support is on the way with the upcoming Linux 5.7 kernel.

Queued as part of the MIPS architecture work for Linux 5.7 are a number of Loongson improvements, in particular for the Loongson 3 series.

The Loongson processors are pretty much impossible to come by outside of China, and gained some fame as the platform of choice for Richard Stallman.

Apple releases macOS 10.15.4, watchOS 6.2, and iOS, iPadOS and tvOS 13.4

Apple has released macOS 10.15.4, watchOS 6.2, and iOS, iPadOS and tvOS 13.4.

Earlier today, Apple continued its tradition of updating all of its operating systems at once. The day brought major new feature releases to iOS, iPadOS, macOS, watchOS, and tvOS. The iOS, iPadOS, and tvOS updates are numbered 13.4, Apple Watches got watchOS 6.2, and Macs saw the release of macOS Catalina 10.15.4.

You know where to get them.

Living a Google-free life with a Huawei phone

Ever wondered what’s it like to run Android without Google’s services and applications? Well, get a Huawei device.

A smartphone UI isn’t much use without apps, of course, and here is where Huawei hits its first hurdle. Huawei has its own store called AppGallery, which it claims is the third largest in the world based on its more than 400 million monthly active users. The vast majority of those users will be in China, of course, where the Google Play Store has never been included alongside AppGallery. If you buy a Mate 30 Pro now anywhere in the world, though, AppGallery is what you get out of the box.

To be blunt, it is not great. I wouldn’t call it barren — there is support from major US companies like Microsoft, Amazon, and Snap. You can’t get Chrome, of course, but Opera is there if you want something with desktop sync. But a huge amount of its content is aimed at China, with other big Western names like Facebook, Slack, Netflix, and Twitter missing, which puts the Mate 30 Pro in a more precarious app situation than even the diciest days of Windows Phone. Huawei has announced a $1 billion plan to help stock AppGallery’s shelves, but it has its work cut out.

A bigger problem is that even if you can get popular applications installed, they often won’t work properly because the device lacks the Google Mobile Services. It’s an incredibly hard situation for Huawei to be in.