Monthly Archive:: April 2020
I guess current world events are starting to affect the flow of news in our sector, too, since there’s a decided lack of interesting stuff to talk about. So, let’s talk about this: One of the immediate differences Ubuntu 20.04 desktop/laptop users will notice when booting in UEFI mode is the boot splash screen improvements thanks to leveraging Red Hat’s work on providing a flicker-free boot experience and pulling in the UEFI BGRT system/motherboard logo during the boot process to provide a more transitive experience. Canonical in turn is working on pushing some of their improvements back into upstream Plymouth. The Ubuntu 20.04 LTS boot experience is on-par to what has been found in Fedora and other Linux distributions like Arch Linux for over one year. I love it when different distributions and other projects work together to improve something that isn’t particularly sexy or high on anybody’s agenda, yet still is a welcome improvement. This is a great example of that.
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.
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.
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 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.
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.
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.
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).