Category Archives: Opinions

General thoughts on the tech industry from the creators of HonestRepair.

The Linux Argument

Linus Torvalds created the Linux kernel in 1991 using the C programming language. Since then it’s ballooned to nearly 20 million lines of source code with contributions from thousands upon thousands of developers averaging over 3,500 lines of fresh code per day. It’s backers include everyone you can imagine, from arch-rival Microsoft to phone-maker Samsung to chip-maker Intel. But why?

Linux is Awesome!

Or as Bryan Lunduke would put it, Linux sucks.

In Bryan’s video series, “Linux Sucks,” he describes the many pitfalls that plague the Linux operating system and some of it’s most painful drawbacks. His criticism, however, is actually what makes Linux awesome.

Linux isn’t perfect by any stretch of the imagination. What it does have is an undeniable ability to not only survive but prosper where other companies and operating systems have failed. The reason?

Because it’s Open-Source.

Linux is great because people think it sucks. If Google liked Linux, they wouldn’t have turned it into Android. If Microsoft liked Linux they would buy it instead of donating to it. If developers liked Linux they would stop developing it.

It’s the constant state of dissatisfaction that keeps Linux in motion. Anyone who is dissatisfied with Linux can make it better; and many people do. Your cable-box, wireless router, television, and probably even your car radio all run on Linux. I’m sure they’d all be running Windows, if only Microsoft would release the source code and allow people to change it to suit their needs. But Microsoft doesn’t do that, so if you want to make a complicated device work without spending billions on kernel development or licensing you’re gonna take a long look at that 20-million-line Linux kernel and see what you need to add to make it work. So you’ve written 200k lines of code to make your device work… but it’s better than writing 20m. The most generous developers will even share their code again, allowing their best changes to be peer-reviewed and merged back into Linux. It would be impossible to put enough companies out of business to stop Linux development.

With closed-source operating systems users and developers are mostly stuck with what the developers have cooked for them. The Linux operating system is always under pressure from it’s community, not shareholders, to make improvements and optimizations. If one organization developing a Linux platform can’t deliver a functionality another one will probably crop up that does deliver that functionality.

Linux Doesn’t Trust You,

Have you ever browsed the file-system on your Windows PC and stumbled across this…

This window pops up when you try to access a folder that you do not have permissions for. Rather than stopping you, Windows tries to make accessing the files easier by creating a mechanism to update the permissions at the click of a button.

Lets phrase that another way. Microsoft designed a complex system of permissions for their operating system to keep data safe……

And then they literally created a dialogue box that breaks those permissions.

Windows-savvy users will be quick to point out that with UAC enabled this action needs to be confirmed again, and on a workplace domain the domain administrator password is required. These are very valid points, but they are not a “saving-grace.” Windows just trusted the user with files it originally wasn’t going to trust the user with. Why have permissions if you’re giving the user the option to over-ride them?

Here’s another example…

This is Microsoft up-selling you, on your home computer, whenever it’s turned on. There was even a point in time when Microsoft thought it would be OK to assume that simply clicking the “X” on this dialogue meant they had consent to go ahead with the upgrade.

Back when Windows 98 came out we called this a pop-up ad, and if it was installing system tray icons it was probably malware. 15 years later Microsoft thought that installing software that solely solicits other software and then ignores the user’s intentions would be an acceptable use of their personal computing platform. A platform that millions of users worldwide use to manage their lives and businesses. This notion that “the user doesn’t know what they want” was the last straw for me, personally. Once the trust between developer and consumer is broken it’s impossible to get it back, especially with a closed-source product. If I can’t even trust the UI elements that are supposed to give me control over your product what differentiates your product from a virus? Sure, it didn’t steal or damage anything, but it didn’t do what it was supposed to either.

I have no use for software that doesn’t do what I tell it to do. There is no room for interpretation here.

With Linux, you can’t do anything outside of your user-space without having explicit permissions. Where Windows grants users full control by default and then black-lists certain actions, Linux denies any control and white-lists certain actions. This “secure by default” method of permission control makes for a much more secure environment for anyone using the machine. Where a hacker on a remote connection could assume complete control over a Windows machine, that same hacker would be stuck in user-space on a Linux machine, unable to modify files the user they’re impersonating does not own.

But Linux Loves You.

Linux is about making the best product for the community because it comes from the community. Windows and macOS are about making an easily digestible product for resale to please investors and satisfy corporate interests.

Linux is Capable,

For a long time the argument against Linux has revolved around it’s capabilities. The software support for Linux just hasn’t existed like it has for other commercial OS’s. That’s mostly changed now. Not only is there a Linux package to accomplish almost any goal, but it’s open-source just like the OS. That means instead of a dozen companies all making products for profit that do the same task we have half a dozen communities sharing and improving on code that already exists. Continued progress is inevitable, even if an organization goes under. The fact that the vast majority of Linux software is available for free isn’t too shabby either.

It’s Customizable,

This is Linux…..

And this is Linux…..

Windows 7? Nope! Linux…..

Ok, I think we get it now…..


And if that’s not enough you can edit the source code and tweak whatever you like. It’s not just a feature, it’s your right as a consumer of open-source software.

And It’s Fun!

There’s a certain satisfaction you get when you use a Linux computer. There’s a feeling of independence, defiance, and a sense of progress. Every device that boots Linux isn’t just helping the Linux Foundation; it’s helping Windows and macOS too.

In our modern capitalist society only the strongest survive. While Linux may not be widely considered to be the “strongest” OS, it doesn’t have to be. If it even manages to stay two steps behind other commercial OS’s it will force them to improve to keep their margin of superiority. How much progress do you think Microsoft would make if macOS and Linux disappeared tomorrow? Would they still improve their platform without incentive? Without Chevrolet and Dodge we would all be driving Ford Model T’s, because Ford could have done nothing for 100 years and still maintained market share. The mere fact that Linux exists means that Microsoft is incentivized to stay three steps ahead of it. This also helps Linux, who doesn’t need to make profit, develop it’s road-map and prioritize goals.

So try it already!

With so many distros competing for your clicks there’s no better time to give Linux a shot than right now. I often compare Linux to a car with a manual transmission. If you can drive a car with a manual transmission you can drive just about any vehicle with wheels. The same holds true for computers and Linux. If you can use Linux, you demonstrate the skills and ability to use any computer on Earth, regardless of it’s software stack.

Open-Source vs Closed-Source

These days software runs just about everything. From the thermostat on your wall to your coffee pot, to your car. Most people don’t put much thought into code, but somebody has too. No software just appeared out of thin air. A living, breathing human being had to write every piece of software we use today.

If only people were perfect.

The closed-source model…

The closed-source software model involves drafting an idea for a piece of software, designing how that software is going to operate, actually making that software, and then a whole lot of testing to make sure the software does it’s job.

The goal of the closed-source software model is to make money. Period. Full stop. Even when closed-source software is free; it’s still paying somebody’s bills. The edge-case to this is when a developer makes private software that only benefits themselves, but I’d be willing to bet that even half of those developers are still making profit off the software in some way.

The idea is to keep a developers intellectual property a secret so that others have to go to the developer if they want to use it. Sometimes this can be in the form of offering free software as a service so that developers can harvest valuable data or charge advertisers money for ad space (think: Gmail). Sometimes it’s a developer finding a publisher or retail outlet to market their product (think: games). Regardless of how closed-source software generates revenue, the whole system comes crashing down if your competitors are able to clone your product and improve upon it, or if your users are able to obtain the product without paying for it.

The open-source model…

The open-source software model starts off a lot like the closed-source model. For whatever reason a developer or group of developers will undertake a project out of desire or need, and then proceed to design, make, and test their software.

The goal of open-source software is varied, but usually it’s to fill a void. Oftentimes the developer knows before they begin that they’ll likely never profit off of their software. They’re usually doing it for incentives you can’t (or won’t) buy.

The idea with open-source is to allow anyone to read, edit, and share software so that it may positively effect a larger audience. There is really only one way to do open-source correctly; by giving away your source-code and explicitly encouraging people to change and share it with whomever. By making an entire piece of software available a developer invites peer review for the purpose of making their software better. Bugs are found, improvements are made, and features are added by the community for which the software was intended. This not only benefits the community, but also the original developer who gets free ideas, direction and code.

The advantages of closed-source…

We know that closed-source software aims to turn a profit. As the saying goes; “it takes money to make money.” Most closed-source software projects cost money for organized companies to develop. Companies have policies, procedures and quality standards. They can look at the big picture behind a piece of software and be more selective in it’s design. They have teams of people to design a piece of software before anyone writes a single line of code. Then they acquire the necessary talent and get to work. They are able to pour resources into design and development and expect certain results from a full-time staff. They usually have more tech on the table at the start of a project, whereas open-source developers usually work with what’s available to them.

When you pay for a piece of software you can usually trust that it’s going to work right out of the box. Each part of that software (UI, back-end, audio, ect…) was probably developed by an expert in the field. You can usually trust that every feature has been tested to find it’s breaking point, redesigned and tested again. To be fair, you usually get what you pay for. Then to top it all off, someone packaged the whole thing up in a nice installer with guaranteed documentation and some measure of tech support.

The advantages of open-source…

Open-source software is constantly evolving and is much more resilient to aging. When old developers get tired of a project they go onto something else and fresh developers may take their place.

Bugs get documented. This might sound minute, but how many times have you had to fix an issue with a piece of software only to find 100x forum posts on the official website with no answer? With open-source there is no better feeling than posting a comment on a Github repo that actually impacts a projects development.

Open-source software projects have “fans” rather than “users.” Users who deal with a specific project are usually more enthusiastic about a project and willing to point out and talk about flaws or missing features. They brainstorm changes out in the open with real code rather than just wishing software would change. They also have the ability to go under the hood of that software and tweak it themselves.

Open-source software is defined by a “copyleft” license which grants a user the right to obtain, modify, and distribute the software without major restriction to how it’s used or how it’s distributed.

The disadvantages of closed-source…

Closed-source software does not let users view the source code for a project. For software that uses compiled, mini-fied or obfuscated source code this means that bugs stay hidden from users until they are disclosed or patched by the developer. While many of the bugs found in commercial software aren’t visible to the end-user, these bugs end up living in the software forever as potential vulnerabilities waiting for an incentivized party to find and exploit them. Developers lose incentive to dig deep into their code once a seemingly stable product ships. They are much more likely to fix bugs that gather support tickets than they are to look for un-sanitized input fields (which can cause more problems than I could possibly list). So while you’re probably going to get an onclick event fixed in closed-source software, you’re probably not getting the security fix until it’s already too late. This is because nobody has seen the source code since the final product shipped.

Developers also duplicate a lot of effort between firms and even teams within the same firm. How many times do you think different Google developers have written the same exact javascript function because they didn’t know or have any interest in what their neighbor in the next cubical was working on? Probably a couple hundred at least. How much code do you think Dropbox wrote that Google and OneDrive already wrote? Here we have three platforms all providing the same basic service while employing three entirely separate payrolls to write what is essentially all the same code. We don’t see this paralleled in open-source unless something is missing from software. For open-source examples of progress instead of duplication just look at OpenOffice and it’s fork LibreOffice. Look at Ubuntu. It was a fork of Debian linux that gave birth to, Lubuntu, and Kubuntu. According to Wikipedia, Nginx was “written with an explicit goal of outperforming the Apache web server.”

Closed-source software is defined by licenses which restrict the users right to posses, modify, distribute, and use the software. Oftentimes additional code is added to closed-source software to specifically prevent unauthorized change, distribution or use of the software as deemed fit by the developers.

The disadvantages of open-source…

The problems with open-source software (including mine[2]) are overall quality, consistency, documentation, and usability. It usually takes a long time and a lot of volunteer talent to create an open-source project that delivers the same quality as a closed-source project. That being said, for the layman open-source might not always be the most economical option; even if the price of open-source is null.

Most open-source projects are solo endeavors. That means a single developer pours their ideas and their talent into a project with skills and weaknesses out in the open. If you have 10x developers working on a project with no QA and no written standards or procedures code becomes hard to manage real quick. To expect the same level of QA testing from a solo developer or small team as an actual company is asking a lot. Even well designed projects can take years of tweaking by many contributors to work out all the bugs. Users of open-source software carry something of a responsibility to the project to provide feedback to the developers. Companies can spend money on R&D, crowd-sourcing, social experiments, and beta testing. Most open-source projects were started out of necessity or desire, and don’t reflect any one industry or demographic in particular. Therefore every user of open-source software is essentially the QA department, testing every feature for misbehavior and poor workmanship.

It’s less about software and more about ideals…

Lets face it, most electronic chores can be performed with either open or closed-source software. However, we owe a lot of what our machines can do to open-source software. Apple, Google, and all the other big names in software and digital services have been using open-source software for years. Whether it’s Linux powering your cable box, WiFi router, or Android phone, ffmpeg transcoding your streaming audio, or g++ compiling closed-source software for large companies, closed-source is powered by open-source. You can choose to throw money at organizations who promote themselves, or you can become engaged with organizations who promote all of us. It all comes down to what knowledge is worth. As far as I’m concerned, if Google isn’t willing to share their algorithms then I’ll write my own and give them away for free. They’re using their knowledge as a weapon, so it’s up to the rest of us to use our knowledge as power.


RE: You are not Google. (but you could be)

This blog post is a response to a Bradfield blog post titled “You are not Google.”

To begin.

I’m one of those self-taught people that uses a sledgehammer where he should be using a scalpel.

And so is Larry Page.

I am not driven by margins. If I were, I would obviously be using AWS, CloudFlare, and CDN’s for absolutely everything. I’d be using the correct data-basing software for my load, and my network would make analysts cry (because they’d have nothing to do).

Luckily, I’m crazy. I’d rather ask for forgiveness than permission.

You are (mostly) wrong.

When you say that most companies don’t deal with data as large as Google, or they don’t need the same tools that Amazon or LinkedIn uses; you are not wrong. But you do wrongly assume that initial costs are priority number one. If Google had taken that approach they wouldn’t have all those datacenters you give them credit for.

Not all companies have investors to answer to.

There are companies that are willing to shell out money on infrastructure that’s overkill, redundant, or otherwise unneccesary. Some companies like Google and Amazon are more than willing to add a little bit of burden for a crap-load of capacity. That’s why they host your web-apps and you don’t.

And the advantage to you is performance, cost savings, and simplicity. Huge, well-planned Cloud services improve productivity without much sacrifice. But what if you’re not worried about when your return happens? What if you have no deadlines? What if you have no clients, and you answer to yourself? Google didn’t “google” for you, initially. They “googled” for themselves. You benefit now because they accepted liability back then.

If Zuckerberg never tried because Tom from MySpace had him beat you’d have no React. Oh, the horror.

Do-ers like you make money. Dreamers like Larry make the world better.

So while you’re busy setting up your Droplet, stop and take a gander at how you got to this point. Now ponder what could possibly be better than this? Chances are good that while you’re working on your AWS-hosted application, some crazy bastard is busy installing way too much “unneccesary” software on their homelab to develop the next big service that you probably won’t be able to live without in 5 years. Sometimes not asking for help is more important than instant gratification.

Sensible and cheap wins Darwin awards.

Science-fiction time! It’s the year 2021. Several world powers are pissed at each other and Google, Microsoft, Amazon, Alibaba, and the rest of your cookie-cutter supply chain has a target on it’s back. Nation states are spending billions and recruiting the same genius’s who wrote these platforms to hack these platforms. The average daily AWS uptime anywhere in the world is only 40%.

Your app is useless. Your customers are compromised. Your database gets erased on the reg, and your source code is all over the dark-web. Meanwhile, the only person who can’t get their production servers running is you, because they’re spread all over the world and they’re under a constant barrage of botnet attacks.

I bet you’re super-glad you saved $5,000/year by migrating to AWS right about now.

You can call me crazy, but the only reason nothing “bad” has happened to the internet yet is because the internet hasn’t been around for anything truly “bad” yet. If it had been around for any of our “World Wars” it would have been destroyed just like Stalingrad and Berlin.

In summary.

I’m not saying that every restaurant/machine shop needs to install their own in-house servers with overkill software and complex infrastructure. By all means, companies should focus on controlling their IT costs. However, don’t knock the ones that want to internalize, secure, and over-scale their businesses. Analysts: incorporate, don’t dismiss the desires of your client. You can save your client money, deploy the service that meets their needs, and appease their fantasy without shoe-horning every business into your cookie-cutter AWS template that’s already made you a fortune.