Think Different

I wrote a couple years ago that the move to Apple Silicon (and accompanying lock-down of their hardware ecosystem) was a last straw for me as a Mac user (and long-time fanboy.) I still have some Macs, but haven’t — and will not — moved beyond Intel:

An Intel Mac Mini provides our home web and media server, Nic’s laptop is an Intel MacBook, and my “big iron” workstation is a heavily upgraded Intel Mac Pro 4,1 (with 5,1 firmware). But none of those are daily drivers for me, so since Apple’s big move, I’ve been on the hunt for alternate hardware.

Admittedly, its hard to top Apple’s build quality and industrial design, but the legendary ThinkPad used to provide a real competitor to the PowerBook, and my experiences with that lineup were always positive. Of course, IBM doesn’t make the ThinkPad any more — they sold the brand to Lenovo, but that company has proven a good steward.

I now have 3 ThinkPad devices — all circa 2016-18. Each are nicely designed, with comfortable keyboards, and rugged exteriors. Unlike modern MacBooks, all are eminently repairable — the bottom comes off easily, usually with captive screws, giving ready access to the storage, RAM and in two-out-of-three cases, the battery. My smallest ThinkPad, a X1 Tablet, is a lot like the Microsoft Surface (itself an entirely un-repairable device) and it took a little more delicacy to replace its battery — but at least a dead battery didn’t render the entire machine garbage.

Aside from the highly portable tablet, my work machine is a X1 Yoga, with a 180 degree hinge that lets you use it as a laptop or a tablet, and my personal dev box is a X1 Carbon. The Carbon makes an excellent Linux machine, with 100% of the hardware supported by Lenovo themselves (save for the finger-print reader, which took a little effort, but works fine), and all-day battery life.

The X1 line-up does signify a higher-end positioning — I’m sure the consumer-grade devices are less premium, and of course, I can’t speak to the software preload if you buy new (and really, you shouldn’t — these are 10+ year machines) — but Lenovo’s update software is helpful after a fresh OS install, unobtrusive, and easily removed. Only my oldest X1 is officially out-of-support, the rest are still getting BIOS, firmware and driver updates.

I wanted to buy a Framework tablet, because I love the idea of a company focusing on modularity and serviceability, but for the time being, they’re out of my price range. For less than the price of one new machine, I was able to refurbish 3 older, but high-end ThinkPads for different uses.

While we’re on the topic of eschewing popular hardware, Kobo is worthy of an honorable mention. Having worked on Kindle, and being a user for so long, I have to admit that I was largely unaware that alternatives existed. But as the battery of my beloved Oasis 1 (the two-part Kindle with removable battery cover, code-named Whisky-Soda) began to die, I decided to try an alternative that fed less into Amazon’s push toward world-domination.

Kobo is backed by a Canadian company. Their hardware is perhaps a little less premium than the incumbent, but a used H2O (water-proof) is entirely satisfactory physically, and its software is quite delightful. Open-format ePub books are natively supported, opening up a wide variety of alternate content providers, and its Public Library integration is excellent. From the device you can browse your library, take out, and even renew books.

The accompanying mobile app, so you can sync up and read from your phone, is maybe not as good as Amazon’s, but it does the job. And since I can read ePub natively, there’s many other platforms I can read on as well.

Reading on Kobo isn’t really much more friction than reading on Kindle, but I understand if its not for everyone. Kindle is a great platform — as long as you can rationalize the behavior of its parent company. X1 ThinkPads, however, get my unqualified endorsement as a great portable computing platform for anyone. They’re perhaps a little bland, compared to a flashier Mac, but they’re dignified, easily repaired, and built in a way that promises a long, reliable, and no-nonsense useful life. Next time you’re in the market for a computer, consider buying something you won’t have to throw away when its battery dies…

Growatt Shine WiFi Not Connecting to Server

If you found a deal on a Growatt Shine WiFi adapter for your Solar Inverter, but are having trouble adding/viewing it on the Growatt Dashboard — and you live in the US, the problem is solved by changing the default server.

Put your Shine WiFi module in Hotspot mode (briefly press the button), then connect to its Hotspot from a PC (the name of the Hotspot will match the serial number of your Inverter). Now go to the “Advanced Setting” and change the server name to: server-us.growatt.com

Once the changes are confirmed, save and restart the WiFi module. Within a couple seconds, you should be able to add or view the Data Logger in the Dashboard or phone app.

The Solar Shed EV Charger

We got an electric car in 2021 — after years of pining for a Tesla (and cringing at the price tag), we picked up a used BMW i3 for a song. Putting a charger in the garage was remarkably cheap, since there was a dryer on the other side of the wall (although the circuit won’t run both the dryer and the car charger!) and we estimate a full charge costs somewhere around $2-3. This is a short range vehicle, and its saved us a bundle on gas so far, but what if there was a way to save even more…

Let me skip to the end: there is not — but it was fun trying!

The idea was that we could build a system for minimal cost, buying extra panels from friends with bigger solar projects underway, and reverse engineer their setups to do the work myself. That part of the plan panned out: panels cost $800, and I fumbled my way through learning the electrical work — without frying myself!

We bought a decent off-grid inverter (not cheap)… then learned it won’t even power up with a battery. Batteries start at around $2000, but when we found one on sale for $1600 shipped, we went for it. After more than a year of piecing together the system, this week it finally powered up…

So between hardware and wiring, all told, the system probably cost about $4000. But does it work?

Kinda…

I’m still a newbie at all the electrical terms, so I won’t try to talk KWh or Amps, but the i3’s battery is roughly 3 times larger than my single solar battery. Now assuming the sun is shining, and the solar battery is being charged at least as fast as the car is pulling out power (limited to 16amps by the charger), in theory it might be possible to keep up. In practice, I don’t have enough panels to keep up the throughput, or enough storage to offset it.

I do have room for another row of panels, and next time I have a spare cash, I could chain another battery into the system. But I think, at least for now, this is as far as this project is going to go. Doubling the capacity of the system still won’t fully charge the car, or run the house. However, even at its current scale, there’s some value here:

1) We can top up the car during the day
The EV (which we call the “tiny car”) is primarily a shuttle to town and back. On a good day, we can do 4 runs on a charge. Now we can do 5 — more, if its sunny enough, and schedules allow for a morning and afternoon top-up.

2) We have another back-up power source
We live in the country, which means we lose power. Its just a fact of life out here, especially in the winter. We have a good sized portable generator, but running on gas is expensive and noisy. For simple needs, or true emergencies, we can use solar power with a little planning.

3) I learned a lot
We really did do almost every ourselves — although not without plenty of advice from friends who have done this before. We mounted the panels, we ran the wires (backwards, at least a couple times), I connected and setup all the system components, and even installed a circuit breaker box and some household wiring in the shed. Most of my tech experience is software, so learning how things are built is always fascinating.

4) I’ll be learning more
The battery and inverter speak an industrial protocol called ModBus. The inverter also has a Cloud API. I fully intend to connect to, and exploit, the data in these systems for learning and professional gain.

So, the direct ROI is not there. Even if we could fully charge the car with this system, at $3 per charge, it would take 1,333 charges for it to pay off. We can’t, so ROI is closer to 7000 charges — that’s 19 years. The car won’t last 19 years!

But as passion projects go, this one was actually a lot of fun. Solar is probably still too costly and complex for the average person right now. But its getting better constantly, and I think having access to, and understanding of, alternative power sources is important for our future. We can’t keep things going the way they are

Usefully Wrong – The Problem with Generative AI

For the past decade, the tech world has been in a desperate search for the “next big thing.” PCs, the web, smart phones, and the Cloud have all sailed past their hype curve and settled out into commodities, new technology is needed to excite the consumer and liberate that sweet, sweet ARR.

For awhile, we thought maybe it was Augmented Reality — but Google only succeeded in making “Glassholes” and Microsoft’s Hololens was too clunky to change the world. Then we had 2022’s simultaneous onslaught of “metaverse” and “crytpo”, both co-opted terms leveraged to describe realities that proved to be entirely underwhelming: crypto crashed, and the metaverse was just Mark Zuckerberg’s latest attempt at relevance under a veneer of Virtual Reality (Hey Mark, the 90s called and wanted you know that VR headsets sucked then, and still suck now!)

But 2023 brings a new chance for a dystopian future ruled by technology ripe to abuse the average user. That’s right, Chat is back, and this time its with an algorithm prone to hallucinations!

The fact is, we couldn’t be better primed to accept convincing replies from a text-spouting robot that can’t tell fact from fiction: we’ve been consuming this kind of truthiness from our news media for the past 15 years! And this tech trend seems so great that two of the biggest companies are pivoting themselves around it…

Microsoft, while laying off thousands of employees from unrelated efforts, is spending billions with OpenAI to embed ChatGPT in all their major platforms. Bing always wanted to be an “answers engine” instead of a search engine, now it can give “usefully wrong” answers in full sentences! Developers can subscribe to OpenAI access right from their Cloud developer portal. Teams (that unholy union of Skype and SharePoint) can leverage AI to listen to your meetings and helpfully summarize them. And who wouldn’t want a robot to write your next TPS Report for you in Word, or spruce up your PowerPoints?

I have to prove I’m a human before I’m allowed to talk to an AI. Does that count as irony?

Google, who had been more cautious and thoughtful in their approach, is now full steam ahead trying to catch up. Google’s Assistant — already bordering on invasive and creepy — has been reorganized around Bard, their less-convincing chat AI that still manages to be confidently incorrect with startling frequency.

The desperation is frankly palpable: the tech world needs another hit, so ready or not, Large Language Models (LLMs) are here!

That everyone on the inside is fully aware that this technology is not done baking is entirely lost on the breathless media, and a new generation of opportunistic start-ups looking to capitalize on a new wave of techno-salvation. ChatGPT 4 really is impressive in its ability to form natural sounding sentences, and most of the time, it does a good job in drawing the correct answer out of its terabytes of training material. But there’s real risk here, when we conflate token selection with intelligence. The AI is responding to itself, as much as the user, trying to pick the next best word to put into its reply — its not trying to pick a correct response, just one that sounds natural.

Like most technology, the problem is that the average user can’t tell when they’re being abused. YouTube users can’t tell when an algorithm is taking them down a dark path — they’re just playing the next recommended video. Facebook users can’t tell when they’re re-sharing a false narrative — they just respond to what appears in their feed. And the average ChatGPT user isn’t going to fact check the convincing sounding response from the all-intelligent robot. We’ve already been trained to accept the vomit that the benevolent mother-bird of technology force-feeds us, while we screech for more…

I’m not saying ChatGPT, Bard and other generative AI should go away — the genie is out of the bottle, so there’s nothing that can be done about that. I’m saying that we need to approach this technology evolution not with awe and wonder and ignorance, rushing to shove it into every user experience. We need to learn from the lessons of the past few decades, carefully think through the unintended consequences of yet-another-algorithm in our lives, spend time iterating on its flaws, above all, treating it not as some kind of magic, but as a tool, that used intelligently, might help accelerate some of our work.

Neil Postman’s 1992 book “Technopoly” has the subtitle “The Surrender of Culture to Technology.” In it, he asserts that when we become subsumed by our tools, we are effectively ruled by them. LLMs are potentially useful tools (assuming they can be taught the importance of accuracy), but already we’re speaking of them as if they are a new form of intelligence — or even consciousness. A wise Jedi once said “the ability to speak does not make you intelligent.” The fact that not even the creators of ChatGPT can explain exactly how the model works doesn’t suggest an emergence of consciousness — it suggests we’re wielding a tool that we do not fully understand, and should thus exercise caution in its application.

When our kids were little, we enjoyed camping with them. They could play with and learn from all the camping tools and equipment except the contents one red bag, which contained a hatchet, a sharp knife, and a lighter; we called it the “Danger Bag” because it was understood that these tools needed extra care and consideration. LLMs are here. They’re interesting, they have the potential to help us, and to impact the economy: already new job titles like “Prompt Engineer” are being created to figure out how to best leverage the technology. Like any tool, we should harness it for good — but we should also build safeguards around its misuse. Since the best analogies we have to technology like this have proved harmful in ways we didn’t anticipate, perhaps ChatGPT should start in the “Danger Bag” and prove its way out from there…

Jelly 2 – A phone that fits in your pocket

In 2018 I started tinkering with a dead mobile platform I’d long had an affinity for. I briefly had one of the devices around 2012 — only shortly after the platform was killed off, a tiny little phone called the HP Veer. It was a remarkably capable smart phone with a slide-out keyboard in a sleek but diminutive form-factor. I didn’t keep it long, since I was at work on a competitive platform, but it amazed me with some of its almost clairvoyant UI decisions.

I got another one in 2019, then a tablet that ran the same OS, then a few more variations of the phone, then a few more tablets… at the time, you could get them for a few bucks on eBay, and they were remarkably delightful. But no new apps had been developed for them for years, and all the back-end infrastructure was gone. So I found some old websites, joined the still-active forum, even bought a couple books, and started to learn how to create things for the platform again…

This remained an occasional hobby until the pandemic hit, and suddenly we were all stuck at home, with nowhere to go and lots of time to kill. And I started to think about how I could really make this little museum of mobility useful around the house. Throughout the pandemic, I restored the SDK, set-up a Discord server for the remnants of the community, re-assembled an App Store from code, archives and repositories from previous users, updated a long-dead podcast app and created a new directory service for it, built a proxy so old devices could use the modern web, and developed more than a dozen brand new apps for it, with regular updates and features based on community feedback. It became a little ecosystem again, because a few people invested in it. I even used a Veer as a daily driver until the 3G shutdown happened.

We’ve all kind of accepted our fate when it comes to smart phones. Apple and Google make the OS, control the app ecosystem, and we get to choose from a virtually identical selection of slabs as our hardware, made by one of three vendors, all competing to make bigger phones every year, without adding any new features except evolutionary improvements in the cameras. Its not just boring, its stupid. Why do people keep buying the same thing? What happened to innovation and creativity and new ideas?

As my platform development hobby ran its course, I started looking for alternatives. There are a few early-stage efforts out there. I ran Jolla’s Sailfish OS on a Sony Xperia, tried out Ubuntu Touch on my Pixel 3a, entertained the idea of buying a Blackberry Key2 (another dead platform), and got LuneOS running on a Nexus 5. All contain promising ideas, but all lack an ecosystem that could really help them compete — their best chance lies in an Android compatibility layer, giving them access to apps from Google’s fiefdom. The closest-to-viable alternative was GrapheneOS, a de-Googled Android distro that was fully complete on my Pixel — once I added back Google look-a-like services.

But even with some OS choice (or the illusion of it), the hardware options were still boring. Until I bought my Jelly 2…

Here it sits, with my daughter’s iPhone XS to the left, and my iPhone 12 mini to the right. Its obviously distinctly small — and that’s a good thing. Compared to the Veer, it lacks the slide out keyboard, but has a taller screen, slightly narrower body, and a fatter depth which allows for a decent battery.

Its from a Chinese manufacturer, Unihertz, and previous experience with Chinese hardware left me a little wary, but so far I’m pretty impressed.

The OS is a relatively clean Android 11. Their customizations and pre-loads are lightweight, and mostly there to exploit the unique hardware characteristics. The phone has an indicator light that you can configure to alert you of only the types of notifications you want. It has an extra programmable hardware button, and an infrared port — the accompanying app let’s you control a massive range of devices. (I was alone in a waiting room recently, with a TV blaring in the corner, its hardware controls disabled, so I quickly configured my Jelly to “learn” the TV then muted it for some peace and quiet!) The phone also came with an app, usually only available to those with root access, that allows you to clone NFC cards — a delightfully hacker-like tool that can just as easily be used for evil and good!

Other hardware features include a battery that lasts all day, even with fairly demanding use, and an actual headphone jack (don’t let Apple tell you they don’t have room in their massive phones for a headphone jack, when this diminutive little phone handles it with aplomb!) Touch-sensitive hardware buttons ensure you don’t have to struggle with awkward gestures on the tiny screen, and harken back to an era where industrial design served the user, not the other way around. And the camera is fine — not 8 billion gigapixels with multiple protruding lenses and AI powered optimization — just a workable camera that takes decent pictures in most lighting. Since I’m not an Instagram influencer, its really all I need.

In fact, for most people, I think something like this is really all they need. I get that its too small for most, but I appreciate someone pushing in a direction opposite the trend to put tablet in our pockets. There’s also the reality that Unihertz probably isn’t big enough to keep up to date with Android updates, and there are some security considerations. But then, the Veer hasn’t been updated since 2011, and I never had any issue there — not having many apps installed (or many apps to install) is a great way to keep your threat surface small! Unihertz also included a platform-level firewall, allowing you to restrict or disable Internet access on a per-app basis.

I’m not done trying out unusual hardware — I have my eye on a Japanese phone next. But this is the closest thing I’ve found to replacing the friendliness and fun of my Veer, and I’m pretty happy to have a small smart phone that fits in my pocket again.*

*I also tried the “Palm” PVG100 (aka Pepito), which is totally pocketable. It didn’t get a write-up here because its battery couldn’t make it through the day. It was a nice idea that flopped in execution, and as fun as it was to hold, I wouldn’t recommend it — to anyone.

Machines That Think

Over 7000 people read Part 1 of this little diatribe. I didn’t do much to pimp it on social media, but someone did on my behalf, and it kinda blew up. I’m gratified, but not surprised, that it struck a chord. I think we’re all aware that technology is not being optimized for the benefit of the consumer very much any more. Human decisions, influenced by a need to create shareholder value, have a general tendency to evolve toward inhumane interfaces

So what if we took the human out of the equation? The apparent rapid evolution of “AI” in 2022 has the press, once again, predicting that machines will be able to replace us in fields ranging from software development to the creation of art. And indeed, there have been interesting outputs to point to recently…

ChatGPT explains why you should eat glassChatGPT took the world by storm with natural-sounding responses to human prompts, apparently indistinguishable from human-created prose. That the responses were often nonsense wasn’t immediately noted, because they sounded good. We’ve been creating machines that can simulate human intelligence for so long that there’s a common test for it, named after pioneering computer scientist Allen Turing. And computer’s have been fooling people almost since that test was created! I remember “chatting” with Eliza on my Atari 800XL — and at the time, finding it very convincing. ChatGPT is obviously miles ahead of Eliza, but it’s really the same trick: a computer, provided with a variety of human responses, can be trained to assemble those responses in very natural ways. Whether those responses are useful or not is a separate matter that doesn’t seem to enter the discussion about whether or not an AI is about to replace us.

An example closer to home for me is the notion that AI will soon be doing software development. Last year, Microsoft released a feature to GitHub called Copilot (“Your AI pair programmer”) which, combined, with marketing buzz about “no code/low code” software platforms, has an ill-informed press convinced that soon computers will program themselves! Certainly it makes for interesting copy, but Copilot is really the same trick as ChatGPT: given enough human-created training data, a machine learning algorithm can select matches that are often a natural fit for a prompt. When the computer scores a good match, we’re amazed — this machine is thinking for me! When it produces nonsense, we attribute it to a mistake in reasoning, just like a human might make! Only its not a mistake in reasoning, its a complete inability to reason at all

Where AI impresses me is in the abstract: art sometimes reflects reason, sometimes obscures its reason, and sometimes has no reason. Part of the beauty of beholding art is the mystery — or the story that reveals its mystery. It’s the reason Mona Lisa’s smile made her so famous. Art doesn’t need to explain itself. When we look at the output of AI this way, I can be more generous. AI can be a tool that helps generate art. With enough guidance, it can generate art. But AI does not replace artists, or the human desire to create art. AI-created works can be appreciated as well as human-created art, with no threat to the experience of the beholder. (And, it should be noted, no real threat to the human artist. We’ve yet to see the spontaneous creation of AI-generated art — its all in response to prompts by humans, drawing on training data provided by humans!)

Civil War Muppet images generated by AI
Civil War Muppets, as imagined by AI

AI-created user experiences, however, have proven to be fraught with danger. YouTube’s recommendation algorithm easily becomes a rabbit hole of misinformation. Tesla’s “Full Self Driving Beta” has a disturbing tendency to come to a complete stop in traffic for unexplainable (or at least unexplained) reasons. There are domains of AI where human input is not just desirable, it must be required.

In the same way that the rush to add WiFi to a dishwasher will probably only shorten the useful life of an expensive household appliance, or that adding an online component to things that don’t need to be online will weaken the security posture and user experience those things offer, buying into the hype that AI is going to magically do things better than humans is foolhardy (and ill-informed.)

Tron images generated by AISomeone asked an AI to imagine what Jodorowski’s interpretation of Tron might look like. The results are stunning! I’d pay to see that movie — even if it included bizarre AI-generated dialog, like this script. And if GitHub Copilot can make it easier to wrap my head around a gnarly recursive algorithm, I’ll probably try that out. But these things depend on, and re-use, human training input — and remain lightyears removed from a General AI that can replace human thought. Anyone who reports otherwise has never had to train a machine learning algorithm.

Teaching an AI is not like teaching a baby. Both get exposed to massive amounts of training data, which their neural networks have to process and find the right occasion to playback, but only a human brain will eventually produce output that is more than just a synthesis or selection of previous inputs; it will produce novel output — feelings, and faith, and spontaneous creation. That those by-products of frail and unique humanity can be manipulated algorithmically should indicate to us that the danger of AI is not in the risk that it might replace us, supplant us, or conquer us. The danger is that humans may use these tools to hurt other humans — either accidentally, or with malicious intent — as we have done with every other tool we’ve invented.

We aren’t there yet, but maybe one day we will harness machine learning the way we harnessed the atom — or as a more recent example, the Internet. Will we continue pretending AI is some kind of magic we can’t possibly understand; surrendering to the algorithm and accepting proclamations of our forthcoming replacement? Or will we peer into the black box, think carefully about how its used, and insist that it becomes a more humane — a more human — creation?

Old Man Yells at Cloud

Technology has gotten objectively worse in the last few years.

I know I’m dangerously close to becoming an old man yelling at the Cloud. That every generation is uncomfortable with the next generation’s technology — everyone has a level of tech they’re used to, and things introduced later become increasingly foreign. But I’m pretty sure my perspective is still valid: I grew up with the Internet, I helped make little corners of it, and I still move fluidly and comfortably within most technology environments (VR, perhaps, being an exception.) So I think its reasonable for me to declare that cyberspace is kinda crappy right now. A few examples:

Video Games

When I was young, we jammed a cartridge in the Nintendo, and hit the power button and the game started. On a bad day, when it would glitch, we would blow in the cartridge believing we were getting dust out of it (most likely, it was just re-seating the game in its slot that did the trick.) Games were a diversion you could spend hours on, but also ones you could play for a few minutes between homework and bed time. The amount of time they sucked from you was a function of your free time, and your parent’s opinion on the healthiness of staring a glowing tube.

In contrast, the other day Ben and I had an hour together, and wanted to spend some time on a two-player game we’ve been working on. This is what happened when we put the disk in our modern gaming machine:

An hour of free time requires 45 minutes of downloading

Playing together now a means an hour of downloading content from an online service before the game even starts — and this particular game is an entirely offline one! There isn’t even a good reason to be forced to do this download. This is objectively a worse experience than I grew up with (and it costs a whole lot more too.)

Social Media

Its really hard to remember how wonderful Facebook was when it first took off. Its predecessor MySpace made a mess of both design and technology, but it created a place for people to connect. Facebook was a cleaner, more rational place where you could find long lost friends, old classmates, and connect with distant family. I have old phones where Facebook was still positioned as your online phone book — one that was illustrated by people’s latest profile photos, and animated by what they had shared most recently. Facebook was a data source for experiences, it brought personality to technology experiences, through its open APIs.

Now Facebook is pure poison, and its descendants, like TikTok, are tools of nation-state level manipulation. Your friends and family still connected this way consume and share misinformation in a self-affirming echo chamber of increasingly extreme bias and partisanship, while in the US, company’s buy and sell their data to shill crap, and in China, the government uses it to oppress and control. Social media is now an objectively horrible part of the Internet that no one’s children should use (and most adults — including billionaires — should probably abstain as well.)

Vehicles

My dad used to complain about power windows. I’m not sure if this was out of jealousy, because our 14 year-old Buick LeSabre had only manual windows, or if it was another case of an Old Man Yelling at a Cloud, but he would explain that in an emergency, he’d rather have the ability to crank down a window and get out of a car, than be trapped by a mechanism that wouldn’t work in an electrical failure. In truth, the evolution of vehicle technology has not been a good one over-all. Even nice-to-have features have been plagued by poor implementations, and dubious architectural decisions. But there was a point slightly before that of diminishing returns, when it was close to “just right.” A driving experience made more comfortable by technology, but not damaged by it.

New cars have everything on a touchscreen — like auto manufacturers noticed a trend from 2007 of phones moving to touchscreens, and decided a decade later that vehicle controls would benefit from the same evolution, never once considering that fumbling through a touchscreen UI in a rainstorm, trying to find the windshield wiper controls is an objectively worse experience than flipping a lever next to a steering wheel.

And if my dad thought power windows were a bad idea in an emergency, wait’ll he discovers what happens to a Tesla’s door handles if its battery dies (or worse, bursts into flames.)

The common trait amongst all these examples is its not actually the evolution of technology that has made things worse — its the application of that technology that has ruined everything. My modern Xbox is undoubtedly superior to a Super Nintendo in every technical aspect; but its not more fun. The number of humans connected to the Internet has increased, and their connection points have gotten faster, and that should be a good thing — but the tools given them to connect to each other have been optimized wrong, and the result is worse. And modern technology thoughtfully applied to cars is capable of amazing improvements to safety; but it can also be used with astounding stupidity.

I have more examples I’d like to talk about. Things like how Microsoft Office used to be a great product that you’d buy every couple years, and now its a horrible subscription offering that screws over customers and changes continuously, frustrating your attempts to find common UI actions. Or like how Netflix used to be a great place to find all sorts of video content on the Internet, for a reasonable monthly price that finally made it legal to stream. And now its one of a dozen different crappy streaming services, all regularly increasing their prices, demanding you subscribe to all of them, while making you guess which one will have the show you want to watch. I could rant at length about how “smart phones” have gotten boring, bigger, more expensive, and more intrusive, and only “innovate” by making the camera slightly better than last year’s model (but people buy them anyway!) Or how you can’t buy a major appliance that will last 5 years — but you can get them with WiFi for some reason! Or how “smart home assistants” failed to deliver on any of their promises — even the commercial ones — and only got dumber the more skills they added. I could rant about all that, and more, but I won’t, because this is all just a Preface for the real topic: AI, and how its not all its cracked up to be.

But I can’t do it here, because the algorithm that reviews my blog posts for readability says I’ve already gone on too long. So come back for Part 2

Serving HTTP to old devices and HTTPS to new ones

Devices that pre-date modern encryption are still on the Internet. They shouldn’t be used for anything that needs security, but there’s still valid use-cases for serving content to them.

Newer devices, on the other hand, are increasingly hostile to unencrypted content. The popular notion is that HTTPS helps reduce attacks — and while true, and important for many scenarios, the encryption (and related certificate) really only validate that last link in a very long chain of trust that web clients have to accept.

Assuming you have good reason to support both scenarios, Joshua Stein’s excellent post explores how serve both HTTP and HTTPS in nginx. A snip here for my own records, but credit goes to him:

server {
    ...
    set $need_http_upgrade "$https$http_upgrade_insecure_requests";
    location / {
        if ($need_http_upgrade = "1") {
            add_header Vary Upgrade-Insecure-Requests;
            return 301 https://$host$request_uri;
        }
        ...
    }
}

To add to the conversation, I thought it was important to cover the other most common Linux web server, Apache2. So here’s how to conditionally serve HTTPS for clients that insist on it, while still serving HTTP to older clients in an Apache2 config using mod_rewrite:

<VirtualHost *:80>
    ...
    <Location>
        <If "%{req:Upgrade-Insecure-Requests} == '1'">
            RewriteEngine On 
            RewriteCond %{HTTPS} !=on 
            RewriteRule ^/?(.*) https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
        </If>
    </Location>
</VirtualHost>