468 stories

How Our Culture Justifies Its Sexual Freedom (the 10 Commandments of Progressive Christianity #9) – Canon Fodder

1 Share

I continue to (slowly) work my way through my series on “The 10 Commandments of Progressive Christianity.”  It’s an examination of 10 core tenets of progressive (or liberal) Christianity offered by Richard Rohr, but really based on the book by Philip Gulley.

Those keeping up with the numbers will notice that I skipped #7 and #8.  Well, that is because those chapters in Gulley’s book were decidedly not progressive.  Indeed, I agreed with many things in those chapters and found them helpful.

But, as we turn to the ninth commandment, the progressive emphasis returns with vigor: “We should care more about love and less about sex.”

Of all the postmodern cliches that abound, this one may be the most common.  And it’s quite effective, rhetorically speaking. After all, it tells people what they already want to hear.  They want to hear that they have all the sexual freedom they desire and, at the same time, that they are good people who are just about “love.”

It allows a person to keep their questionable behavior and congratulate themselves on their own moral superiority–at the same time.

Gulley’s book expands this cliche into a full-blown argument for sexual freedom.  And he does so by adopting an all-too-common strategy.  I will let out his strategy step by step.

Step #1: Tout the moral virtues of those in sexual sin

The first step in the playbook is to show that those people engaging in the disputed sexual behavior are genuinely nice, wonderful and all-around virtuous folks.  This is a move designed to make people second-guess whether the sexual sin is all that bad.  After all, if it’s so bad, then how could such wonderful people be doing it?

Our put another way, if wonderful people engage in a behavior I think is wrong, then maybe I ought to rethink whether it is wrong.

Gulley brilliantly executes this move.  His first example is of an elderly couple in their eighties who are sleeping together outside of marriage (157-159).  We are told that they were “kind,” they “warmly welcome” people into their “modest home,” and pictures of “grandchildren lined the walls” (158)

Thus, Gulley’s entire strategy is built on the premise that something is wrong only if they people doing it are mean-spirited jerks. In fact, Gully draws this conclusion directly: “The home they created was one of deep love and mutual respect. . . nothing about any of that felt like sin to me” (160).

But, this is not the way Christians think about morality.  Christians don’t claim something is wrong only if “really awful” people do it.  We argue something is bad if it conflicts with God’s character, which is reflected in his moral commandments.

Thus, Christians would argue it is very possible (and very common!) for very nice people with many other virtues to be engaged in behavior that is very wrong.

Of course, Gulley (and postmodern people in general) do not live out their premise consistently.  If being nice makes a behavior OK, then what happens when a very nice person turns out to be a child molester?  They certainly wouldn’t argue, in that instance, that we must accept such behavior.

Step #2:  Insist that God has bigger things to worry about

The next step in the strategy is to downplay God’s holiness.  He’s not concerned about sexual sin anyway.  It doesn’t really bother him.  He’s got bigger things to worry about.

Gulley states this plainly to the elderly couple, “You know, friends, I think God has bigger things to worry about. Let’s just be grateful you have each other” (158).

Of course, one is free to portray God in this manner. But, they cannot claim that this is the God of the Bible.  The God of the Bible is actually very holy, and talks a good bit about sexual activity and sexual sin.  And that’s not just because God is prudish and “old school,” but because sexual sin hits at the heart of our humanity.  It also hits against the way marriage reflects the union of Christ and his church.

Step #3: Show that the sexual behavior actually leads to good results

The third strategic step is no less brilliant. Gulley then shows how the sexual sin actually has good results.  Or, if not good results, then at least that sexual activity solves other problems.

Standing behind this argument is an unspoken premise, namely that something is good if it leads to something good.  Good results justify the behavior.

In terms of the elderly couple, Gulley notes that they were financially strapped and had to live together in order to make ends meet.  Also, they were just “lonely” and needed the companionship (158).

The reason this strategic move works so well, is that anyone who insists they should not be living together sounds like they are callous to their financial situation and care nothing of their loneliness.

But, that is not the biblical perspective.  One can still by very compassionate and sympathetic about their situation, and, at the same time, remind them they still need to follow God’s guidance for sexual activity.  The two are not mutually exclusive.

Moreover, we would want to challenge the idea that good results justify the behavior.  Again, postmodern folks don’t apply that to other areas.  My inability to pay rent on my house does not give me the right to rob a bank.

Step #4: Portray those against certain sexual behaviors as mean-spirited and cruel

Every good story has a foil–a nemesis you can cheer against.  In this story of the elderly couple, Gulley describes the church elder who first informed him of this couple’s situation.  Instead of the warm, positive description given to the elderly couple, this man gets the opposite.

He is portrayed a “critical,” “unduly upset,” one who “roundly condemned” others, and eager to enforce his “rather extensive sexual code” (v.159). Gulley even implies he is financially stingy, unwilling to help this poor elderly couple.

So, according to Gulley’s overly simplistic portrayal, it’s not the people engaging in sexual sin that are the problem, but it is the guy who points it out who is the problem!

This is the morality of postmodernity.  The tables are reversed.

Completely missing in this account is the idea that sin harms people and that perhaps this elder was genuinely concerned with the damage that sexual sin causes in peoples lives.  In other words, is it possible–this is a shocking idea in our postmodern world–that is actually loving to confront sin?

Step #5:  Insist Jesus is on your side

The final step in the justification of sexual sin is to enlist the help of Jesus. To do so, Gulley trots out the standard cliches about Jesus being more gracious to sinners than to the legalists. He even appeals (not surprisingly) to the story of Jesus being anointed by the sinful woman (166).

What Gulley leaves out, however, is that the woman came to Jesus not defiant in her sins but repentant of them!  Indeed, Jesus indicates that “her sins. . . are many” but that they “are forgiven” (Luke 7:47).   Yes, Jesus forgives sinners.  But we must acknowledge and admit we are sinners.

In sum, Gulley’s ninth commandment is a masterpiece of progressive Christianity.  It runs through the classic playbook of justifying sexual sin and, at first glance, can seem quite compelling.

But in the end it just doesn’t hold up.  We are not called to care about love instead of sex.  We are called to care about both.

Read the whole story
4 hours ago
Texas, Earth
Share this story

The Snowflake Culture Is Killing Our Kids

1 Share

Did you know “jazz hands” are slowly replacing clapping? No, really: Clapping as been banned at a leading university in the U.K. “to avoid triggering anxiety” for students.

Lest you think this practice doesn’t exist in the U.S., I can personally vouch that it does. When I spoke at Bard College in New York last year, the students there did this exact thing with their hands whenever one of their classmates would challenge me and they wanted to show their support. I couldn’t figure out what was going on until about halfway through the talk when I just flat-out asked the students,”What on Earth are you all doing?” (I had kind of figured it out by then, but I wanted to hear them explain it.)

Ironically, just after reading the U.K. article I got text from a friend who said our local high school is doing away with class rank, valedictorian, and salutatorian. The message? It’s just too stressful for kids to lose. They can’t cope.

This attempt to shield young people from anything uncomfortable is pure madness. We are setting kids up for a lifetime of pain.

The ability to cope with the myriad of changes and challenges that will occur throughout their lives, and the ability to form lasting bonds with people despite the inevitable conflict it brings, is crucial. Who’s modeling for kids how to cope with setbacks and adversity? Who’s educating them on strategies for how to make their way in the world?

No one. That’s who.

I’m currently reading Make Your Bed, by Adm. William H. McRaven, which is based on a popular graduation speech the author gave at the University of Texas at Austin in 2014. In that speech, McRaven listed 10 life lessons from basic SEAL training. No. 4 is this: If you want to change the world, get over being a sugar cookie and keep moving forward. “There were many a student,” he wrote, “who just couldn’t accept the fact that all their effort was in vain. … Those students didn’t understand the purpose of the drill. You were never going to succeed. You were never going to have a perfect uniform.”

Similar to McRaven’s book is Jordan Peterson’s wildly popular book 12 Rules for Life. Rule No. 5 is: “Do not let children do anything that makes you dislike them,” in which he essentially tells parents not to rescue their children from hardship. “Children are damaged when those charged after their care, afraid of any conflict or upset, no longer dare to correct them and leave them without guidance. I can recognize such children on the street. They are doughy and unfocused and vague. They are leaden and dull instead of golden and bright. They are uncarved blocks, trapped in a perpetual state of waiting-to-be.”

While I’m grateful for writers such as Peterson and McRaven, who have a solid grasp on how to cope in a world that is often cruel and difficult, I’m terribly sad that it takes reading their work to learn what parents and educators should have taught their children all along.

This snowflake culture is killing our kids.

via Washington Examiner

The post The Snowflake Culture Is Killing Our Kids appeared first on Sovereign Nations.

Read the whole story
1 day ago
Texas, Earth
Share this story

Why We Forget Most of the Books We Read

1 Share

Signed in as joshuapoehls

Share this story on NewsBlur

Shared stories are on their way...

Read the whole story
4 days ago
Texas, Earth
Share this story

Wi-Fi now has version numbers, and Wi-Fi 6 comes out next year

1 Share

If you’ve ever bought a Wi-Fi router, you may have had to sort through specs that read like complete gibberish — like “802.11ac” or “a/b/g/n.” But going forward, Wi-Fi is adopting version numbers so that it’ll be easier to tell whether the router or device you’re buying is on the latest version.

In the past, Wi-Fi versions were identified by a letter or a pair of letters that referred to a wireless standard. The current version is 802.11ac, but before that, we had 802.11n, 802.11g, 802.11a, and 802.11b. It was not comprehensible, so the Wi-Fi Alliance — the group that stewards the implementation of Wi-Fi — is changing it.

All of those convoluted codenames are being changed. So instead of the current Wi-Fi being called 802.11ac, it’ll be called Wi-Fi 5 (because it’s the fifth version). It’ll probably make more sense this way, starting with the first version of Wi-Fi, 802.11b:

Wi-Fi 1: 802.11b (1999)
Wi-Fi 2: 802.11a (1999)
Wi-Fi 3: 802.11g (2003)
Wi-Fi 4: 802.11n (2009)
Wi-Fi 5: 802.11ac (2014)

Now, instead of wondering whether “ac” is better than “n” or if the two versions even work together, you’ll just look at the number. Wi-Fi 5 is higher than Wi-Fi 4, so obviously it’s better. And since Wi-Fi networks have always worked together, it’s somewhat clearer that Wi-Fi 5 devices should be able to connect with Wi-Fi 4 devices, too. (Technically, Wi-Fi 1, Wi-Fi 2, and Wi-Fi 3 aren’t being branded because they aren’t widely in use, but I’ve labeled how it would look above for clarity.)

The Wi-Fi Alliance even wants to see this branding go beyond hardware. So in the future when you connect to a Wi-Fi network on your phone or laptop, your device will tell you what Wi-Fi version you’re connected to. That way, if two networks are available — one showing “4” and the other showing “5” — you’d be able to choose the newer, faster option.

Now that the retroactive renaming is done, it’s time for the future. If you’ve been closely following router developments over the past year (no judgments here), you’ll know that the next generation of Wi-Fi is on the horizon, with the promise of faster speeds and better performance when handling a multitude of devices. It was supposed to be called 802.11ax, but now it’ll go by a simpler name: Wi-Fi 6.

The Wi-Fi Alliance says that it expects companies to adopt this numerical advertising in place of the classic lettered versions. It also expects to see earlier versions of Wi-Fi start to be referred to by their updated numbered names as well.

Because the Wi-Fi Alliance represents just about every major company that makes any kind of product with Wi-Fi in it, its actions usually reflect what the industry wants. So presumably, tech companies are on board with the branding change and will start to advertise it this way.

But it seems very possible that there will be some confusion in the interim as consumers get used to the new naming and companies aren’t standardized based on what convention they use. After years of seeing letters, it may be just as confusing to suddenly see a number. And if, say, the next iPhone advertises support for 802.11ax instead of Wi-Fi 6, then this branding effort could go nowhere.

“The Wi-Fi Alliance expects very broad adoption of the term,” Kevin Robinson, the Alliance’s marketing chief, said in a phone call with The Verge. “It’s very unlikely it will be immediately universally adopted — that is just not the way any of these things work. But the industry will move to this generational approach of naming, and ultimately the consumers and industry both will benefit from that move.”

Robinson says the industry conversation around renaming Wi-Fi generations has been “very transparent” and that members have been discussing the shift with each other, so they should be aware and on board with the fact that it’s happening. The Alliance can’t force anyone to adopt the branding, and it will require a synchronized, concerted industry effort to change over in a way that doesn’t end up adding more confusion. But the Alliance thinks it will begin to happen as Wi-Fi 6 devices start to come out next year.

So far, at least one major consumer router company is on board with the change: Netgear, which in a statement accompanying the rebranding announcement said it believes “this will help customers better understand and appreciate” the difference between Wi-Fi generations. That suggests this language will start to appear in front of consumers next year, at least on some newer routers.

Overall, I do think it’s a good idea. No one should have to figure out which arbitrary collection of letters represents the version of Wi-Fi they want. Version numbers are intuitive and widely understood. Switching the branding could get messy, but it seems like a simpler future for Wi-Fi’s naming.

Read the whole story
15 days ago
Texas, Earth
Share this story

Your Body is a Temple of the Holy Spirit

1 Share

Perhaps you’ve been told that your body is a temple of the Holy Spirit (1 Cor 6:19). And perhaps this declaration came in the wake of an argument against drinking alcohol, smoking tobacco, piercing a part of your body, or getting a tattoo. This go-to verse has kept countless multitudes in reverent submission to a variety of cultural expectations. At least until many of those submissive masses come of age. When many inevitably rebel against the behavioral expectations set for them, are they rebelling against the word of God?

Context matters. If we learn to read the Bible for what it is—and not as a collection of independently assembled proverbial sayings—we’ll discover that some of our most familiar passages don’t actually mean what we’ve always assumed.

Heart2 (2011), Creative Commons

The Verse

It appears rather straightforward. I’ll even go as far as to quote two verses:

Do you not know that your body is a temple of the Holy Spirit within you, whom you have from God? You are not your own, for you were bought with a price. So glorify God in your body. (1 Cor 6:19-20)

Easy, right? If you profess to follow the Lord Jesus Christ, your body has become a temple for his Spirit. Therefore, it is not appropriate for you to put harmful substances (alcohol, tobacco) into it, or to mutilate your body with excessive piercings. Glorifying God in your body requires you to abstain from such harmful behaviors.


Let’s just make sure to follow that line of thinking all the way into the station. If this verse prohibits alcohol, tobacco, or piercings, then how much more does it also prohibit caffeine, chocolate cake, bacon grease, late nights, failure to bathe, steel factory employment, vasectomies, and drivers’ licenses? Each of these things either 1) introduces harmful substances to the body, 2) puts the body at significant risk of harm, or 3) makes permanent bodily changes for reasons other than preserving health.

Charles Spurgeon understood the absurdity of this logic. The story is told1 of the time he met Dwight L. Moody. Upon being greeted by the Prince of Preachers chomping on a flaming stogie, Moody exclaims, “How could you, a man of God, smoke that cigar?” Spurgeon advances on Moody with pointing finger aimed at the latter’s seriously overweight gut: “The same way that you, a man of God, can be that fat.”

The Context

But we need not rely on witticisms or sophistry to make the point. The context is more than adequate to the task.

The main idea of Paul’s first letter to the Corinthians is that the church of God, set apart in Christ Jesus, must live in harmony and not with factional infighting (1 Cor 1:2, 10-11). He first addresses how factional thinking betrays the world’s wisdom and is contrary to Christ’s wisdom (1 Cor 1-4). Then he turns to matters of sexual conduct.

In 1 Cor 5, Paul addresses a serious matter with serious words. The Corinthians must not tolerate sexual sin, especially not sin that even pagans would refuse to tolerate (1 Cor 5:1). This leads Paul to clarify what sort of people they ought to dissociate from: not all sinners, but those who walk proudly in sin while bearing the name of Christ (1 Cor 5:9-11). The church has a responsibility to judge those inside her community (1 Cor 5:12-13).

This topic of sitting in judgment on offenders leads Paul into a tangential discussion of lawsuits (1 Cor 6:1). His point is that we should be able to trust the church to be competent in rendering justice, as we will one day judge the world (1 Cor 6:2). The unrighteous will not inherit the kingdom (the authority to judge the world), but the righteous will (1 Cor 6:9-10). Some of you were in the former group, but now you are in the latter (1 Cor 6:11).

In 1 Cor 6:12, Paul is back on his main topic of sexual misconduct. He deals with what must have been a common saying among Corinthian Christians: “All things are lawful for me” (1 Cor 6:12). But he clarifies that things are lawful only insofar as they are helpful and not enslaving. He questions another saying they have about food (1 Cor 6:13) before homing in on his main point in this part of the argument: “The body is not meant for sexual immorality, but for the Lord, and the Lord for the body” (1 Cor 6:13).

At this point, he moves into his metaphor of the body as a “member” of Christ (a part of Christ’s own body). He applies this to the sin of prostitution (1 Cor 6:15). One who joins with a prostitute becomes one flesh with the prostitute (1 Cor 6:16), when that person ought to be one spirit with the Lord (1 Cor 6:17).

His application? “Flee from sexual immorality” (1 Cor 6:18). To support this application, he uses the metaphor of temple to describe the body. Your body is the Holy Spirit’s temple; therefore, do not offer that temple in union with an illicit sexual partner (something well-accepted in Corinthian culture at the local pagan temple, considered an act of worship).

After prohibiting ungodly sexual ethics in 1 Cor 5-6, Paul moves on in chapter 7 to promote a godly sexual ethic. This rounds out the discussion of sexual ethics, and connects it back to the main theme of living in harmony for the good of the community.

The Linchpin

Tucked right between the application (1 Cor 6:18a) and the temple metaphor (1 Cor 6:19) is a crucial clarifying statement: “Every other sin a person commits is outside the body, but the sexually immoral person sins against his own body” (1 Cor 6:18b). Paul explicitly excludes every other sin from his temple metaphor. Therefore, we are not authorized by the Lord—in fact, we abuse his word—if we use it to address any other sin besides sexual immorality.


Please note: In this post, I am not arguing for drinking alcohol, smoking tobacco, getting a tattoo, or piercing your body. Those topics are complex and require more discussion than I’ve offered here. I am simply throwing 1 Cor 6:19 out of the discussion. When discussing anything besides sexual immorality, “your body is a temple of the Holy Spirit” is out of bounds. Part of your training for making wise ethical judgments is coming to understand this fact (1 Cor 6:2).

Context matters.

<sup>1</sup>I say “the story is told” because I have not been able to track down an original source for this story.

Thanks for visiting Knowable Word! If you like this article, you might be interested in receiving regular updates from us. You can sign up for our email list (enter your address in the box on the upper right of this page), follow us on




, or subscribe to our

RSS feed

Thanks to Matthew Bair for the idea for this post. Click to see more examples of why context matters.

Read the whole story
18 days ago
Texas, Earth
Share this story

Software disenchantment @ tonsky.me


Translations: Italian Russian

I’ve been programming for 15 years now. Recently our industry’s lack of care for efficiency, simplicity, and excellence started really getting to me, to the point of me getting depressed by my own career and the IT in general.

Modern cars work, let’s say for the sake of argument, at 98% of what’s physically possible with the current engine design. Modern buildings use just enough material to fulfill their function and stay safe under the given conditions. All planes converged to the optimal size/form/load and basically look the same.

Only in software, it’s fine if a program runs at 1% or even 0.01% of the possible performance. Everybody just seems to be ok with it. People are often even proud about how much inefficient it is, as in “why should we worry, computers are fast enough”:

@tveastman: I have a Python program I run every day, it takes 1.5 seconds. I spent six hours re-writing it in rust, now it takes 0.06 seconds. That efficiency improvement means I’ll make my time back in 41 years, 24 days :-)

You’ve probably heard this mantra: “programmer time is more expensive than computer time”. What it means basically is that we’re wasting computers at an unprecedented scale. Would you buy a car if it eats 100 liters per 100 kilometers? How about 1000 liters? With computers, we do that all the time.

Everything is unbearably slow

Look around: our portable computers are thousands of times more powerful than the ones that brought man to the moon. Yet every other webpage struggles to maintain a smooth 60fps scroll on the latest top-of-the-line MacBook Pro. I can comfortably play games, watch 4K videos but not scroll web pages? How is it ok?

Google Inbox, a web app written by Google, running in Chrome browser also by Google, takes 13 seconds to open moderately-sized emails:

It also animates empty white boxes instead of showing their content because it’s the only way anything can be animated on a webpage with decent performance. No, decent doesn’t mean 60fps, it’s rather “as fast as this web page could possibly go”. I’m dying to see web community answer when 120Hz displays become mainstream. Shit barely hits 60Hz already.

Windows 10 takes 30 minutes to update. What could it possibly be doing for that long? That much time is enough to fully format my SSD drive, download a fresh build and install it like 5 times in a row.

Pavel Fatin: Typing in editor is a relatively simple process, so even 286 PCs were able to provide a rather fluid typing experience.

Modern text editors have higher latency than 42-year-old Emacs. Text editors! What can be simpler? On each keystroke, all you have to do is update tiny rectangular region and modern text editors can’t do that in 16ms. It’s a lot of time. A LOT. A 3D game can fill the whole screen with hundreds of thousands (!!!) of polygons in the same 16ms and also process input, recalculate the world and dynamically load/unload resources. How come?

As a general trend, we’re not getting faster software with more features. We’re getting faster hardware that runs slower software with the same features. Everything works way below the possible speed. Ever wonder why your phone needs 30 to 60 seconds to boot? Why can’t it boot, say, in one second? There are no physical limitations to that. I would love to see that. I would love to see limits reached and explored, utilizing every last bit of performance we can get for something meaningful in a meaningful way.

Everything is HUUUUGE

And then there’s bloat. Web apps could open up to 10× faster if you just simply block all ads. Google begs everyone to stop shooting themselves in their feet with AMP initiative—a technology solution to a problem that doesn’t need any technology, just a little bit of common sense. If you remove bloat, the web becomes crazy fast. How smart do you have to be to understand that?

Android system with no apps takes almost 6 Gb. Just think for a second how obscenely HUGE that number is. What’s in there, HD movies? I guess it’s basically code: kernel, drivers. Some string and resources too, sure, but those can’t be big. So, how many drivers do you need for a phone?

Windows 95 was 30Mb. Today we have web pages heavier than that! Windows 10 is 4Gb, which is 133 times as big. But is it 133 times as superior? I mean, functionally they are basically the same. Yes, we have Cortana, but I doubt it takes 3970 Mb. But whatever Windows 10 is, is Android really 150% of that?

Google keyboard app routinely eats 150 Mb. Is an app that draws 30 keys on a screen really five times more complex than the whole Windows 95? Google app, which is basically just a package for Google Web Search, is 350 Mb! Google Play Services, which I do not use (I don’t buy books, music or videos there)—300 Mb that just sit there and which I’m unable to delete.

All that leaves me around 1 Gb for my photos after I install all the essential (social, chats, maps, taxi, banks etc) apps. And that’s with no games and no music at all! Remember times when an OS, apps and all your data fit on a floppy?

Your desktop todo app is probably written in Electron and thus has userland driver for Xbox 360 controller in it, can render 3d graphics and play audio and take photos with your web camera.

A simple text chat is notorious for its load speed and memory consumption. Yes, you really have to count Slack in as a resource-heavy application. I mean, chatroom and barebones text editor, those are supposed to be two of the less demanding apps in the whole world. Welcome to 2018.

At least it works, you might say. Well, bigger doesn’t imply better. Bigger means someone has lost control. Bigger means we don’t know what’s going on. Bigger means complexity tax, performance tax, reliability tax. This is not the norm and should not become the norm. Overweight apps should mean a red flag. They should mean run away scared.

Everything rots

16Gb Android phone was perfectly fine 3 years ago. Today with Android 8.1 it’s barely usable because each app has become at least twice as big for no apparent reason. There are no additional functions. They are not faster or more optimized. They don’t look different. They just…grow?

iPhone 4s was released with iOS 5, but can barely run iOS 9. And it’s not because iOS 9 is that much superior—it’s basically the same. But their new hardware is faster, so they made software slower. Don’t worry—you got exciting new capabilities like…running the same apps with the same speed! I dunno.

iOS 11 dropped support for 32-bit apps. That means if the developer isn’t around at the time of iOS 11 release or isn’t willing to go back and update a once-perfectly-fine app, chances are you won’t be seeing their app ever again.

@jckarter: A DOS program can be made to run unmodified on pretty much any computer made since the 80s. A JavaScript app might break with tomorrow’s Chrome update

Web pages working today would not be compatible with any browser in 10 years time (probably sooner).

“It takes all the running you can do, to keep in the same place”. But what’s the point? I might enjoy occasionally buying a new phone and new MacBook as much as the next guy, but to do so just to be able to run all the same apps which just became slower?

I think we can and should do better than that. Everyone is busy building stuff for right now, today, rarely for tomorrow. But it would be nice to also have stuff that lasts a little longer than that.

Worse is better

Nobody understands anything at this point. Neither they want to. We just throw barely baked shit out there, hope for the best and call it “startup wisdom”.

Web pages ask you to refresh if anything goes wrong. Who has time to figure out what happened?

Any web app produces a constant stream of “random” JS errors in the wild, even on compatible browsers.

The whole webpage/SQL database architecture is built on a premise (hope, even) that nobody will touch your data while you look at the rendered webpage.

Most collaborative implementations are “best effort” and have many common-life scenarios in which they lose data. Ever seen this dialogue “which version to keep?” I mean, bar today is so low that your users would be happy to at least have a window like that.

And no, in my world app that says “I’m gonna destroy some of your work, but you get to choose which one” is not okay.

Linux kills random processes by design. And yet it’s the most popular server-side OS.

Every device I own fails regularly one way or another. My Dell monitor needs a hard reboot from time to time because there’s software in it. Airdrop? You’re lucky if it’ll detect your device, otherwise, what do I do? Bluetooth? Spec is so complex that devices won’t talk to each other and periodic resets are the best way to go.

And I’m not even touching Internet of Things. It’s so far beyond the laughing point I’m not even sure what to add.

I want to take pride in my work. I want to deliver working, stable things. To do that, we need to understand what we are building, in and out, and that’s impossible to do in bloated, over-engineered systems.

Programming is the same mess

It just seems that nobody is interested in building quality, fast, efficient, lasting, foundational stuff anymore. Even when efficient solutions have been known for ages, we still struggle with the same problems: package management, build systems, compilers, language design, IDEs.

Build systems are inherently unreliable and periodically require full clean, even though all info for invalidation is there. Nothing stops us from making build process reliable, predictable and 100% reproducible. Just nobody thinks its important. NPM has stayed in “sometimes works” state for years.

@przemyslawdabek: It seems to me that rm -rf node_modules is indispensable part of workflow when developing Node.js/JavaScript projects.

And build times? Nobody thinks compiler that works minutes or even hours is a problem. What happened to “programmer’s time is more important”? Almost all compilers, pre- and post-processors add significant, sometimes disastrous time tax to your build without providing proportionally substantial benefits.

You would expect programmers to make mostly rational decisions, yet sometimes they do the exact opposite of that. E.g. choosing Hadoop even when it’s slower than running the same task on a single desktop.

Machine learning and “AI” moved software to guessing in the times when most computers are not even reliable enough in the first place.

@rakhim: When an app or a service is described as “AI-powered” or “ML-based”, I read it as “unreliable, unpredictable, and impossible to reason about behavior”. I try to avoid “AI” because I want computers to be the opposite: reliable, predictable, reasonable.

We put virtual machines inside Linux, and then we put Docker inside virtual machines, simply because nobody was able to clean up the mess that most programs, languages and their environment produce. We cover shit with blankets just not to deal with it. “Single binary” is still a HUGE selling point for Go, for example. No mess == success.

And dependencies? People easily add overengineered “full package solutions” to solve the simplest problems without considering their costs. And those dependencies bring other dependencies. You end up with a tree that is something in between of horror story (OMG so big and full of conflicts) and comedy (there’s no reason we include these, yet here they are):

Programs can’t work for years without reboots anymore. Sometimes even days are too much to ask. Random stuff happens and nobody knows why.

What’s worse, nobody has time to stop and figure out what happened. Why bother if you can always buy your way out of it. Spin another AWS instance. Restart process. Drop and restore the whole database. Write a watchdog that will restart your broken app every 20 minutes. Include same resources multiple times, zip and ship. Move fast, don’t fix.

That is not engineering. That’s just lazy programming. Engineering is understanding performance, structure, limits of what you build, deeply. Combining poorly written stuff with more poorly written stuff goes strictly against that. To progress, we need to understand what and why are we doing.

We’re stuck with it

So everything is just a pile of barely working code added on top of previously written barely working code. It keeps growing in size and complexity, diminishing any chance for a change.

To have a healthy ecosystem you need to go back and revisit. You need to occasionally throw stuff away and replace it with better stuff.

But who has time for that? We haven’t seen new OS kernels in what, 25 years? It’s just too complex to simply rewrite by now. Browsers are so full of edge cases and historical precedents by now that nobody dares to write layout engine from scratch.

Today’s definition of progress is either throw more fuel into the fire:

@sahrizv: 2014 - We must adopt #microservices to solve all problems with monoliths.
2016 - We must adopt #docker to solve all problems with microservices.
2018 - We must adopt #kubernetes to solve all problems with docker

or reinventing the wheel:

@dr_c0d3: 2000: Write 100s of lines of XML to “declaratively” configure your servlets and EJBs.
2018: Write 100s of lines of YAML to “declaratively” configure your microservices.
At least XML had schemas…

We’re stuck with what we have, and nobody will ever save us.

Business won’t care

Neither will users. They are only learned to expect what we can provide. We (engineers) say every Android app takes 350 Mb? Ok, they’ll live with that. We say we can’t give them smooth scrolling? Ok, they’ll live with a phone that stutter. We say “if it doesn’t work, reboot”? They’ll reboot. After all, they have no choice.

There’s no competition either. Everybody is building the same slow, bloated, unreliable products. Occasional jump forward in quality does bring competitive advantage (iPhone/iOS vs other smartphones, Chrome vs other browsers) and forces everybody to regroup, but not for long.

So it’s our mission as engineers to show the world what’s possible with today’s computers in terms of performance, reliability, quality, usability. If we care, people will learn. And there’s nobody but us to show them that it’s very much possible. If only we care.

It’s not all bad

There are some bright spots indicating that improving over state-of-the-art is not impossible.

Work Martin Thompson has being doing (LMAX Disruptor, SBE, Aeron) is impressive, refreshingly simple and efficient.

Xi editor by Raph Levien seems to be built with the right principles in mind.

Jonathan Blow has a language he alone develops for his game that can compile 500k lines per second on his laptop. That’s cold compile, no intermediate caching, no incremental builds.

You don’t have to be a genius to write fast programs. There’s no magic trick. The only thing required is not building on top of a huge pile of crap that modern toolchain is.

Better world manifesto

I want to see progress. I want change. I want state-of-the-art in software engineering to improve, not just stand still. I don’t want to reinvent the same stuff over and over, less performant and more bloated each time. I want something to believe in, a worthy end goal, a future better than what we have today, and I want a community of engineers who share that vision.

What we have today is not progress. We barely meet business goals with poor tools applied over the top. We’re stuck in local optima and nobody wants to move out. It’s not even a good place, it’s bloated and inefficient. We just somehow got used to it.

So I want to call it out: where we are today is bullshit. As engineers, we can, and should, and will do better. We can have better tools, we can build better apps, faster, more predictable, more reliable, using fewer resources (orders of magnitude fewer!). We need to understand deeply what are we doing and why. We need to deliver: reliably, predictably, with topmost quality. We can—and should–take pride in our work. Not just “given what we had…”—no buts!

I hope I’m not alone at this. I hope there are people out there who want to do the same. I’d appreciate if we at least start talking about how absurdly bad our current situation in the software industry is. And then we maybe figure out how to get out.


I’m Nikita. Here I write about programming and UI design Subscribe

I also create open-source stuff: Fira Code, AnyBar, DataScript and Rum. If you like what I do and want to get early access to my articles (along with other benefits), you should support me on Patreon.

Read the whole story
26 days ago
Texas, Earth
Share this story
Next Page of Stories