Coding Horror

programming and human factors

Updating The Single Most Influential Book of the BASIC Era

In a way, these two books are responsible for my entire professional career.

With early computers, you didn't boot up to a fancy schmancy desktop, or a screen full of apps you could easily poke and prod with your finger. No, those computers booted up to the command line.

From here, if you were lucky, you might have a cassette tape drive. If you knew the right commands, you could type them in to load programs from cassette tape. But that was an expensive add-on option with early personal computers. For many of us, if we wanted the computer to do anything, we had to type in entire programs from books like 101 Basic Computer Games, by hand... like so.

Yep, believe it or not, circa 1983, this was our idea of a good time. No, we didn't get out much. The book itself was a sort of greatest hits compilation of games collected from Ahl's seminal Creative Computing magazine in the 1970s:

As soon as Ahl made up his mind to leave DEC, he started laying the groundwork for Creative Computing. He announced intentions to publish the magazine at NCC in June 1974 and over the next few months contacted prospective authors, got mailing lists, arranged for typesetting and printing, and started organizing hundreds of other details.

In addition, he also moved his family to Morristown, NJ, and settled into his new job at AT&T. He had little spare capital, so he substituted for it with "sweat equity." He edited submitted articles and wrote others. He specified type, took photos, got books of "clip art," drew illustrations, and laid out boards. He wrote and laid out circulation flyers, pasted on labels, sorted and bundled mailings.

By October 1974, when it was time to specify the first print run, he had just 600 subscribers. But Ahl had no intention of running off just 600 issues. He took all the money he had received, divided it in half, and printed 8000 copies with it. These rolled off the presses October 31, 1974. Ahl recounts the feeling of euphoria on the drive to the printer replaced by dismay when he saw two skids of magazines and wondered how he would ever get them off the premises. Three trips later, his basement and garage were filled with 320 bundles of 25 magazines each. He delivered the 600 subscriber copies to the post office the next day, but it took nearly three weeks to paste labels by hand onto the other 7400 copies and send them, unsolicited, to libraries and school systems throughout the country.

I also loved Creative Computing, but it was a little before my time:

  • 1971 – Ahl ports the programs from FOCAL to BASIC.
  • 1973 – 101 BASIC Computer Games is first published by DEC.
  • 1974 – Ahl founds Creative Computing magazine and acquires the rights to the book from DEC.
  • 1977 – the “trinity” of Apple II 🖥️, PET ️🖥️, and TRS-80 🖥️ microcomputers are released to the public, all with BASIC built in, at prices regular people could mostly afford 🙌
  • 1978 – a second edition of BASIC Computer Games is released, this time published by Ahl himself.

As you can see, there’s no way average people in 1973-1976 were doing a whole lot with BASIC programs, as they had no microcomputers capable of running BASIC to buy! It took a while for inexpensive personal computers to trickle down to the mainstream, which brings us to roughly 1984 when the sequels started appearing.

There was a half-hearted attempt to modernize these early BASIC programs in 2010 with SmallBasic, but I didn't feel these ports did much to bring the code up to date, and overall had little relevance to modern code practices. You can compare the original 1973 BASIC Civil War with the 2010 SmallBasic port to see what I mean:

Certainly we can do a bit better than merely removing the line numbers? What about our old buddy the subroutine, merely the greatest invention in computer science? It's nowhere to be seen. 🤔

So it was with considerable enthusiasm that I contacted David H. Ahl, the author, and asked for permission to create a website that attempted to truly update all these ancient BASIC programs.

Thankfully, permission was granted. It's hard to understate how important this book was to an entire generation of programmers. At one point, there were more copies of this book in print than there were personal computers, period!

... in 1973, DEC published an anthology, 101 BASIC Computer Games. The book quickly went into a second printing, for a total of 10,000 copies sold. “That was far more books than there were computers around, so people were buying three, four, five of them for each computer.”

It went on to be the first computer book to sell a million copies. Quite a legacy.

I think we owe it to the world to bring this book up to date using modern, memory safe languages that embody the original spirit of BASIC, and modern programming practices including subroutines.

So let's do this. Please join us on GitHub, where we're updating those original 101 BASIC games in memory safe, general purpose scripting languages:

  • Java
  • Python
  • C#
  • VB.NET
  • JavaScript
  • Ruby
  • Delphi / Object Pascal
  • Perl

Now, bear in mind these are very primitive games from the 1970s. They aren't going to win any awards for gameplay, or programming sophistication. But they are precious artifacts of early computing that deserve to be preserved for future generations, including the wonderful original art by George Beker.

We need your help to do this right, and collaboratively together, as with all modern programming projects. Imagine we're all typing these programs in simultaneously together online, all over the world, instead of being isolated alone in our room in 1984, cursing at the inevitable typo we made somewhere when typing the code in by hand out of the book🤬.

Thanks Mr. Ahl. And a big thanks to everyone who contributed to this project when it was in beta, announced only on Twitter:

To encourage new contributions, by the end of 2022, for every functioning program submitted in each of the 8 indicated languages, I'll donate $5 to Girls Who Code. Before beginning, please read the guidelines in the readme, and if you have questions, scan through this discussion topic. And most of all, remember, this stuff is supposed to be fun.

(I don't want to be "that one guy", so I'm also looking for project co-owners who can help own and organize this effort. If this is a project that really appeals to you, show me what you can do and let's work together as a team.)

Perhaps as your new year's resolution you can see fit to carve off some time to take part in our project to update a classic programming bookone of the most influential books in computing history – for 2022 and beyond! 🎉

Discussion

Building a PC, Part IX: Downsizing

Hard to believe that I've had the same PC case since 2011, and my last serious upgrade was in 2015. I guess that's yet another sign that the PC is over, because PC upgrades have gotten really boring. It took 5 years for me to muster up the initiative to get my system fully upgraded! 🥱

I've been slogging away at this for quite some time now. My PC build blog entry series spans 13 glorious years:

The future of PCs may not necessarily be more speed (though there is some of that, if you read on), but in smaller builds. For this iteration, my go-to cases are the Dan A4 SFX ...

And the Streacom DA2 ...

The attraction here is maximum power in minimum size. Note that each of these cases are just large enough to fit ...

  • a standard mini-ITX system
  • SFX power supply
  • full sized GPU
  • reasonable CPU cooler

... though the DA2 offers substantially more room for cooling the CPU and adding fans.

http://i.imgur.com/odoYjle.jpg

I'm not sure you can physically build a smaller standard mini-ITX system than the DAN A4 SFX, at least not without custom parts!

DAN A4-SFX
200mm × 115mm × 317mm = 7.3 liters

Silverstone RVZ02 / ML08
380mm × 87mm × 370mm = 12.2 liters

nCase M1
240mm × 160mm × 328 mm = 12.6 liters

Streacom DA2
180mm × 286mm × 340mm = 17.5 liters

(For comparison with The Golden Age of x86 Gaming Consoles, a PS4 Pro occupies 5.3 liters and an Xbox One S 4.3 liters. About 50% more volume for considerably more than 2× the power isn't a bad deal!)

I chose the Streacom DA2 as my personal build, because after experimenting heavily with the DAN A4 SFX, I realized you need more room to deal with extremely powerful CPUs and GPUs in this form factor, and I wanted a truly powerful system:

  • Intel i9-9900KS (8 core, 16 thread, 5.0 GHz) CPU
  • Samsung 970 PRO 1TB / Samsung 970 EVO 2TB / Samsung 860 QVO 4TB SATA
  • 64GB DDR4-3000
  • Cryorig H7 cooler (exact fit)
  • NVIDIA GeForce RTX 2080 Ti GPU

Compared to my old 2015-2017 system, a slightly overclocked i7-7700k, that at least gives me 2× the cores (and faster cores, both in clock rate and IPC), 2× the memory, and 2× the M.2 slots (two versus one).

The DA2 is a clever case though less perfect than the A4-SFX. What's neat about it is the hybrid open-air design (on the top and bottom) plus the versatile horizontal and vertical bracket system interior. Per the manual (pdf):

Check out all the bracket mounting options. Incredibly versatile, and easy to manipulate with the captured nut and bolt design:

Note that you can (and really should) pop out the top and bottom acrylic pieces with the mesh dust net.

I had dramatically better temperatures after I did this, and it also made the build easier since the case can fully "breathe" through the top and bottom. You'll note that the front of the DA2 is totally solid, no air holes, so you do need that extra airflow.

I only have a few criticisms of this Streacom DA2 case:

  • The side panels are tool free, which is excellent, but the pressure fit makes them fairly difficult to remove. Feels like this could be tweaked?
  • (Don't even think about using a full sized ATX power supply. In theory it is supported, but the build becomes so much more difficult. Use a SFX power supply, which you'd expect to do for a mini-ITX build anyway.)
  • My primary complaint is that the power extension cable gets in the way. I had to remove it and re-attach it during my build. They should custom route the power cable upwards so it blocks less stuff.
  • Less of a criticism and more of an observation: if your build uses a powerful GPU and CPU, you'll need two case fans. There's mounting points for a 92mm fan in the rear, and the bracket system makes it easy to mount a 140mm fan blowing inward. You will definitely need both fans!

Here's the configuration I recommend, open on both the top and bottom for maximum airflow, with three fans total:

If you are a water cooling kind of person – I am definitely not, I experienced one too many traumatic cooling fluid leaks in the early 2000s – then you will use that 140mm space for the radiator.

I have definitely burn-in tested this machine, as I do all systems I build, and it passed with flying colors. But to be honest, if you expect to be under full CPU and GPU loads for extended periods of time you might need to switch to water cooling due to the space constraints. (Or pick slightly less powerful components.)

If you haven't built a PC system recently, it's easier than it has ever been. Heck by the time you install the M.2 drives, memory, CPU, and cooler on the motherboard you're almost done, these days!

There are a lot of interesting compact mini-itx builds out there. Perhaps that's the primary innovation in PC building for 2020 and beyond – packing all that power into less than 20 liters of space!

Read a Spanish translation of this article here.

Discussion

The Rise of the Electric Scooter

In an electric car, the (enormous) battery is a major part of the price. If electric car prices are decreasing, battery costs must be decreasing, because it's not like the cost of fabricating rubber, aluminum, glass, and steel into car shapes can decline that much, right?

ev-battery-costs

On an electric scooter, though, the effect of battery price has to be even more dramatic because scooters are such lightweight, compact, and simple machines. They aren't much more than a battery and an electric motor to begin with. Remember the the Zappy electric scooter from twenty years ago?

zappy-electric-scooter-year-2000

What killed the electric scooter back then is the same thing that killed the electric car of year 2000: terrible lead-acid battery technology. It's too heavy, it lacks power, it doesn't have enough range, it takes too long to charge. These are all different ways of saying the same thing: the battery sucks. It wasn't until Lithium Ion batteries matured that both the electric car and the electric scooter — and pretty much electric everything, if you think about it — became viable.

Thus, one way to see if Lithium Ion battery prices are indeed generally dropping independent of all other manufacturing concerns is to examine the cost of electric scooters over the last few years. Let's consider one of the most popular models, the Xiaomi Mi M365:

xiaomi-mi-m365-price-history-2018-2019

This graph only shows roughly two years, from January 2018 to now; it looks like the original price for the Xiaomi M365 when it hit the US market in early 2017 was around $800. So the price of a popular, common electric scooter has halved in three years. Very good news indeed for electric vehicles of all types!

This dramatic drop in electric scooter price from 2016 to 2019 may not be surprising versus the parallel rise of the quasi-legal electric scooter smartphone app rental industry over roughly the same time period, in the form of Bird, Lime, Skip, Spin, Scoot, etc.

electric-scooter-rentals-bird-lime

Early versions of Bird scooters were actual Xiaomi M365s, slightly modified for rental. Only by late 2018 had they migrated to custom built, ruggedized scooters optimized for the rental market. The rental industries have their own challenges, and ironically have started to pivot to monthly rentals rather than the classic 15 cents per minute.

Bird has experimented with its business model in recent months. In early March, the company altered its repair program in Los Angeles, which had relied on gig workers to fix broken scooters. It moved repairs in-house (though scooters are still charged each night by an army of gig workers). Later that month, the company introduced scooters with locks in some markets, in a bid to prevent theft and vandalism.

In April, it announced the launch of a more traditional rental program in San Francisco and Barcelona, in which users could pay $25 per month to rent a Xiaomi m365 from the company rather than paying per ride.

But this isn't meant to be a blog entry about the viability of scooter rental company business models.

I want to tackle a more fundamental question: are electric scooters the future of transportation?

Even Uber, as screwed up of a company as they still are, knows cars are overkill for a lot of basic transportation needs:

We have plenty of scooters here at my house, and the family and I enjoy them greatly, but I have never actually ridden or owned an electric scooter. So I bought one. It is of course the popular, inexpensive, and well reviewed Xiaomi Mi M365.

m365-scooter

Here's a picture of my electric scooter inside my electric car. (I apologize that I didn't have an electric bicycle to park next to it for maximum smugness, but you can bet your sweet electrons I'll work on that next!)

electric-scooter-in-electric-car

The short version of my review is this electric scooter is incredibly fun, works great, and if you can get it for a price around $300, practically a no-brainer. I love it, my kids love it, and as long as you're conceptually OK with the look, unlike Elon Musk 🛴💨 then you'll probably love it too.

I found a neat video covering the "one year later" experience of owning the scooter, and what you might eventually run into or want to tweak.

(The main thing to take away from this video is that flats super suck on tires this small, so be warned. I put Slime in my Mi's tires out of an abundance of caution, but you could also go with solid tubeless tires – at the cost of some ride comfort – if you're really worried.)

That's not to say that the electric scooter experience is perfect. There are some challenges with electric scooters, starting with the biggest one: your local government has no idea how to regulate the darn things.

  • Is this regulated like a bicycle? If not, why not?
  • Are they allowed on the sidewalk?
  • Do you have to ride them in the road, with cars … uh, depending on the speed limit?
  • Do you need a driver's license?
  • Do you need a helmet?
  • Are you even allowed to legally ride them in public at all outside of private property?

The answers also vary wildly depending on where you live, and with no consistency or apparent logic. Here are the current electric scooter laws in California, for what it's worth, which require the rider to have a valid driver's license (unlike electric bicycles) and also disallow them from sidewalks, both of which I feel are onerous and unnecessary restrictions.

One aspect of those laws I definitely agree with, however, is the 15 mile per hour speed restriction. That's a plenty brisk top speed for a standing adult with no special safety equipment. Anything faster starts to get decidedly … uncomfortable. Consider this monster of a 1165KWh electric scooter, with dual motors and dual suspension that goes up to forty freakin' miles per hour.

That … is … terrifying. Even the reviewer, in full motorcycle safety gear, wasn't willing to push it all the way to 40 MPH. And I don't blame him! But now that I've shown you the undisputed Honda Civic everyman budget model of electric scooter in the M365, hopefully this gives you a taste of the wider emerging diversity in these kinds of minimalistic electric vehicles. If you want a luxury electric scooter, an ultralight electric scooter, a rugged offroad electric scooter … all things are possible, for a price.

Another reason the M365 is available for so cheap is that is successor, the Xiaomi M365 Pro, was recently released, although it is not quite possible to obtain in the US at the moment.

Having ridden my M365 a fair bit, I can confirm all the Pro improvements are welcome, if incremental: bigger battery and disc brake, more power, better display, improved latch mechanism, etc.

xiaomi-mi-m365-vs-pro

None of those Pro improvements, however, are worth a 2× increase in price so I'd recommend sticking with the M365 for now because its value proposition is off the charts. Did I mention there's a bluetooth connection, and an app, and it is possible to hack the M365 firmware? Pretty cool how electric vehicles are inherently digital, isn't it?

Here are a few other observations after riding my M365 around a fair bit:

  • Please be respectful around pedestrians. Most of the sidewalks around here are not busy at all, but the pedestrians I encountered on the electric scooter were definitely more freaked out than I’ve seen before when using regular kick scooters (or skateboards) on the sidewalk, which did surprise me. An electric scooter has more heft to it, both physically at 26 pounds, and in the 15 mile per hour speed it can reach – but also mentally in terms of how it looks and how people approach it. I recommend slowing down to just above walking speed when encountering pedestrians, and if there is a bike lane available, I'd definitely recommend using that.

  • Hills work great. The kryptonite of traditional kick scooters is hills, and I'm pleased to report that even with a cough sizable adult such as myself riding, I was able to sustain a respectable above-walking speed on most reasonable hills. Where I looked at a hill and thought "this probably should work", it did. That's impressive, considering this isn't the upgraded Pro model with bigger battery and more powerful motor. On flats and downhills the performance is superb, as you'd expect. That said, if you are a really big or tall adult, or live in a particularly hilly area, wait for the Pro model or an equivalent.

  • Portability is good, but borderline. At ~26 pounds, the electric scooter is reasonably portable, but it's not something you a) could really get away with taking inside a restaurant / store with you to prevent theft or b) want to be carrying around on your person for any significant length of time. It's not nearly as nimble or portable as a kick scooter, but that's a high bar. You'll need to carry a bike lock and think about how to lock your scooter on bike racks, which turned out to be … more geometrically challenging than I anticipated due to the small tires, disc brakes, and the engine in the front wheel. They need more obvious locking points on the chassis.

To be honest with you I'm still bitter about the whole Segway debacle. There was so much hype back in the day. That ridiculous thing was supposed to change the world. Instead, we got … Paul Blart Mall Cop.

paul-blart-segway

A Segway was $5,000 at launch in 2001, which is a whopping $7,248 in inflation adjusted dollars. Here in 2019, cheap $200 to $300 electric scooters are basically the transformational technology the Segway was supposed to be, aren't they? Are electric scooters the future of (most) transportation? I'm not sure, but I do like where we're headed, even if it took us twenty years to get there.

Discussion

Electric Geek Transportation Systems

I've never thought of myself as a "car person". The last new car I bought (and in fact, now that I think about it, the first new car I ever bought) was the quirky 1998 Ford Contour SVT. Since then we bought a VW station wagon in 2011 and a Honda minivan in 2012 for family transportation duties. That's it. Not exactly the stuff The Stig's dreams are made of.

The station wagon made sense for a family of three, but became something of a disappointment because it was purchased before — surprise! — we had twins. As Mark Twain once said:

Sufficient unto the day is one baby. As long as you are in your right mind don't you ever pray for twins. Twins amount to a permanent riot. And there ain't any real difference between triplets and an insurrection.

I'm here to tell you that a station wagon doesn't quite cut it as a permanent riot abatement tool. For that you need a full sized minivan.

I'm with Philip Greenspun. Like black socks and sandals, minivans are actually … kind of awesome? Don't believe all the SUV propaganda. Minivans are flat out superior vehicle command centers. Swagger wagons, really.

a-team-van

The A-Team drove a van, not a freakin' SUV. I rest my case.

After 7 years, the station wagon had to go. We initially looked at hybrids because, well, isn't that required in California at this point? But if you know me at all, you know I'm a boil the sea kinda guy at heart. I figure if you're going to flirt with partially electric cars, why not put aside these half measures and go all the way?

Do you remember that rapturous 2014 Oatmeal comic about the Tesla Model S? Even for a person who has basically zero interest in automobiles, it did sound really cool.

oatmeal-tesla-s-spaceboat

It's been 5 years, but from time to time I'd see some electric vehicle on the road and I'd think about that Intergalactic SpaceBoat of Light and Wonder. Maybe it's time for our family to jump on the electric car trend, too, and just late enough that we can avoid the bleeding edge and end up merely on the … leading edge?

That's why we're now the proud owners of a fully electric 2019 Kia Niro.

kia-niro-2019

I've somehow gone from being a person who basically doesn't care about cars at all … to being one of those insufferable electric car people who won't shut up about them. I apologize in advance. If you suddenly feel an overwhelming urge to close this browser tab, I don't blame you.

I was expecting another car, like the three we bought before. What I got, instead, was a transformation:

  • Yes, yes, electric cars are clean, but it's a revelation how clean everything is in an electric. You take for granted how dirty and noisy gas based cars are in daily operation – the engine noise, the exhaust fumes, the brake dust on the rims, the oily residues and thin black film that descends on everything, the way you have to wash your hands every time you use the gas station pumps. You don't fully appreciate how oppressive those little dirty details were until they're gone.

  • Electric cars are (almost) completely silent. I guess technically in 2019 electric cars require artificial soundmakers at low speed for safety, and this car has one. But The Oatmeal was right. Electric cars feel like spacecraft because they move so effortlessly. There's virtually no delay from action to reaction, near immediate acceleration and deceleration … with almost no sound or vibration at all, like you're in freakin' space! It's so immensely satisfying!

  • Electric cars aren't just electric, they're utterly digital to their very core. Gas cars always felt like the classic 1950s Pixar Cars world of grease monkeys and machine shop guys, maybe with a few digital bobbins added here and there as an afterthought. This electric car, on the other hand, is squarely in the post-iPhone world of everyday digital gadgets. It feels more like a giant smartphone than a car. I am a programmer, I'm a digital guy, I love digital stuff. And electric cars are part of my world, rather than the other way around. It feels good.

  • Electric cars are mechanically much simpler than gasoline cars, which means they are inherently more reliable and cheaper to maintain. An internal combustion engine has hundreds of moving parts, many of which require regular maintenance, fluids, filters, and tune ups. It also has a complex transmission to translate the narrow power band of a gas powered engine. None of this is necessary on an electric vehicle, whose electric motor is basically one moving part with simple 100% direct drive from the motor to the wheels. This newfound simplicity is deeply appealing to a guy who always saw cars as incredibly complicated (but computers, not so much).

  • Being able to charge at home overnight is perhaps the most radical transformation of all. Your house is now a "gas station". Our Kia Niro has a range of about 250 miles on a full battery. With any modern electric car, provided you drive less than 200 miles a day round trip (who even drives this much?), it's very unlikely you'll ever need to "fill the tank" anywhere but at home. Ever. It's so strange to think that in 50 years, gas stations may eventually be as odd to see in public as telephone booths now are. Our charger is, conveniently enough, right next to the driveway since that's where the power breaker box was. With the level 2 charger installed, it literally looks like a gas pump on the side of the house, except this one "pumps" … electrons.

level-2-ev-charger

This electric car is such a great experience. It's so much better than our gas powered station wagon that I swear, if there was a fully electric minivan (there isn't) I would literally sell our Honda minivan tomorrow and switch over. Without question. And believe me, I had no plans to sell that vehicle two months ago. The electric car is that much better.

I was expecting "yet another car", but what I got instead was a new, radical worldview. Driving a car powered by barely controlled liquid fuel detonations used to be normal. But in an world of more and more viable electric vehicles this status quo increasingly starts to feel … deeply unnatural. Electric is so much better of an overall experience that you begin to wonder: why did we ever do it that way?

Gas cars seem, for lack of a better word, obsolete.

ev-sales

How did this transformation happen, from my perspective, so suddenly? When exactly did electric cars go from "expensive, experimental thing for crazy people" to "By God, I'll never buy another old fashioned gasoline based car if I can help it"?

I was vaguely aware of the early electric cars. I even remember one coworker circa 2001 who owned a bright neon green Honda Insight. I ignored it all because, like I said, I'm not a car guy. I needed to do the research to understand the history, and I started with the often recommended documentary Who Killed the Electric Car?

This is mostly about the original highly experimental General Motors EV1 from 1996 to 1999. It's so early the first models had lead-acid batteries! 😱 There's a number of conspiracy theories floated in the video, but I think the simple answer to the implied question in the title is straight up price. The battery tech was nowhere near ready, and per the Wikipedia article the estimated actual cost of the car was somewhere between $100,000 and $250,000 though I suspect it was much closer to the latter. It is interesting to note how much the owners (well, leasers) loved their EV1s. Having gone through that same conversion myself, I empathize!

I then watched the sequel, Revenge of the Electric Car. This one is essential, because it covers the dawn of the modern electric car we have today.

This chronicles the creation of three very influential early electric cars — the Nissan Leaf, the Chevy Volt, and of course the Tesla Roadster from 2005 - 2008. The precise moment that Lithium-Ion batteries were in play – that's when electric cars started to become viable. Every one of these three electric cars was well conceived and made it to market in volume, though not without significant challenges, both internal and external. None of them were perfect electric vehicles by any means: the Roadster was $100k, the Leaf had limited range, and the Volt was still technically a hybrid, albeit only using the gasoline engine to charge the battery.

Ten years later, Tesla has the model 3 at $38,000 and we bought our Kia Niro for about the same price. After national and state tax incentives and rebates, that puts the price at around $30,000. It's not as cheap as it needs to be … yet. But it's getting there. And it's already competitive with gasoline vehicles in 2019.

2019-civic-vs-leaf-1

It's still early, but the trend lines are clear. And I'm here to tell you that right now, today, I'd buy any modern electric car over a gasoline powered car.

If you too are intrigued by the idea of owning an electric car, you should be. It's freaking awesome! Bring your skepticism, as always; I highly recommend the above Matt Ferrell explainer video on electric vehicle myths.

As for me, I have seen the future, and it is absolutely, inexorably, and unavoidably … electric. ⚡

Discussion

An Exercise Program for the Fat Web

When I wrote about App-pocalypse Now in 2014, I implied the future still belonged to the web. And it does. But it's also true that the web has changed a lot in the last 10 years, much less the last 20 or 30.

fat city

Websites have gotten a lot … fatter.

While I think it's irrational to pine for the bad old days of HTML 1.0 websites, there are some legitimate concerns here. The best summary is Maciej Cegłowski's The Website Obesity Crisis.

To channel a famous motivational speaker, I could go out there tonight, with the materials you’ve got, and rewrite the sites I showed you at the start of this talk to make them load in under a second. In two hours.

Can you? Can you?

Of course you can! It’s not hard! We knew how to make small websites in 2002. It’s not like the secret has been lost to history, like Greek fire or Damascus steel.

But we face pressure to make these sites bloated.

I bet if you went to a client and presented a 200 kilobyte site template, you’d be fired. Even if it looked great and somehow included all the tracking and ads and social media crap they insisted on putting in. It’s just so far out of the realm of the imaginable at this point.

The whole article is essential; you should stop what you're doing and read it now if you haven't already. But if you don't have time, here's the key point:

This is a screenshot from an NPR article discussing the rising use of ad blockers. The page is 12 megabytes in size in a stock web browser. The same article with basic ad blocking turned on is 1 megabyte.

That's right, through the simple act of running an ad blocker, you've reduced that website's payload by twelve times. Twelve! That's like the most effective exercise program ever!

Even the traditional advice to keep websites lean and mean for mobile no longer applies because new mobile devices, at least on the Apple side, are faster than most existing desktops and laptops.

Despite claims to the contrary, the bad guy isn't web bloat, per se. The bad guy is advertising. Unlimited, unfettered ad "tech" has creeped into everything and subsumed the web.

Personally I don't even want to run ad blockers, and I didn't for a long time – but it's increasingly difficult to avoid running an ad blocker unless you want a clunky, substandard web experience. There's a reason the most popular browser plugins are inevitably ad blockers, isn't there? Just ask Google:

chrome-best-extensions-google-search

So it's all the more surprising to learn that Google is suddenly clamping down hard on adblockers in Chrome. Here's what the author of uBlock Origin, an ad blocking plugin for Chrome, has to say about today's announcement:

In order for Google Chrome to reach its current user base, it had to support content blockers — these are the top most popular extensions for any browser. Google strategy has been to find the optimal point between the two goals of growing the user base of Google Chrome and preventing content blockers from harming its business.

The blocking ability of the webRequest API caused Google to yield control of content blocking to content blockers. Now that Google Chrome is the dominant browser, it is in a better position to shift the optimal point between the two goals which benefits Google's primary business.

The deprecation of the blocking ability of the webRequest API is to gain back this control, and to further instrument and report how web pages are filtered, since the exact filters which are applied to web pages are useful information which will be collectable by Google Chrome.

The ad blockers themselves are arguably just as complicit. Eye/o GmbH owns AdBlock and uBlock, employs 150 people, and in 2016 they had 50 million euros in revenue, of which about 50% was profit. Google's paid "Acceptable Ads" program is a way to funnel money into adblockers to, uh, encourage them to display certain ads. With money. Lots … and lots … of money. 🤑

We simultaneously have a very real web obesity crisis, and a looming crackdown on ad blockers, seemingly the only viable weight loss program for websites. What's a poor web citizen to do? Well, there is one thing you can do to escape the need for browser-based adblockers, at least on your home network. Install and configure Pi-Hole.

pi-hole-screenshot

I've talked about the amazing Raspberry Pi before in the context of classic game emulation, but this is another brilliant use for a Pi.

Here's why it's so cool. If you disable the DHCP server on your router, and let the Pi-Hole become your primary DHCP server, you get automatic DNS based blocking of ads for every single device on your network. It's kind of scary how powerful DNS can be, isn't it?

pi-hole-action-shot

My Pi-Hole took me about 1 hour to set up, start to finish. All you need is

I do recommend the 3b+ because it has native gigabit ethernet and a bit more muscle. But literally any Raspberry Pi you can find laying around will work, though I'd strongly advise you to pick one with a wired ethernet port since it'll be your DNS server.

I'm not going to write a whole Pi-Hole installation guide, because there are lots of great ones out there already. It's not difficult, and there's a slick web GUI waiting for you once you complete initial setup. For your initial testing, pick any IP address you like on your network that won't conflict with anything active. Once you're happy with the basic setup and web interface:

  • Turn OFF your router's DHCP server – existing leases will continue to work, so nothing will be immediately broken.
  • Turn ON the pi-hole DHCP server, in the web GUI.

pi-hole-dhcp-server

Once you do this, all your network devices will start to grab their DHCP leases from your Pi-Hole, which will also tell them to route all their DNS requests through the Pi-Hole, and that's when the ✨ magic ✨ happens!

pi-hole-blacklists

All those DNS requests from all the devices on your network will be checked against the ad blacklists; anything matching is quickly and silently discarded before it ever reaches your browser.

pi-hole-dashboard-stats

(The Pi-Hole also acts as a caching DNS server, so repeated DNS requests will be serviced rapidly from your local network, too.)

If you're worried about stability or reliability, you can easily add a cheap battery backed USB plug, or even a second backup Pi-Hole as your secondary DNS provider if you prefer belt and suspenders protection. Switching back to plain boring old vanilla DNS is as easy as unplugging the Pi and flicking the DHCP server setting in your router back on.

At this point if you're interested (and you should be!), just give it a try. If you're looking for more information, the project has an excellent forum full of FAQs and roadmaps.

pi-hole-forums

You can even vote for your favorite upcoming features!

I avoided the Pi-Hole project for a while because I didn't need it, and I'd honestly rather jump in later when things are more mature.

pi-hole-pin

With the latest Chrome crackdown on ad blockers, now is the time, and I'm impressed how simple and easy Pi-Hole is to run. Just find a quiet place to plug it in, spend an hour configuring it, and promptly proceed to forget about it forever as you enjoy a lifetime subscription to a glorious web ad instant weight loss program across every single device on your network with (almost) zero effort!

Finally, an exercise program I can believe in.

Discussion