Programming sucks – Telegram
Programming sucks
81 subscribers
12 photos
188 links
Когда вы меняете направление всех стрелок в конусе, вы получаете коконус.
Download Telegram
Haskell is full of these little decisions where it just won't let you do something because it's not "correct" code, and they kind of don't care if that makes coding in it a fight against the compiler.

Rust took that philosophy and applied it pointers.

(c) YC comments on https://nibblestew.blogspot.com/2020/03/its-not-what-programming-languages-do.html
Boilerplate is not the problem. Magic is the problem.

(c) https://news.ycombinator.com/item?id=22995928 (A Critique of React Hooks)
Мне страшно. Мне хочется забиться в угол и плакать. Я не могу быть уверенным как минимум в половине строк, что я пишу. У меня есть чувство, что я строю фекалодендритные конструкции, а убеждение хотя бы самого себя в том, что написанное имеет смысл, занимает неоправданно много времени. Что бы я ни делал, в моём коде будут UB. Я ни на что не могу повлиять. Психологи говорят, что выученная беспомощность тут где-то рядом, так что написание кода на плюсах для психики не очень полезно.

(с) https://habr.com/ru/post/497114/
For the uninitiated, Cascading Style Sheets are a cryptic language developed by the Freemasons to obscure the visual nature of reality and encourage people to depict things using ASCII art.

(c) https://scholar.harvard.edu/files/mickens/files/towashitallaway.pdf
It’s just that Boolean thinking has infected the software world to such an extent that I feel that I have to fight back. Just the idea of comparison to “null” to obtain a Boolean is absurd, even if you think you need a “null” pointer (which you don’t, in a properly designed language).

(c) comments on https://existentialtype.wordpress.com/2011/03/15/boolean-blindness/
Perhaps one of the worst misfeatures of C is the ease with which responsibility for problems can be shifted to the person who wrote the code. “Oh, you segfaulted? I guess you forgot to check for NULL.” If only I had a computer to take care of such tedium for me!

Clearly, computers can’t be expected to do everything for us. But they can be expected to do quite a bit. Programming languages are built for humans, and they ought to eliminate the sorts of rote work humans are bad at whenever possible. A programmer is already busy thinking about the actual problem they want to solve; it’s no surprise that they’ll sometimes forget some tedious detail the language forces them to worry about.

(с) https://eev.ee/blog/2016/12/01/lets-stop-copying-c/
In essence, I would rather be remembered as a bad artist than a good programmer.

(с) The end of the Redis adventure, http://antirez.com/news/133
As I looked for images for the book covers, I came across some odd-looking animal engravings from the 19th century. They seemed to be a good match for all those strange-sounding UNIX terms, and were esoteric enough that I figured they’d probably appeal to programmers.

(c) https://www.oreilly.com/content/a-short-history-of-the-oreilly-animals/
What the heck is this code? What are these method names? set2AsFirstPrime? smallestOddNthMultipleNotLessThanCandidate? Is this meant to be clean code? Is this meant to be a legible, intelligent way to search for prime numbers?

If this is the quality of code which this programmer produces — at his own leisure, under ideal circumstances, with none of the pressures of real production software development, as a teaching example — then why should you pay any attention at all to the rest of his book? Or to his other books?

(c) https://qntm.org/clean
One of the key components of designing a distributed system is deciding when the “distributed” part is actually unnecessarily complex.

(c) Designing Distributed Systems, Brendan Burns, 2018
I would go so far as to say that Kubernetes (or, as the "cool kids" say, k8s) is the worst thing to happen to system administration since systemd.

(c) https://www.roguelazer.com/2020/07/etcd-or-why-modern-software-makes-me-sad/
According to Shaw, people use contempt (of developers using a different programming language, for example) as a social signifier, a way of showing that they belong to the correct group. This sort of contempt certainly plays into this story, where large groups identify themselves primarily by their disdain for systemd and those who work with it. 

(c) Systemd as tragedy [LWN.net]
https://lwn.net/Articles/777595/
Это победа. В одной из моделей боинга в софтине, управляющей генераторами, каждые 248 дней переполняется память и генераторы вырубаются. Проблемы в авиации решают красиво: кривую софтину обнуляют, обесточивая самолёт во время техобслуживания o\

Problem:
This condition is caused by a software counter internal to the GCUs that will overflow after 248 days of continuous power. We
are issuing this AD to prevent loss of all AC electrical power, which could result in loss of control of the airplane
.

Solution:
This AD requires a repetitive maintenance task for electrical power deactivation.

(c) https://s3.amazonaws.com/public-inspection.federalregister.gov/2015-10066.pdf, по наводке https://news.1rj.ru/str/sqaunderhood/217
В Израиле решили тренировать алгоритм, чтобы он мог принимать решения в суде. Анализировали массив простых дел с ясным контекстом происшествий, по которым принимаются бинарные решения — либо штраф, либо 15 суток. Можно было проследить за историей вынесения приговоров в течение нескольких лет и заложить в алгоритм. Приходит новое дело, судья выносит свой вердикт, а люди, ведущие эксперимент, сообщают, какое решение по нему принял алгоритм. На те решения, которые принимает машина, немедленно набрасываются аналитики данных и начинают их изучать. И выясняют чудовищную вещь: у нее есть большой суточный ход. В начале рабочего дня машина выносит более мягкие приговоры, потом жесткость растет, потом снова падает и постепенно восстанавливается. Почему? Оказалось, что чем ближе по времени к обеду, тем приговоры злее, а чем живые судьи более сытые, тем они мягче. И обработка алгоритмом массива дел позволила выявить эту закономерность. Там было много еще разных сюрпризов: оказалось, что алгоритм чудовищный и с точки зрения гендера, и с точки зрения того, какого цвета подсудимый.

После этого эксперимента было сказано: все, никакие алгоритмы пускать никуда нельзя. Простите, но ведь судьи принимали решения точно так же. Судьи — это люди.

(с) https://www.colta.ru/articles/society/25546-iz-zhizni-algoritmov-intervyu-andrey-sebrant-iskusstvennyy-intellekt, via https://news.1rj.ru/str/techsparks/2615
This book is firmly in the tradition that we have come to expect from this author; and my reaction to it is much like my reaction to its predecessors: I think three quarters of it is superb, and the other quarter is outrageous nonsense; and the reason is that Morris Kline really doesn't understand what today's mathematics is about…

(с) https://en.wikipedia.org/wiki/Mathematics:_The_Loss_of_Certainty#cite_ref-6
Formality prioritizes evaluation from the beginning, providing solid compilers to common targets such as JavaScript, Haskell and the EVM…

(с) https://github.com/moonad/formality
Next time you see an argument about whether Javanoscript is a cancer or a boon to our industry, or you see someone like me getting angry about modern apps being crap, ask yourself which camp is speaking. Are they championing beautiful code? Performance and a "deep understanding"? Or do they just want to get work done and ship product?

Ultimately code is code. Even though we have different reasons for writing software, what we write is (usually) compatible. And even when its not (looking at you, Haskell) - there's always a lot of ideas we can learn from and steal.

We all owe each other a lot, after all. Without language wonks we would still be writing assembly. Without systems programmers we wouldn't have operating systems, and haskell and javanoscript would be unusably slow. And without product engineers, everyone else would be forced to write CSS. And trust me, nobody wants that.

(c) https://josephg.com/blog/3-tribes/