Finite state machines, DAGs, and the UX for our drag and drop editor - Laudspeaker
Server Side Rendering Is Stupid And You (Probably) Shouldn't be Using It
Disclaimer: This post is explicitly talking about running JavaScript UI frameworks such as React and Vue server side to generate single page applications. It is not about traditional MPAs, or using Go/Python/Ruby/etc. This post is specifically in res...
A Bridge Over a River Never Crossed
On prototyping, planning, and trying to do things right the first time around in a toy software project, and the concept of falsework.
16 Lessons from the Tanenbaum–Torvalds Debates
Hell Never Ends On x86: The Hyperspace Story, Continued, Sort Of
When researching Phoenix Hyperspace for my highly upsetting post [https://cohost.org/cathoderaydude/post/1228730-taking-the-deepest-p] on the subject, it was hard to avoid news articles proclaiming that it had been sold off by Phoenix (when they gave up wholesale on their idea of making anything other than BIOSes) and bought up by HP. However, that's where the trail ended; attempts to find out what, if anything, HP had done with it proved fruitless. That is, until two days ago.
----------------------------------------
When researching an only tangentially related subject (the Dell Latitude Z600, which runs a completely different instant-on linux) I stumbled across a mention of HP QuickWeb, described as another fast-booting Linux distro. Digging into this, I uncovered quite a shocking amount of information I had managed to miss before, on account of there being no standardized terminology for any of this stuff.
The discovery process on all of this happened so quickly that I don't really want to drag it out the way I did in the previous post. Once I knew the terminology, it took me maybe six hours to make it from beginning to end. The journey is less important than the destination in this leg of the story, so let me just summarize much of it, broken up into Important Data Nodes:
* HP did in fact buy Hyperspace in late 2009 - but they didn't do anything with it right away.
* Prior to the acquisition, they already had an instant-on Linux - one based on Splashtop, under the name QuickWeb.
* It's amazing that I missed this, because they sold it across their whole range for several years. Netbooks (Mini 210), consumer machines (Envy 13/14), business (Probook 4730s, 4530s, 4430s), executive (Elitebook 8540w, 8440p) - and these are just some examples. There were many more. I was able to walk into RePC the day after I learned about this and walk out with two machines that support it, that's how common it was.
* Laptops with QuickWeb support have a little button with a globe icon that boots QuickWeb instead of your normal OS. Note that not all HPs with globe buttons can do it; on some, that button just opens a web browser within Windows. There is no way to tell which is which. For instance, the Elitebook 8460 and 8470 look exactly identical, but only the former supports QuickWeb.
* A couple years after the acquisition (AFAICT) HP finally decided to do something with Hyperspace: They quietly replaced the existing QuickWeb with one based on Hyperspace, with no fanfare or announcement of any kind. I can find no information linking the two - the only way I was able to prove this was by downloading two revisions of QuickWeb, extracting them, and finding strings for Splashtop in one and Hyperspace in the other.
* As with the other Hyperspace (and Splashtop) implementations I showed in the previous post, the actual OS is completly uninteresting. In fact, it doesn't even have the unholy host filesystem access feature, or the office suite, or the ability to save files at all. It's simply a web browser, Skype, an email client, and some news and stonks widgets.
* Additionally, HP did not base their implementation on Hyperspace Hybrid or Dual. It's the very basic version: a fast-boot Linux that dual-boots with Windows.
* It is not, however, a conventional MBR-type dual-boot setup, nor is it using Phoenix's wacky hidden BEER partition table nonsense. Instead, the OS is simply stored as files on a FAT32 partition called HP_TOOLS; it's not even hidden, the user can see it in Windows.
* Since this era of HP laptop had early UEFI, and UEFI can read FAT32, they used custom firmware code to just look for a partition with that specific name, then it finds "HP_TOOLS\QuickWeb\QuickWeb.efi" and boot it. EFI is a big step in making the PC more boring (good meaning)
Okay, let's have some pictures.
Photo of the Quickweb button on an HP laptop [https://gekk.info/articles/images/quickweb/quickweb-buttons-2.jpg]
This is the "globe" button. As noted, it doesn't mean a machine definitely has QuickWeb.
Photo of a laptop running HP QuickWeb, showing a "desktop" full of "widgets", such as a photo album and recently visited pages, as well as a summary of email messages, and a series of shortcut icons at the bottom to a web browser, music, photo viewer, Skype, chat app, and calendar [https://gekk.info/articles/images/quickweb/quickweb-2.jpg]
This is Quickweb - specifically, a version I haven't yet been able to locate. This is from an old blog post. It's obviously Splashtop-based, since it's clearly branded in the screenshot, but it seems to be much closer to the original offering, with a widget based "desktop" and a number of bundled apps including Skype, chat, email, music and a photo viewer. I found a couple other screenshots that make it clear that the latter two apps are still the terrible Adobe Flash crap that they were selling in 2009.
I have seen references in HPs docs to QuickWeb version numbers, but no clear rubric. I suspect that this version is "QuickWeb 1," the next one is "QuickWeb 2", and the Hyperspace version is "QuickWeb 3."
Photo of a laptop running HP QuickWeb, showing the about page for a web browser that takes up the whole screen [https://gekk.info/articles/images/quickweb/quickweb-1.jpg]
The above is what I suspect was "QuickWeb 2." It says version 1, but who knows whose numbering scheme that is. It's still Splashtop-based, but HP has removed the branding. I was able to install it on a machine (EliteBook 8440p,) but it seems to have absolutely no features other than a web browser - this is the sole UI. It appears to be a huge downgrade, reason unknown.
Photo of a laptop running HP QuickWeb, showing a very different widget "desktop" with CNN news headlines, sticky notes, stock ticker, clock, weather, and a calculator widget, as well as a search/address bar for launching a browser [https://gekk.info/articles/images/quickweb/quickweb-3.jpg]
This is the Hyperspace version, which I think is "QuickWeb 3." Functionally, it's a middle ground; it has Skype and email, plus these widgets (which, again, still work; I connected to wifi and both the CNN and BBC headline widgets populated.) Otherwise, it is still very barebones, not much better than "QuickWeb 1" from the looks of things.
As noted, there is nothing worth discussing about the OSes themselves. It's mostly just fascinating that Hyperspace continued to have a life at all, and kind of a disappointment that HP's vision of its future didn't include any of its advanced implementations, and in fact didn't even include the office suite or anything that made it more interesting than Splashtop.
Anyway, let's get into the new shit [https://www.youtube.com/watch?v=S79XB-mTstA].
THIS IS THE NEW SHIT
While investigating QuickWeb, I began finding mentions of something called QuickLook. At first, it wasn't clear if this was two names for the same thing, but it became apparent that QuickLook was a distinct product, because I learned that certain models (e.g. EliteBook 8440p) had another separate button for launching it.
Let me reiterate: Certain HP laptops have three power buttons that launch different OSes. That slaps all on it's own.
But what is Quicklook?
A laptop screen with a blue banner proclaiming 'HP Quicklook', and an error message in many languages stating that no user information was found [https://gekk.info/articles/images/quickweb/quicklook-1.jpg]
It's not an "OS." It's a program. Literally - it turns out to be "HP_TOOLS\QuickLook\QuickLook.efi", a standalone EFI application. Normally you only see those in the form of OS bootloaders, BIOS config utilities, or maybe a very limited motherboard/laptop vendor recovery or firmware flashing tool. But EFI apps are just binaries, and EFI is a limited "OS" that provides a set of libraries, so you can conceivably write many complex programs to run inside of it.
HP decided to write Outlook.
A laptop screen with the same "HP QuickLook" banner, but now the rest of the screen displays a clean, businesslike blue-on-white calendar view. There are icons to add and delete calendar events, and one event exists, labeled "Meeting with Steven Job." A sidebar displays calendars spanning three months, and another sidebar displays details on the current event [https://gekk.info/articles/images/quickweb/quicklook-2.jpg]
The same QuickLook app, except an email composition dialog is open, featuring the usual MVP (to, CC, Bcc, subject and body fields; Save to Drafts; Signature) [https://gekk.info/articles/images/quickweb/quicklook-3.jpg]
QuickLook is an email and calendar app that you can launch directly instead of booting a normal OS. I need to stress that, as far as I can tell, this is not Linux, this is not DOS, this is not anything. This is a bespoke standalone program, written in C (there are .c files mentioned all throughout the .EFI, which is just a Windows-format .EXE with a different name.) It leverages EFI's basic mouse/keyboard/graphics APIs, like "Absolute Pointer Protocol" and "Graphics Output Protocol."
To reiterate, because I need to know you understand: HP wrote an email/calendar client completely from scratch that runs inside your system's BIOS.
The button strip on an Elitebook 8440p, showing the power, QuickLook and QuickWeb buttons [https://gekk.info/articles/images/quickweb/quickweb-buttons-1.jpg]
When you press the QuickLook button (the left blue icon above; the right is QuickWeb), the machine powers on, POSTs, and then hard code in the EFI firmware checks for an attached hard drive with a partition called HP_TOOLS, then boots straight into Quicklook\QuickLook.EFI, and then that is what is running on your machine. Not Windows, not Linux. Your PC is natively running QuickLook.
So, how does it handle networking, SMTP/IMAP, and all the complexities of Outlook, without actually being Outlook? How does it read and write to your .OST database on your main NTFS partition without risking corruption? Well, n
Chamber 🏰 of Tech Secrets #5
Is there still a place in this world for Architects?
The Law of Stretched [Cognitive] Systems
The law of stretched systems, and how it may also apply to cognitive work, and our ability to deal complexity, such that any improvement is instantly exploited and we forever operate at the edge of understandability
Statement from the listed authors of Stochastic Parrots on the “AI pause” letter
The Distributed AI Research Institute is a space for independent, community-rooted AI research, free from Big Tech’s pervasive influence.
My Bad Opinions
Fred Hebert's blog about some garbage ideas and programming things
Ironies of Automation
This paper discusses ways in which automation of industrial processes may expand rather than eliminate problems with the human operator. ...
Paper: Ironies of Automation
I can't believe I had not yet posted notes about this absolute classic and fundamental paper from Lisanne Bainbridge titled Ironies of Automation [https://ckrybus.com/static/papers/Bainbridge_1983_Automatica.pdf]. The author has a website where she posted her own revision of it [https://www.complexcognition.co.uk/2021/06/ironies-of-automation.html] almost 40 years after publication, and it's worth giving it a glance. It has over 1800 citations, its own Wikipedia page, and is just an unavoidable part of any literature that concerns itself with automation.
The core thesis of the paper is that automated systems always end up being human-machine systems regardless, and even as you automate more and more, human factors keep being of critical importance. The examples in it come from control processes in industry and flight deck automation, but are still very much applicable today. The paper is demonstrating this with a long list of ironies, and then some methods to try and tackle them.
At the center of it all are two basic requirements of automated processes: the need for someone to monitor whether the automation is behaving correctly, and the need for someone to take over if it does not. These two requirements are fundamentally clashing with some things we use automation for.
The first reason for this comes from cognitive and manual skills, both of which erode over time when not used. You can consider higher expertise as having the ability to operate more efficiently and in a smoother way. When your operators spend all their time monitoring a process and they finally need to intervene, their skills may have eroded to the point they are less experienced than they really are.
Specifically, the better the automated process is, the more unusual (and rarer) the conditions in which your operator will need to take over will be. This means that you should expect your operators to be more skilled the better your automation is, because they'll handle trickier situations with far less practice.
This is also true of cognitive actions where skills are better developed when you have quick, frequent feedback. So when you are first rolling out your automation, your operators are probably carrying solid skills that have been honed through more manual processes. But after a certain time, your next generation of operators will not have had the benefit of fast-feedback to the same extent and you may end up having to expect them not to be able to do as much, as effectively. The recall of which action best handles a situation will need to be more deliberate, less automatic, and slower.
Speaking of which, because your operators will be monitoring rare anomalies, vigilance will be an issue; people only look at data they regularly use and so you'll need automated alerts. But the more complex the system and the faster the required corrective action, the more alerts you might need; the more alerts you have, the more confusing the situation might become (I've posted notes on alert design before).
This segues nicely into a serious irony: people automate processes with the expectation that the automation will work better than people, yet people will be asked to find and correct errors with the automation:
if the decisions can be fully specified then a computer can make them more quickly, taking into account more dimensions and using more accurately specified criteria than a human operator can. There is therefore no way in which the human operator can check in real-time that the computer is following its rules correctly. One can therefore only expect the operator to monitor the computer's decisions at some meta-level, to decide whether the computer's decisions are 'acceptable'. If the computer is being used to make the decisions because human judgement and intuitive reasoning are not adequate in this context, then which of the decisions is to be accepted? The human monitor has been given an impossible task.
Similarly, a process that has automation aiming to assist an operator by covering and self-correcting may hide underlying problematic conditions in ways that once the automation reaches its limits, trends become apparent once they are already beyond control.
The implication here is that if humans are your fallback, your automated system should ideally be running at a pace convenient for people:
If the human operator must monitor the details of computer decision making then, ironically, it is necessary for the computer to make these decisions using methods and criteria, and at a rate, which the operator can follow, even when this may not be the most efficient method technically. If this is not done then when the operator does not believe or agree with the computer be will be unable to trace back through the system's decision sequence to see how far he does agree.
In terms of failures, Bainbridge recommends that manual shutdowns be your preferred way of dealing with issues: stop things, look, understand, fix, resume. This isn't always possible however (think of nuclear power plants, or of airplanes in flight). For slow failures, the operator can likely buy time with thoroughly practised responses that become almost like a reflex, but for fast failures that propagate faster than people can act, you need to invest in making automated reliable responses. If you can't or the consequences are too bad, she simply advises that you shouldn't build that system.
To keep people apt and current, she recommends that operators frequently run some steps manually just to remain familiar. If that isn't acceptable, she suggests working with simulators. The gotcha here is that if you want fast automated actions, the simulator must be high fidelity and support dynamic situations. She adds:
Unknown faults cannot be simulated, and system behaviour may not be known for faults which can be predicted but have not been experienced [...] No one can be taught about unknown properties of the system, but they can be taught to practise solving problems within the known information. It is inadequate to expect the operator to react to unfamiliar events solely by consulting operating procedures. These cannot cover all the possibilities, so the operator is expected to monitor them and fill in the gaps. However, it is ironic to train operators in following instructions and then put them in the system to provide intelligence.
Another irony is that therefore, the most automated systems covering the most use cases are specifically those that require the most investment in training.
Whenever criteria other than raw efficiency are needed, Bainbridge predicts that human involvement will be required, particularly when the public wouldn't accept high-risk systems without a human component. This makes her state that framing humans and machines as teammates is pretty much the only way to go, but there are tricky ways to go. For example, while the computers could give the human a list of actions, if the computer is trusted for that part it should also be trusted for automating those it can rather than just asking the other to execute them.
In terms of "correcting" "human error", she mentions that it's better to put checks on effects of actions, rather than on whether specific actions are taken whenever acceptable, because it leaves room for the operators and practitioners to pick and alter strategies to meet their goals, for example. She covers some material about the use of electronic displays and how they could compare with direct hardware monitors in industrial processes, and mentions issues around how context-sensitive operating modes can be and how they may call to different processes (skills, rules, and knowledge).
She concludes that the problem does connect to team work, and that one must remain aware of the costs of production pressures:
The human being must know which tasks the computer is dealing with and how, Otherwise the same problems arise as in human teams in which there is no clear allocation of responsibility.
[...]
Humans working without time-pressure can be impressive problem solvers. The difficulty remains that they are less effective when under time pressure. I hope this paper has made clear both the irony that one is not by automating necessarily removing the difficulties, and also the possibility that resolving them will require even greater technological ingenuity than does classic automation.
Hands On: Get Started With Infura and the IPFS on Ethereum
by Niharika Singh Hands On: Get Started With Infura and the IPFS on Ethereum Why Infura? There are a lot of pain points being faced by blockchain which may be solved by Infura and/or the InterPlanetary File System (IPFS), to some extent. These are the main challenges: 1. It’s
Is generative AI the next Segway? - Coda Blog
The Segway was once predicted to revolutionize human transportation. Explore two social factors that hurt the adoption of the Segway and their parallels to AI.
DoD Software Factories Take Charge of Their Digital Destinies
Software factories across the U.S. Department of Defense illustrate what's possible in developing applications and services across multiple clouds.
Why the Amazon “six-page meeting” process doesn’t work | LinkedIn
You're Already a Distributed Developer
For many coders, the idea of distributed systems development might seem like a dark art. But you're already a distributed developer.
Tanenbaum–Torvalds Debates, Part 1
The Everything Headset
In the run-up to WWDC 2023, reporting about Apple's forthcoming AR/VR headset have really begun to heat up. In this week's Power On newsletter, Mark Gurman wrote a bit about how Apple may pitch the device to customers and developers. Forgive the long block-quote, but I think it's important to go over what he believes [...]
AI has a metadata problem…
Artificial intelligence (AI) has become a captivating and transformative field, capturing the imagination of individuals and industries alike. As I immerse myself in the world of AI, I feel, as many, awed by its potential to revolutionize the way we live and work.
C vs. Go: Comparing programming languages
Use a simple counting program to compare the venerable C language with modern Go.
Well-maintained Software
Two months ago, I was a guest on the Maintainable podcast. The first question the host Robby Russell asks is “What are a few characteristics of well-maintained software?”. This is such …
Immutability Changes Everything
We need it, we can afford it, and the time is now.
A Brief History of Ruby
There are people saying Ruby is dead, while others use it widely in their companies. Let's dive into the history of Ruby.
Beyond Buzzwords: How IoT, Big Data, and Machine Learning are Transforming Businesses
The convergence of IoT, Big Data, and Machine Learning is changing the way businesses operate, and it's only starting.
In Perspective
In Perspective Software Development, API development, Indutrial IOT
"Can't Code! Not inclined to Hire?" - Why Engineering Managers Don't Need to be Great Coders
An explanation of why managers do not need to code, and probably shouldn't.
Internet Culture Turning Points: What We Can Learn from the Past
Online culture sure feels like it’s in a transition phase, doesn’t it? To understand what we learned this week, let’s compare it to some prior digital shifts.
Time Machine got weirder
Apparently if you put Time Machine on a USB APFS drive instead of HFS, it does crazy shit. I guess it's hidden in a secret partition, and when you list the volume, only the most recent copy is visible? Can someone explain to me the relationship between these directories: /Volumes/Time\ Machine/*.previous /Volumes/.timemachine/*/*.backup (mostly empty directories, but one is a weird mount ...
Leverage the richness of HTTP status codes
If you’re not a REST expert, you probably use the same HTTP codes over and over in your responses, mostly 200, 404, and 500. If using authentication, you might perhaps add 401 and 403; if using redirects 301 and 302, that might be all. But the range of possible status codes is much broader than that and can improve semantics a lot. While many discussions about REST focus on entities and methods, using the correct response status codes can make your API stand out. 201: Created Many appli
My Journey From a Freelance Developer to a Fractional CTO - Andrej Gajdos
How I moved from freelance developer to tech lead roles such as software architect, Tech Lead, and fractional CTO.