From e96ae1397728f6fa303422ba23b91caffae8d3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=BCttler?= Date: Wed, 5 Aug 2020 17:25:13 +0200 Subject: [PATCH 01/23] Added input-processing-output --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 42cd619..4e2de3a 100644 --- a/README.md +++ b/README.md @@ -894,6 +894,21 @@ See also: on Medium](https://medium.com/baseds/foraging-for-the-fallacies-of-distributed-computing-part-1-1b35c3b85b53) - [Deutsch's Fallacies, 10 Years After](http://java.sys-con.com/node/38665) +### Input-Processing-Output is what it is all about + +[input–process–output (IPO) model](https://en.wikipedia.org/wiki/IPO_model) + +There are a thousand tools, programming languages, principles. Finally, it is all this simple pattern: + +1. The method/system/tool gets some input +2. The method/system/tool does some processing +3. The method/system/tool creates some output. + +Example: A HTTP request and the corresponding HTTP response are the perfect examples. Stateless has +won, [CORBA](https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture) is dead. If you use OOP does not matter much for the caller/client. + + + ## Reading List If you have found these concepts interesting, you may enjoy the following books. From 0baacdbdcc8b97bfc567b817719b919fd5af8d8c Mon Sep 17 00:00:00 2001 From: "Hasitha N. Liyanage" Date: Sat, 8 Jan 2022 19:52:15 +0530 Subject: [PATCH 02/23] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index d2ca756..6508b06 100644 --- a/README.md +++ b/README.md @@ -543,6 +543,15 @@ See also: - [Metcalfe's Law](#metcalfes-law) - [Dunbar's Number](#dunbars-number) +### Ringelmann effect + +[Ringelmann effect on Wikipedia](https://en.wikipedia.org/wiki/Ringelmann_effect) + +The Ringelmann effect is the tendency for individual members of a group to become increasingly less productive as the size of their group increases. This effect, discovered by French agricultural engineer Maximilien Ringelmann (1861–1931), illustrates the inverse relationship that exists between the size of a group and the magnitude of group members’ individual contribution to the completion of a task. + +See also: +- [Brooks' Law](#brooks-law) + ### The Law of Conservation of Complexity (Tesler's Law) [The Law of Conservation of Complexity on Wikipedia](https://en.wikipedia.org/wiki/Law_of_conservation_of_complexity) From 269991a7cf9eb222dad33fad17fa06bc391a4dfc Mon Sep 17 00:00:00 2001 From: "Hasitha N. Liyanage" Date: Sat, 8 Jan 2022 19:54:27 +0530 Subject: [PATCH 03/23] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6508b06..f15f4bb 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor * [Premature Optimization Effect](#premature-optimization-effect) * [Putt's Law](#putts-law) * [Reed's Law](#reeds-law) + * [Ringelmann effect](#ringelmann-effect) * [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law) * [The Law of Demeter](#the-law-of-demeter) * [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) From ff00ccc5c3949159471e1ab3e0eaec453cd7788a Mon Sep 17 00:00:00 2001 From: "Hasitha N. Liyanage" Date: Sat, 8 Jan 2022 20:10:16 +0530 Subject: [PATCH 04/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f15f4bb..4710890 100644 --- a/README.md +++ b/README.md @@ -548,7 +548,7 @@ See also: [Ringelmann effect on Wikipedia](https://en.wikipedia.org/wiki/Ringelmann_effect) -The Ringelmann effect is the tendency for individual members of a group to become increasingly less productive as the size of their group increases. This effect, discovered by French agricultural engineer Maximilien Ringelmann (1861–1931), illustrates the inverse relationship that exists between the size of a group and the magnitude of group members’ individual contribution to the completion of a task. +The Ringelmann effect is the tendency of an individual to become increasingly inefficient as more and more people are involved in a task. In other words, as more individuals are added to a team, the more the average individual performance decreases. Multiple causes are believed to be at work, including social loafing and loss of coordination. See also: - [Brooks' Law](#brooks-law) From 36492867d3f619a58877ef3966a4a506b8615f47 Mon Sep 17 00:00:00 2001 From: Thomas Merz Date: Thu, 20 Jan 2022 08:42:49 +0100 Subject: [PATCH 05/23] Added Clarke's three laws for issues/375 --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 5f2c834..419aa24 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor * [The Broken Windows Theory](#the-broken-windows-theory) * [Brooks' Law](#brooks-law) * [CAP Theorem (Brewer's Theorem)](#cap-theorem-brewers-theorem) + * [Clarke's three laws](#clarkes-three-laws) * [Conway's Law](#conways-law) * [Cunningham's Law](#cunninghams-law) * [Dunbar's Number](#dunbars-number) @@ -187,6 +188,18 @@ See also: - [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) - [PACELC](#TODO) +### Clarke's three laws + +[Clarke's three laws on Wikipedia](https://en.wikipedia.org/wiki/Clarke's_three_laws) + +Arthur C. Clarke, an british science fiction writer, formulated three adages that are known as Clarke's three laws. The third law is the best known and most widely cited. + +These so-called laws are: +- When a distinguished but elderly scientist states that something is possible, they are almost certainly right. When they state that something is impossible, they are very probably wrong. +- The only way of discovering the limits of the possible is to venture a little way past them into the impossible. +- Any sufficiently advanced technology is indistinguishable from magic. + + ### Conway's Law [Conway's Law on Wikipedia](https://en.wikipedia.org/wiki/Conway%27s_law) From f9ff7d844d3f49b6a100b9d73fb993b1aae3e982 Mon Sep 17 00:00:00 2001 From: Marcos Valle <5929526+marcosValle@users.noreply.github.com> Date: Sun, 13 Feb 2022 17:39:00 +0100 Subject: [PATCH 06/23] Add Twyman's rule for data analysis --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index d6b4fbd..0bcb6c7 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor * [The Scout Rule](#the-scout-rule) * [The Spotify Model](#the-spotify-model) * [The Two Pizza Rule](#the-two-pizza-rule) + * [Twyman's law](#twymans-law) * [Wadler's Law](#wadlers-law) * [Wheaton's Law](#wheatons-law) * [Principles](#principles) @@ -669,6 +670,14 @@ The number of links between people can be expressed as `n(n-1)/2` where n = numb Complete graph; Links between people +### Twyman's law + +[Twyman's Law on Wikipedia](https://en.wikipedia.org/wiki/Twyman%27s_law) + +> The more unusual or interesting the data, the more likely they are to have been the result of an error of one kind or another. + +The law is based on the fact that errors in data measurement and analysis can lead to observed quantities that are wildly different from typical values. These errors are usually more common than real changes of similar magnitude in the underlying process being measured. For example, if an analyst at a software company notices that the number of users has doubled overnight, the most likely explanation is a bug in logging, rather than a true increase in users.[2] + ### Wadler's Law [Wadler's Law on wiki.haskell.org](https://wiki.haskell.org/Wadler's_Law) From 7c92a919885aa0acdfb6b720bdc665cb05640311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C6=B0=C6=A1ng=20=C4=90=E1=BB=A9c=20Tr=E1=BB=8Dng?= <39333905+duongductrong@users.noreply.github.com> Date: Sun, 20 Nov 2022 23:40:50 +0700 Subject: [PATCH 07/23] =?UTF-8?q?Fix=20misspelling=20from=20"s=E1=BA=ABn"?= =?UTF-8?q?=20to=20"s=E1=BA=B5n"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The word misspelling "sẫn", The correct word is "sẵn" --- translations/vi.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/vi.md b/translations/vi.md index c2823b4..060bf3a 100644 --- a/translations/vi.md +++ b/translations/vi.md @@ -167,10 +167,10 @@ Xem thêm: Định lý CAP (do Eric Brewer định nghĩa) tuyên bố rằng đối với một kho lưu trữ dữ liệu phân tán, chỉ có thể thực hiện hai trong ba bảo đảm sau (nhiều nhất): - Tính đồng bộ (Consistency): khi đọc dữ liệu, mọi yêu cầu đều nhận được _dữ liệu gần đây nhất_ hoặc lỗi được trả về -- Tính sẫn sàng (Availability): khi đọc dữ liệu, mọi yêu cầu đều nhận được _phản hồi không lỗi_ , mà không cần đảm bảo rằng đó là dữ liệu _mới nhất_ +- Tính sẵn sàng (Availability): khi đọc dữ liệu, mọi yêu cầu đều nhận được _phản hồi không lỗi_ , mà không cần đảm bảo rằng đó là dữ liệu _mới nhất_ - Chịu lỗi(P-Partition Tolerance): khi một số lượng tùy ý yêu cầu mạng giữa các nút không thành công, hệ thống tiếp tục hoạt động như thiết kế. -Cốt lõi của lý do là như sau. Không thể đảm bảo sai biệt cục bộ không xảy ra (xem [Sự sụp đổ của Máy tính Phân tán](#the-fallacies-of-distributed-computing) ). Do đó, trong trường hợp sai biệt cục bộ, chúng ta có thể hoặc ngưng công việc (tăng tính đồng bộ và giảm tính sẫn sàng) hoặc tiếp tục công việc (tăng tính sẫn sàng nhưng giảm tính đồng bộ). +Cốt lõi của lý do là như sau. Không thể đảm bảo sai biệt cục bộ không xảy ra (xem [Sự sụp đổ của Máy tính Phân tán](#the-fallacies-of-distributed-computing) ). Do đó, trong trường hợp sai biệt cục bộ, chúng ta có thể hoặc ngưng công việc (tăng tính đồng bộ và giảm tính sẵn sàng) hoặc tiếp tục công việc (tăng tính sẵn sàng nhưng giảm tính đồng bộ). Tên gọi xuất phát từ các chữ cái đầu tiên (Consistency, Availability, Partition Tolerance). Lưu ý rằng điều rất quan trọng cần lưu ý là điều này _không_ liên quan đến [_ACID_](#TODO) , có định nghĩa khác về tính đồng bộ. Gần đây hơn, [định lý PACELC](#TODO) đã được phát triển để bổ sung các ràng buộc về độ trễ và tính đồng bộ khi mạng _không bị_ sai biệt cục bộ (tức là khi hệ thống đang hoạt động như mong đợi). From 97adc7dbb152014aa3e99387ba7b66d5955ed519 Mon Sep 17 00:00:00 2001 From: Gustavo Ribeiro <57065994+gustavothecoder@users.noreply.github.com> Date: Sat, 3 Dec 2022 14:47:07 -0300 Subject: [PATCH 08/23] Fix typo: The Pragmatic Developer to The Pragmatic Programmer --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 96f9943..78c46d9 100644 --- a/README.md +++ b/README.md @@ -950,7 +950,7 @@ See also: > Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. -DRY is an acronym for _Don't Repeat Yourself_. This principle aims to help developers reducing the repetition of code and keep the information in a single place and was cited in 1999 by Andrew Hunt and Dave Thomas in the book [The Pragmatic Developer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer) +DRY is an acronym for _Don't Repeat Yourself_. This principle aims to help developers reducing the repetition of code and keep the information in a single place and was cited in 1999 by Andrew Hunt and Dave Thomas in the book [The Pragmatic Programmer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer) > The opposite of DRY would be _WET_ (Write Everything Twice or We Enjoy Typing). @@ -958,7 +958,7 @@ In practice, if you have the same piece of information in two (or more) differen See also: -- [The Pragmatic Developer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer) +- [The Pragmatic Programmer](https://en.wikipedia.org/wiki/The_Pragmatic_Programmer) ### The KISS principle From 87ec516a2374a38a152a91a9c8ccebbdcfb7326c Mon Sep 17 00:00:00 2001 From: Abdurrahman Rajab Date: Sun, 1 Jan 2023 13:09:15 +0300 Subject: [PATCH 09/23] Add language contributor - Arabic --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 78c46d9..f9f23d5 100644 --- a/README.md +++ b/README.md @@ -1055,6 +1055,7 @@ Thanks to a number of wonderful contributors, Hacker Laws is available in a numb | Language | Moderator | Status | |----------|-----------|--------| +| [AR Arabic / Arabic](./translations/ar-AR.md) | [Abdurrahman Rajab - a0m0rajab](https://github.com/a0m0rajab) | . | | [🇮🇩 Bahasa Indonesia / Indonesian](./translations/pt-BR.md) | [arywidiantara](https://github.com/arywidiantara) | [![gitlocalized ](https://gitlocalize.com/repo/2513/id/badge.svg)](https://gitlocalize.com/repo/2513/id?utm_source=badge) | | [🇧🇷 Brasileiro / Brazilian](./translations/pt-BR.md) | [Eugênio Moreira](https://github.com/eugenioamn), [Leonardo Costa](https://github.com/leofc97) | [![gitlocalized ](https://gitlocalize.com/repo/2513/pt-BR/badge.svg)](https://gitlocalize.com/repo/2513/pt-BR?utm_source=badge) | | [🇨🇳 中文 / Chinese](https://github.com/nusr/hacker-laws-zh) | [Steve Xu](https://github.com/nusr) | Partially complete | From e4662cbc27d04fb968220837633034420b7fb11a Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Fri, 10 Mar 2023 11:06:50 +0800 Subject: [PATCH 10/23] feat: principle of least astonishment --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f9f23d5..bfb91db 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor * [The KISS principle](#the-kiss-principle) * [YAGNI](#yagni) * [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) + * [The Principle of Least Astonishment](#the-principle-of-least-astonishment) * [Reading List](#reading-list) * [Online Resources](#online-resources) * [PDF eBook](#pdf-ebook) @@ -844,7 +845,6 @@ See Also: - [Hyrum's Law](#hyrums-law-the-law-of-implicit-interfaces) - ### SOLID This is an acronym, which refers to: @@ -1018,6 +1018,22 @@ See also: - [Foraging for the Fallacies of Distributed Computing (Part 1) - Vaidehi Joshi on Medium](https://medium.com/baseds/foraging-for-the-fallacies-of-distributed-computing-part-1-1b35c3b85b53) +### The Principle of Least Astonishment + +[The Principle of Least Astonishment on Wikipedia](https://en.wikipedia.org/wiki/Principle_of_least_astonishment) + +> People are part of the system. The design should match the user's experience, expectations, and mental models. +> +> Frans Kaashoek + +This principle proposes that systems and interfaces should be designed in a way that features and functionality is intuitive and matches users expectations. Features that 'surprise' users should be discouraged, and features that can be intuitively reasoned about based on existing common patterns and practices should be encouraged. + +Examples are common in user interfaces, where a number of paradigms are common, such as a 'pull down' on a mobile app page to reload. Another example would be command line tools - where standard Unix and Linux tools have created a set of common expectations on how CLI tools can be expected to work, such as how command line flags are named. + +See also: + +- [Convention Over Configuration](#todo) + ## Reading List If you have found these concepts interesting, you may enjoy the following books. From 9bd03d834554311e938e880f5c99c5ecc409a13f Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Fri, 10 Mar 2023 16:10:24 +1300 Subject: [PATCH 11/23] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bfb91db..173eb38 100644 --- a/README.md +++ b/README.md @@ -1026,9 +1026,9 @@ See also: > > Frans Kaashoek -This principle proposes that systems and interfaces should be designed in a way that features and functionality is intuitive and matches users expectations. Features that 'surprise' users should be discouraged, and features that can be intuitively reasoned about based on existing common patterns and practices should be encouraged. +This principle proposes that systems and interfaces should be designed in a way that features and functionality is easily discovered and matches users expectations. Features that 'surprise' users should be discouraged in favour of features that can be intuitively reasoned about based on existing patterns and practices. -Examples are common in user interfaces, where a number of paradigms are common, such as a 'pull down' on a mobile app page to reload. Another example would be command line tools - where standard Unix and Linux tools have created a set of common expectations on how CLI tools can be expected to work, such as how command line flags are named. +Many examples are present in user interfaces, such as a 'pull down' gesture on a mobile appliation to refresh content. Another example would be command line tools, where many standards exist for how parameters are named, common parameters that should be available and so on. See also: From c0ec1b5fdb376c542099cef6b62966813805b30e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20B=C3=BCschel?= <13087421+tobiasbueschel@users.noreply.github.com> Date: Wed, 5 Apr 2023 22:10:46 +0800 Subject: [PATCH 12/23] Update small spelling mistake in .github/workflows --- .github/workflows/build-on-pull-request.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-on-pull-request.yaml b/.github/workflows/build-on-pull-request.yaml index 447ceac..1b19246 100644 --- a/.github/workflows/build-on-pull-request.yaml +++ b/.github/workflows/build-on-pull-request.yaml @@ -36,7 +36,7 @@ jobs: name: hacker-laws.pdf path: hacker-laws.pdf - - name: Publish Intermiediate Markdown Artifact + - name: Publish Intermediate Markdown Artifact uses: actions/upload-artifact@master with: name: hacker-laws.md From 560ff0d9f1ece2e337c9593aa274202e0f123c4d Mon Sep 17 00:00:00 2001 From: Gguinea Date: Fri, 26 May 2023 18:17:34 +0200 Subject: [PATCH 13/23] SOLID acronym cannot be translated --- translations/pl.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translations/pl.md b/translations/pl.md index a6ac68b..32439f1 100644 --- a/translations/pl.md +++ b/translations/pl.md @@ -59,7 +59,7 @@ Podoba Ci się ten projekt? Proszę rozważyć [sponsorowanie mnie](https://gith - [Zasada Shirky](#the-shirky-principle) - [Zasada Piotra](#the-peter-principle) - [Zasada solidności (prawo Postela)](#the-robustness-principle-postels-law) - - [SOLIDNY](#solid) + - [SOLID](#solid) - [Zasada pojedynczej odpowiedzialności](#the-single-responsibility-principle) - [Zasada otwarcia/zamknięcia](#the-openclosed-principle) - [Zasada substytucji Liskov](#the-liskov-substitution-principle) @@ -812,7 +812,7 @@ Zobacz też: - [Prawo Hyruma](#hyrums-law-the-law-of-implicit-interfaces) -### SOLIDNY +### SOLID To jest akronim, który odnosi się do: @@ -837,7 +837,7 @@ Teoretycznie powinno to sprawić, że kod będzie bardziej niezawodny i łatwiej Zobacz też: - [Programowanie obiektowe](#todo) -- [SOLIDNY](#solid) +- [SOLID](#solid) ### Zasada otwarcia/zamknięcia @@ -854,7 +854,7 @@ Ta zasada ma szczególne znaczenie w przypadku programowania obiektowego, w któ Zobacz też: - [Programowanie obiektowe](#todo) -- [SOLIDNY](#solid) +- [SOLID](#solid) ### Zasada substytucji Liskov @@ -871,7 +871,7 @@ Zasada ta ma szczególne znaczenie w przypadku programowania obiektowego, w któ Zobacz też: - [Programowanie obiektowe](#todo) -- [SOLIDNY](#solid) +- [SOLID](#solid) ### Zasada segregacji interfejsów @@ -888,7 +888,7 @@ Zasada ta ma szczególne znaczenie dla programowania obiektowego, w którym inte Zobacz też: - [Programowanie obiektowe](#todo) -- [SOLIDNY](#solid) +- [SOLID](#solid) - [Pisanie kaczki](#todo) - [Oddzielenie](#todo) @@ -907,7 +907,7 @@ Ta zasada jest złożona, ponieważ może się wydawać, że „odwraca” oczek Zobacz też: - [Programowanie obiektowe](#todo) -- [SOLIDNY](#solid) +- [SOLID](#solid) - [Odwrócenie sterowania](#todo) - [Wstrzykiwanie zależności](#todo) From 3adb816f30cad9771d53374b26fb7309c8a6d3af Mon Sep 17 00:00:00 2001 From: Gguinea Date: Sat, 27 May 2023 20:33:11 +0200 Subject: [PATCH 14/23] Fix navigation for polish translation. --- translations/pl.md | 128 ++++++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/translations/pl.md b/translations/pl.md index 32439f1..68cdeab 100644 --- a/translations/pl.md +++ b/translations/pl.md @@ -10,73 +10,73 @@ Podoba Ci się ten projekt? Proszę rozważyć [sponsorowanie mnie](https://gith -- [Wstęp](#introduction) -- [Prawa](#laws) +- [Wstęp](#wstęp) +- [Prawa](#prawa) - [Zasada 90-9-1 (zasada 1%)](#zasada-90-9-1-zasada-1) - - [Prawo Amdahla](#amdahls-law) - - [Teoria zepsutych okien](#the-broken-windows-theory) - - [Prawo Brooksa](#brooks-law) - - [Twierdzenie CAP (Twierdzenie Brewera)](#cap-theorem-brewers-theorem) - - [Prawo Conwaya](#conways-law) - - [Prawo Cunninghama](#cunninghams-law) - - [Numer Dunbara](#dunbars-number) - - [Efekt Dunninga-Krugera](#the-dunning-kruger-effect) - - [Prawo Fittsa](#fitts-law) - - [Prawo Galla](#galls-law) - - [Prawo Goodharta](#goodharts-law) - - [Brzytwa Hanlona](#hanlons-razor) - - [Prawo Hicka (Prawo Hicka-Hymana)](#hicks-law-hick-hyman-law) - - [Prawo Hofstadtera](#hofstadters-law) - - [Prawo Hutbera](#hutbers-law) - - [Cykl szumu i prawo Amary](#the-hype-cycle--amaras-law) - - [Prawo Hyruma (prawo niejawnych interfejsów)](#hyrums-law-the-law-of-implicit-interfaces) - - [Prawo Kernighana](#kernighans-law) - - [Prawo Linusa](#linuss-law) - - [Prawo Metcalfego](#metcalfes-law) - - [prawo Moore'a](#moores-law) - - [Prawo Murphy'ego / Prawo Soda](#murphys-law--sods-law) - - [Brzytwa Ockhama](#occams-razor) - - [Prawo Parkinsona](#parkinsons-law) - - [Przedwczesny efekt optymalizacji](#premature-optimization-effect) - - [Prawo Putta](#putts-law) - - [Prawo Reeda](#reeds-law) - - [Prawo zachowania złożoności (prawo Teslera)](#the-law-of-conservation-of-complexity-teslers-law) - - [Prawo Demeter](#the-law-of-demeter) - - [Prawo nieszczelnych abstrakcji](#the-law-of-leaky-abstractions) - - [Prawo trywialności](#the-law-of-triviality) - - [Filozofia Uniksa](#the-unix-philosophy) - - [Zasada Skauta](#the-scout-rule) - - [Model Spotify](#the-spotify-model) - - [Zasada dwóch pizzy](#the-two-pizza-rule) - - [Prawo Wadlera](#wadlers-law) - - [Prawo Wheatona](#wheatons-law) -- [Zasady](#principles) - - [Wszystkie modele są błędne (prawo George'a Boxa)](#all-models-are-wrong-george-boxs-law) - - [Płot Chestertona](#chestertons-fence) - - [Efekt Morza Martwego](#the-dead-sea-effect) - - [Zasada Dilberta](#the-dilbert-principle) - - [Zasada Pareto (Zasada 80/20)](#the-pareto-principle-the-8020-rule) - - [Zasada Shirky](#the-shirky-principle) - - [Zasada Piotra](#the-peter-principle) - - [Zasada solidności (prawo Postela)](#the-robustness-principle-postels-law) + - [Prawo Amdahla](#prawo-amdahla) + - [Teoria zepsutych okien](#teoria-zepsutych-okien) + - [Prawo Brooksa](#prawo-brooksa) + - [Twierdzenie CAP (Twierdzenie Brewera)](#twierdzenie-cap-twierdzenie-brewera) + - [Prawo Conwaya](#prawo-conwaya) + - [Prawo Cunninghama](#prawo-cunninghama) + - [Numer Dunbara](#numer-dunbara) + - [Efekt Dunninga-Krugera](#efekt-dunninga-krugera) + - [Prawo Fittsa](#prawo-fittsa) + - [Prawo Galla](#prawo-galla) + - [Prawo Goodharta](#prawo-goodharta) + - [Brzytwa Hanlona](#brzytwa-hanlona) + - [Prawo Hicka (Prawo Hicka-Hymana)](#prawo-hicka-prawo-hicka-hymana) + - [Prawo Hofstadtera](#prawo-hofstadtera) + - [Prawo Hutbera](#prawo-hutbera) + - [Cykl szumu i prawo Amary](#cykl-szumu-i-prawo-amary) + - [Prawo Hyruma (prawo niejawnych interfejsów)](#prawo-hyruma-prawo-niejawnych-interfejsów) + - [Prawo Kernighana](#prawo-kernighana) + - [Prawo Linusa](#prawo-linusa) + - [Prawo Metcalfego](#prawo-metcalfego) + - [prawo Moore'a](#prawo-moorea) + - [Prawo Murphy'ego / Prawo Soda](#prawo-murphyego--prawo-soda) + - [Brzytwa Ockhama](#brzytwa-ockohama) + - [Prawo Parkinsona](#prawo-parkinsona) + - [Przedwczesny efekt optymalizacji](#przedwczesny-efekt-optymalizacji) + - [Prawo Putta](#prawo-putta) + - [Prawo Reeda](#prawo-reeda) + - [Prawo zachowania złożoności (prawo Teslera)](#prawo-zachowania-złożoności-prawo-teslera) + - [Prawo Demeter](#prawo-demeter) + - [Prawo nieszczelnych abstrakcji](#prawo-nieszczelnych-abstrakcji) + - [Prawo trywialności](#prawo-trywialności) + - [Filozofia Uniksa](#filozofia-uniksa) + - [Zasada Skauta](#zasada-skauta) + - [Model Spotify](#model-spotify) + - [Zasada dwóch pizzy](#zasada-dwóch-pizzy) + - [Prawo Wadlera](#prawo-wadlera) + - [Prawo Wheatona](#prawo-wheatona) +- [Zasady](#zasady) + - [Wszystkie modele są błędne (prawo George'a Boxa)](#wszystkie-modele-są-błędne-prawo-georgea-boxa) + - [Płot Chestertona](#płot-chestertona) + - [Efekt Morza Martwego](#efekt-morza-martwego) + - [Zasada Dilberta](#zasada-dilberta) + - [Zasada Pareto (Zasada 80/20)](#zasada-pareto-zasada-8020) + - [Zasada Shirky](#zasada-shirky) + - [Zasada Piotra](#zasada-piotra) + - [Zasada solidności (prawo Postela)](#zasada-solidarności-prawo-postela) - [SOLID](#solid) - - [Zasada pojedynczej odpowiedzialności](#the-single-responsibility-principle) - - [Zasada otwarcia/zamknięcia](#the-openclosed-principle) - - [Zasada substytucji Liskov](#the-liskov-substitution-principle) - - [Zasada segregacji interfejsów](#the-interface-segregation-principle) - - [Zasada odwrócenia zależności](#the-dependency-inversion-principle) - - [Zasada SUSZENIA](#the-dry-principle) - - [Zasada KISS](#the-kiss-principle) + - [Zasada pojedynczej odpowiedzialności](#zasada-pojedynczej-odpowiedzialności) + - [Zasada otwarcia/zamknięcia](#zasada-otwarcia-zamknięcia) + - [Zasada substytucji Liskov](#zasada-substytucji-liskov) + - [Zasada segregacji interfejsów](#zasada-segregacji-interfejsów) + - [Zasada odwrócenia zależności](#zasada-odwrócenia-zależności) + - [Zasada DRY](#zasada-dry) + - [Zasada KISS](#zasada-kiss) - [YAGNI](#yagni) - - [Błędy przetwarzania rozproszonego](#the-fallacies-of-distributed-computing) -- [Lista rzeczy do przeczytania](#reading-list) -- [Zasoby online](#online-resources) -- [eBook w formacie PDF](#pdf-ebook) + - [Błędy przetwarzania rozproszonego](#błędy-przetwarzania-rozproszonego) +- [Lista rzeczy do przeczytania](#lista-rzeczy-do-przeczytania) +- [Zasoby online](#zasoby-online) +- [eBook w formacie PDF](#ebook-w-formacie-pdf) - [Podcast](#podcast) -- [Tłumaczenia](#translations) -- [Powiązane projekty](#related-projects) -- [Przyczynianie się](#contributing) -- [DO ZROBIENIA](#todo) +- [Tłumaczenia](#tłumaczenia) +- [Powiązane projekty](#powiązane-projekty) +- [Przyczynianie się](#przyczynianie-się) +- [DO ZROBIENIA](#do-zrobienia) @@ -911,7 +911,7 @@ Zobacz też: - [Odwrócenie sterowania](#todo) - [Wstrzykiwanie zależności](#todo) -### Zasada SUSZENIA +### Zasada DRY [Zasada DRY na Wikipedii](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) From 8c3de66940af10eead28011c3e404d4c2068cbef Mon Sep 17 00:00:00 2001 From: Akbarali <39323182+akbarali1@users.noreply.github.com> Date: Sun, 6 Aug 2023 17:15:58 +0500 Subject: [PATCH 15/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 173eb38..1325839 100644 --- a/README.md +++ b/README.md @@ -517,7 +517,7 @@ See also: ### Premature Optimization Effect -[Premature Optimization on WikiWikiWeb](http://wiki.c2.com/?PrematureOptimization) +[Premature Optimization on WikiWeb](http://wiki.c2.com/?PrematureOptimization) > Premature optimization is the root of all evil. > From 96bf4635e5ef71330a123aa97ca01ae85046941b Mon Sep 17 00:00:00 2001 From: Emmanuel Bernard Date: Tue, 30 Jan 2024 16:05:54 +0100 Subject: [PATCH 16/23] Minor French typo --- translations/fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/fr.md b/translations/fr.md index 16d320b..7a488f0 100644 --- a/translations/fr.md +++ b/translations/fr.md @@ -499,7 +499,7 @@ Les principes sont généralement des lignes directrices liés à la conception. > Les entreprises tendent à promouvoir systématiquement les employés incompétents afin de les sortir du workflow. > *Scott Adams* -Un concept de gestion inventé par Scott Adams (créateur du comic strip Dilbert) inspiré par le [principe de Peter](#principe-de-peter). Suivant le principe de Dilbert, les employés qui n'ont jamais montré de compétence dans leur travail sont promus à des postes de management afin de limité les dommages qu'ils peuvent causer. Adams expliqua initialement le principe dans un article du Wall Street Journal datant de 1995, et élabora le concept dans son livre de 1996: [The Dilbert Principle](#a-lire). +Un concept de gestion inventé par Scott Adams (créateur du comic strip Dilbert) inspiré par le [principe de Peter](#principe-de-peter). Suivant le principe de Dilbert, les employés qui n'ont jamais montré de compétence dans leur travail sont promus à des postes de management afin de limiter les dommages qu'ils peuvent causer. Adams expliqua initialement le principe dans un article du Wall Street Journal datant de 1995, et élabora le concept dans son livre de 1996: [The Dilbert Principle](#a-lire). Voir aussi : From 69856f7ab259e12a0dfe09450249a02132d3c957 Mon Sep 17 00:00:00 2001 From: Johnbel Mahautiere <47404011+JohnbelMDev@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:20:01 -0500 Subject: [PATCH 17/23] Update prepare-markdown-for-ebook.sh Occurrences updata --- scripts/prepare-markdown-for-ebook.sh | 44 +++++++++++---------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/scripts/prepare-markdown-for-ebook.sh b/scripts/prepare-markdown-for-ebook.sh index 38bd356..4a0171f 100755 --- a/scripts/prepare-markdown-for-ebook.sh +++ b/scripts/prepare-markdown-for-ebook.sh @@ -1,42 +1,32 @@ #!/usr/bin/env bash -# This script prepares a `hacker-laws.md` file which is in a format ready to be -# exported to PDF or other formats for an e-book. +# This script prepares a `hacker-laws.md` file for export to PDF or e-book format. -# Require that we provide the version number and get a date. +# Require a version number and get the current date. version=$1 date=$(date "+%Y-%m-%d") -if [ -z $version ]; then - echo "version must be specified: ./prepare-markdown-for-ebook.sh " +if [ -z "$version" ]; then + echo "Usage: $0 " exit 1 fi -# Create the frontmatter. -cat << EOF > frontmatter.md +# Create `hacker-laws.md` with frontmatter and README content in one step. +cat << EOF > hacker-laws.md --- title: "Hacker Laws" author: "Dave Kerr, github.com/dwmkerr/hacker-laws" -subtitle: "Laws, Theories, Principles and Patterns that developers will find useful. ${version}, ${date}." +subtitle: "Laws, Theories, Principles, and Patterns that developers will find useful. ${version}, ${date}." --- + EOF +cat README.md >> hacker-laws.md -# Combine the frontmatter and the laws. -cat frontmatter.md README.md >> hacker-laws.md +# Use a single `sed` command to clean up unwanted lines and emojis in one pass. +sed -i'' -e '/💻📖.*/d' \ + -e 's/❗/Warning/g' \ + -e '/^\[Translations.*/d' \ + -e '/\*.*/d' \ + -e '/ \*.*/d' \ + -e '/## Translations/,$d' hacker-laws.md -# Remove the title - we have it in the front-matter of the doc, so it will -# automatically be added to the PDF. -sed -i'' '/💻📖.*/d' hacker-laws.md - -# We can't have emojis in the final content with the PDF generator we're using. -sed -i'' 's/❗/Warning/' hacker-laws.md - -# Now rip out the translations line. -sed -i'' '/^\[Translations.*/d' hacker-laws.md - -# # Now rip out any table of contents items. -sed -i'' '/\*.*/d' hacker-laws.md -sed -i'' '/ \*.*/d' hacker-laws.md - -# Delete everything from 'Translations' onwards (we don't need the translations -# lists, related projects, etc). -sed -i'' '/## Translations/,$d' hacker-laws.md +echo "hacker-laws.md prepared successfully." From 3ce9be6081ae452357a3ea3384c398d333e08b28 Mon Sep 17 00:00:00 2001 From: MEGAGON Date: Thu, 2 Jan 2025 02:25:01 +0330 Subject: [PATCH 18/23] Adding Persian to Translation section --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1325839..b162643 100644 --- a/README.md +++ b/README.md @@ -1082,6 +1082,7 @@ Thanks to a number of wonderful contributors, Hacker Laws is available in a numb | [🇯🇵 JP 日本語 / Japanese](./translations/jp.md) | [Fumikazu Fujiwara](https://github.com/freddiefujiwara)| [![gitlocalized ](https://gitlocalize.com/repo/2513/ja/badge.svg)](https://gitlocalize.com/repo/2513/ja?utm_source=badge) | | [🇰🇷 한국어 / Korean](https://github.com/codeanddonuts/hacker-laws-kr) | [Doughnut](https://github.com/codeanddonuts) | Partially complete | | [🇱🇻 Latviešu Valoda / Latvian](./translations/lv.md) | [Arturs Jansons](https://github.com/iegik) | [![gitlocalized ](https://gitlocalize.com/repo/2513/lv/badge.svg)](https://gitlocalize.com/repo/2513/lv?utm_source=badge) | +| [🇮🇷 Persian / فارسی](./translations/fa.md) | [MohammadErfan Gooneh](https://github.com/MEgooneh) | . | | [🇵🇱 Polski / Polish](./translations/pl.md) | [Mariusz Kogen](https://github.com/k0gen) | [![gitlocalized ](https://gitlocalize.com/repo/2513/pl/badge.svg)](https://gitlocalize.com/repo/2513/pl?utm_source=badge) | | [🇷🇺 Русская версия / Russian](https://github.com/solarrust/hacker-laws) | [Alena Batitskaya](https://github.com/solarrust) | Partially complete | | [🇪🇸 Castellano / Spanish](./translations/es-ES.md) | [Manuel Rubio](https://github.com/manuel-rubio) ([Sponsor](https://github.com/sponsors/manuel-rubio)) | Partially complete | From 34a7131aef3ba0f3d0e8acedee61ada2567f7613 Mon Sep 17 00:00:00 2001 From: MEGAGON Date: Thu, 2 Jan 2025 02:30:40 +0330 Subject: [PATCH 19/23] Fixing order of local and global languages --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b162643..739f47e 100644 --- a/README.md +++ b/README.md @@ -1082,7 +1082,7 @@ Thanks to a number of wonderful contributors, Hacker Laws is available in a numb | [🇯🇵 JP 日本語 / Japanese](./translations/jp.md) | [Fumikazu Fujiwara](https://github.com/freddiefujiwara)| [![gitlocalized ](https://gitlocalize.com/repo/2513/ja/badge.svg)](https://gitlocalize.com/repo/2513/ja?utm_source=badge) | | [🇰🇷 한국어 / Korean](https://github.com/codeanddonuts/hacker-laws-kr) | [Doughnut](https://github.com/codeanddonuts) | Partially complete | | [🇱🇻 Latviešu Valoda / Latvian](./translations/lv.md) | [Arturs Jansons](https://github.com/iegik) | [![gitlocalized ](https://gitlocalize.com/repo/2513/lv/badge.svg)](https://gitlocalize.com/repo/2513/lv?utm_source=badge) | -| [🇮🇷 Persian / فارسی](./translations/fa.md) | [MohammadErfan Gooneh](https://github.com/MEgooneh) | . | +| [🇮🇷 فارسی / Persian](./translations/fa.md) | [MohammadErfan Gooneh](https://github.com/MEgooneh) | . | | [🇵🇱 Polski / Polish](./translations/pl.md) | [Mariusz Kogen](https://github.com/k0gen) | [![gitlocalized ](https://gitlocalize.com/repo/2513/pl/badge.svg)](https://gitlocalize.com/repo/2513/pl?utm_source=badge) | | [🇷🇺 Русская версия / Russian](https://github.com/solarrust/hacker-laws) | [Alena Batitskaya](https://github.com/solarrust) | Partially complete | | [🇪🇸 Castellano / Spanish](./translations/es-ES.md) | [Manuel Rubio](https://github.com/manuel-rubio) ([Sponsor](https://github.com/sponsors/manuel-rubio)) | Partially complete | From d66d8afae41efa93087db4ed7c631ee81a671124 Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Tue, 4 Feb 2025 15:02:21 +0000 Subject: [PATCH 20/23] docs: input process output --- README.md | 174 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 89 insertions(+), 85 deletions(-) diff --git a/README.md b/README.md index 12c9130..d8a6aa9 100644 --- a/README.md +++ b/README.md @@ -10,76 +10,77 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor -* [Introduction](#introduction) -* [Laws](#laws) - * [90–9–1 Principle (1% Rule)](#9091-principle-1-rule) - * [Amdahl's Law](#amdahls-law) - * [The Broken Windows Theory](#the-broken-windows-theory) - * [Brooks' Law](#brooks-law) - * [CAP Theorem (Brewer's Theorem)](#cap-theorem-brewers-theorem) - * [Clarke's three laws](#clarkes-three-laws) - * [Conway's Law](#conways-law) - * [Cunningham's Law](#cunninghams-law) - * [Dunbar's Number](#dunbars-number) - * [The Dunning-Kruger Effect](#the-dunning-kruger-effect) - * [Fitts' Law](#fitts-law) - * [Gall's Law](#galls-law) - * [Goodhart's Law](#goodharts-law) - * [Hanlon's Razor](#hanlons-razor) - * [Hick's Law (Hick-Hyman Law)](#hicks-law-hick-hyman-law) - * [Hofstadter's Law](#hofstadters-law) - * [Hutber's Law](#hutbers-law) - * [The Hype Cycle & Amara's Law](#the-hype-cycle--amaras-law) - * [Hyrum's Law (The Law of Implicit Interfaces)](#hyrums-law-the-law-of-implicit-interfaces) - * [Kernighan's Law](#kernighans-law) - * [Linus's Law](#linuss-law) - * [Metcalfe's Law](#metcalfes-law) - * [Moore's Law](#moores-law) - * [Murphy's Law / Sod's Law](#murphys-law--sods-law) - * [Occam's Razor](#occams-razor) - * [Parkinson's Law](#parkinsons-law) - * [Premature Optimization Effect](#premature-optimization-effect) - * [Putt's Law](#putts-law) - * [Reed's Law](#reeds-law) - * [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law) - * [The Law of Demeter](#the-law-of-demeter) - * [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) - * [The Law of the Instrument](#the-law-of-the-instrument) - * [The Law of Triviality](#the-law-of-triviality) - * [The Unix Philosophy](#the-unix-philosophy) - * [The Scout Rule](#the-scout-rule) - * [The Spotify Model](#the-spotify-model) - * [The Two Pizza Rule](#the-two-pizza-rule) - * [Wadler's Law](#wadlers-law) - * [Wheaton's Law](#wheatons-law) -* [Principles](#principles) - * [All Models Are Wrong (George Box's Law)](#all-models-are-wrong-george-boxs-law) - * [Chesterton's Fence](#chestertons-fence) - * [The Dead Sea Effect](#the-dead-sea-effect) - * [The Dilbert Principle](#the-dilbert-principle) - * [The Pareto Principle (The 80/20 Rule)](#the-pareto-principle-the-8020-rule) - * [The Shirky Principle](#the-shirky-principle) - * [The Peter Principle](#the-peter-principle) - * [The Robustness Principle (Postel's Law)](#the-robustness-principle-postels-law) - * [SOLID](#solid) - * [The Single Responsibility Principle](#the-single-responsibility-principle) - * [The Open/Closed Principle](#the-openclosed-principle) - * [The Liskov Substitution Principle](#the-liskov-substitution-principle) - * [The Interface Segregation Principle](#the-interface-segregation-principle) - * [The Dependency Inversion Principle](#the-dependency-inversion-principle) - * [The DRY Principle](#the-dry-principle) - * [The KISS principle](#the-kiss-principle) - * [YAGNI](#yagni) - * [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) - * [The Principle of Least Astonishment](#the-principle-of-least-astonishment) -* [Reading List](#reading-list) -* [Online Resources](#online-resources) -* [PDF eBook](#pdf-ebook) -* [Podcast](#podcast) -* [Translations](#translations) -* [Related Projects](#related-projects) -* [Contributing](#contributing) -* [TODO](#todo) +- [Introduction](#introduction) +- [Laws](#laws) + - [90–9–1 Principle (1% Rule)](#9091-principle-1-rule) + - [Amdahl's Law](#amdahls-law) + - [The Broken Windows Theory](#the-broken-windows-theory) + - [Brooks' Law](#brooks-law) + - [CAP Theorem (Brewer's Theorem)](#cap-theorem-brewers-theorem) + - [Clarke's three laws](#clarkes-three-laws) + - [Conway's Law](#conways-law) + - [Cunningham's Law](#cunninghams-law) + - [Dunbar's Number](#dunbars-number) + - [The Dunning-Kruger Effect](#the-dunning-kruger-effect) + - [Fitts' Law](#fitts-law) + - [Gall's Law](#galls-law) + - [Goodhart's Law](#goodharts-law) + - [Hanlon's Razor](#hanlons-razor) + - [Hick's Law (Hick-Hyman Law)](#hicks-law-hick-hyman-law) + - [Hofstadter's Law](#hofstadters-law) + - [Hutber's Law](#hutbers-law) + - [The Hype Cycle & Amara's Law](#the-hype-cycle--amaras-law) + - [Hyrum's Law (The Law of Implicit Interfaces)](#hyrums-law-the-law-of-implicit-interfaces) + - [Input-Processing-Output (IPO)](#input-processing-output-ipo) + - [Kernighan's Law](#kernighans-law) + - [Linus's Law](#linuss-law) + - [Metcalfe's Law](#metcalfes-law) + - [Moore's Law](#moores-law) + - [Murphy's Law / Sod's Law](#murphys-law--sods-law) + - [Occam's Razor](#occams-razor) + - [Parkinson's Law](#parkinsons-law) + - [Premature Optimization Effect](#premature-optimization-effect) + - [Putt's Law](#putts-law) + - [Reed's Law](#reeds-law) + - [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law) + - [The Law of Demeter](#the-law-of-demeter) + - [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) + - [The Law of the Instrument](#the-law-of-the-instrument) + - [The Law of Triviality](#the-law-of-triviality) + - [The Unix Philosophy](#the-unix-philosophy) + - [The Scout Rule](#the-scout-rule) + - [The Spotify Model](#the-spotify-model) + - [The Two Pizza Rule](#the-two-pizza-rule) + - [Wadler's Law](#wadlers-law) + - [Wheaton's Law](#wheatons-law) +- [Principles](#principles) + - [All Models Are Wrong (George Box's Law)](#all-models-are-wrong-george-boxs-law) + - [Chesterton's Fence](#chestertons-fence) + - [The Dead Sea Effect](#the-dead-sea-effect) + - [The Dilbert Principle](#the-dilbert-principle) + - [The Pareto Principle (The 80/20 Rule)](#the-pareto-principle-the-8020-rule) + - [The Shirky Principle](#the-shirky-principle) + - [The Peter Principle](#the-peter-principle) + - [The Robustness Principle (Postel's Law)](#the-robustness-principle-postels-law) + - [SOLID](#solid) + - [The Single Responsibility Principle](#the-single-responsibility-principle) + - [The Open/Closed Principle](#the-openclosed-principle) + - [The Liskov Substitution Principle](#the-liskov-substitution-principle) + - [The Interface Segregation Principle](#the-interface-segregation-principle) + - [The Dependency Inversion Principle](#the-dependency-inversion-principle) + - [The DRY Principle](#the-dry-principle) + - [The KISS principle](#the-kiss-principle) + - [YAGNI](#yagni) + - [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) + - [The Principle of Least Astonishment](#the-principle-of-least-astonishment) +- [Reading List](#reading-list) +- [Online Resources](#online-resources) +- [PDF eBook](#pdf-ebook) +- [Podcast](#podcast) +- [Translations](#translations) +- [Related Projects](#related-projects) +- [Contributing](#contributing) +- [TODO](#todo) @@ -407,6 +408,24 @@ See also: - [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) - [XKCD 1172](https://xkcd.com/1172/) +### Input-Processing-Output (IPO) + +[Input–Process–Output on Wikipedia](https://en.wikipedia.org/wiki/IPO_model) + +Systems can be incredibly complex, but can typically be broken down into smaller parts that follow a simple pattern: + +1. Input is provided +2. Some kind of processing or transformation is performed +3. Output is returned + +A sort function in a programming language or system could be a classic example of the IPO pattern; where arbitrary input is sorted based on a predicate and returned back. A web server could be modelled as an IPO system, where HTTP requests are transformed into HTTP responses. A highly complex Generative AI system could likewise be modelled in this way, with user input being passed through a complex model and a response being generated. + +The IPO pattern is present in different forms across almost all technological domains, from [functional programming](https://en.wikipedia.org/wiki/Functional_programming) languages that explicitly follow IPO patterns to [The Unix Philosophy](#the-unix-philosophy), which suggests that highly complex systems can be built by chaining together many simple IPO programs. + +See also: + +- [The Unix Philosophy](#the-unix-philosophy) + ### Kernighan's Law > Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. @@ -1034,21 +1053,6 @@ See also: - [Convention Over Configuration](#todo) -### Input-Processing-Output is what it is all about - -[input–process–output (IPO) model](https://en.wikipedia.org/wiki/IPO_model) - -There are a thousand tools, programming languages, principles. Finally, it is all this simple pattern: - -1. The method/system/tool gets some input -2. The method/system/tool does some processing -3. The method/system/tool creates some output. - -Example: A HTTP request and the corresponding HTTP response are the perfect examples. Stateless has -won, [CORBA](https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture) is dead. If you use OOP does not matter much for the caller/client. - - - ## Reading List If you have found these concepts interesting, you may enjoy the following books. From dfc978df13d5634990af8e81e8423d5aca84f3d9 Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Tue, 4 Feb 2025 15:05:26 +0000 Subject: [PATCH 21/23] docs: clean up IPO title --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d8a6aa9..da253e8 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor - [Hutber's Law](#hutbers-law) - [The Hype Cycle & Amara's Law](#the-hype-cycle--amaras-law) - [Hyrum's Law (The Law of Implicit Interfaces)](#hyrums-law-the-law-of-implicit-interfaces) - - [Input-Processing-Output (IPO)](#input-processing-output-ipo) + - [Input-Process-Output (IPO)](#input-process-output-ipo) - [Kernighan's Law](#kernighans-law) - [Linus's Law](#linuss-law) - [Metcalfe's Law](#metcalfes-law) @@ -408,7 +408,7 @@ See also: - [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) - [XKCD 1172](https://xkcd.com/1172/) -### Input-Processing-Output (IPO) +### Input-Process-Output (IPO) [Input–Process–Output on Wikipedia](https://en.wikipedia.org/wiki/IPO_model) From eb34ea9a679b26a47d75a79cfb19120f189a63d1 Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Tue, 11 Feb 2025 12:07:48 +0000 Subject: [PATCH 22/23] docs: minor tweaks to The Ringelmann Effect --- README.md | 146 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 75 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 864f862..6d7be5b 100644 --- a/README.md +++ b/README.md @@ -10,74 +10,78 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor -* [Introduction](#introduction) -* [Laws](#laws) - * [90–9–1 Principle (1% Rule)](#9091-principle-1-rule) - * [Amdahl's Law](#amdahls-law) - * [The Broken Windows Theory](#the-broken-windows-theory) - * [Brooks' Law](#brooks-law) - * [CAP Theorem (Brewer's Theorem)](#cap-theorem-brewers-theorem) - * [Conway's Law](#conways-law) - * [Cunningham's Law](#cunninghams-law) - * [Dunbar's Number](#dunbars-number) - * [The Dunning-Kruger Effect](#the-dunning-kruger-effect) - * [Fitts' Law](#fitts-law) - * [Gall's Law](#galls-law) - * [Goodhart's Law](#goodharts-law) - * [Hanlon's Razor](#hanlons-razor) - * [Hick's Law (Hick-Hyman Law)](#hicks-law-hick-hyman-law) - * [Hofstadter's Law](#hofstadters-law) - * [Hutber's Law](#hutbers-law) - * [The Hype Cycle & Amara's Law](#the-hype-cycle--amaras-law) - * [Hyrum's Law (The Law of Implicit Interfaces)](#hyrums-law-the-law-of-implicit-interfaces) - * [Kernighan's Law](#kernighans-law) - * [Linus's Law](#linuss-law) - * [Metcalfe's Law](#metcalfes-law) - * [Moore's Law](#moores-law) - * [Murphy's Law / Sod's Law](#murphys-law--sods-law) - * [Occam's Razor](#occams-razor) - * [Parkinson's Law](#parkinsons-law) - * [Premature Optimization Effect](#premature-optimization-effect) - * [Putt's Law](#putts-law) - * [Reed's Law](#reeds-law) - * [Ringelmann effect](#ringelmann-effect) - * [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law) - * [The Law of Demeter](#the-law-of-demeter) - * [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) - * [The Law of Triviality](#the-law-of-triviality) - * [The Unix Philosophy](#the-unix-philosophy) - * [The Scout Rule](#the-scout-rule) - * [The Spotify Model](#the-spotify-model) - * [The Two Pizza Rule](#the-two-pizza-rule) - * [Wadler's Law](#wadlers-law) - * [Wheaton's Law](#wheatons-law) -* [Principles](#principles) - * [All Models Are Wrong (George Box's Law)](#all-models-are-wrong-george-boxs-law) - * [Chesterton's Fence](#chestertons-fence) - * [The Dead Sea Effect](#the-dead-sea-effect) - * [The Dilbert Principle](#the-dilbert-principle) - * [The Pareto Principle (The 80/20 Rule)](#the-pareto-principle-the-8020-rule) - * [The Shirky Principle](#the-shirky-principle) - * [The Peter Principle](#the-peter-principle) - * [The Robustness Principle (Postel's Law)](#the-robustness-principle-postels-law) - * [SOLID](#solid) - * [The Single Responsibility Principle](#the-single-responsibility-principle) - * [The Open/Closed Principle](#the-openclosed-principle) - * [The Liskov Substitution Principle](#the-liskov-substitution-principle) - * [The Interface Segregation Principle](#the-interface-segregation-principle) - * [The Dependency Inversion Principle](#the-dependency-inversion-principle) - * [The DRY Principle](#the-dry-principle) - * [The KISS principle](#the-kiss-principle) - * [YAGNI](#yagni) - * [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) -* [Reading List](#reading-list) -* [Online Resources](#online-resources) -* [PDF eBook](#pdf-ebook) -* [Podcast](#podcast) -* [Translations](#translations) -* [Related Projects](#related-projects) -* [Contributing](#contributing) -* [TODO](#todo) +- [Introduction](#introduction) +- [Laws](#laws) + - [90–9–1 Principle (1% Rule)](#9091-principle-1-rule) + - [Amdahl's Law](#amdahls-law) + - [The Broken Windows Theory](#the-broken-windows-theory) + - [Brooks' Law](#brooks-law) + - [CAP Theorem (Brewer's Theorem)](#cap-theorem-brewers-theorem) + - [Clarke's three laws](#clarkes-three-laws) + - [Conway's Law](#conways-law) + - [Cunningham's Law](#cunninghams-law) + - [Dunbar's Number](#dunbars-number) + - [The Dunning-Kruger Effect](#the-dunning-kruger-effect) + - [Fitts' Law](#fitts-law) + - [Gall's Law](#galls-law) + - [Goodhart's Law](#goodharts-law) + - [Hanlon's Razor](#hanlons-razor) + - [Hick's Law (Hick-Hyman Law)](#hicks-law-hick-hyman-law) + - [Hofstadter's Law](#hofstadters-law) + - [Hutber's Law](#hutbers-law) + - [The Hype Cycle & Amara's Law](#the-hype-cycle--amaras-law) + - [Hyrum's Law (The Law of Implicit Interfaces)](#hyrums-law-the-law-of-implicit-interfaces) + - [Input-Process-Output (IPO)](#input-process-output-ipo) + - [Kernighan's Law](#kernighans-law) + - [Linus's Law](#linuss-law) + - [Metcalfe's Law](#metcalfes-law) + - [Moore's Law](#moores-law) + - [Murphy's Law / Sod's Law](#murphys-law--sods-law) + - [Occam's Razor](#occams-razor) + - [Parkinson's Law](#parkinsons-law) + - [Premature Optimization Effect](#premature-optimization-effect) + - [Putt's Law](#putts-law) + - [Reed's Law](#reeds-law) + - [The Ringelmann effect](#the-ringelmann-effect) + - [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law) + - [The Law of Demeter](#the-law-of-demeter) + - [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) + - [The Law of the Instrument](#the-law-of-the-instrument) + - [The Law of Triviality](#the-law-of-triviality) + - [The Unix Philosophy](#the-unix-philosophy) + - [The Scout Rule](#the-scout-rule) + - [The Spotify Model](#the-spotify-model) + - [The Two Pizza Rule](#the-two-pizza-rule) + - [Wadler's Law](#wadlers-law) + - [Wheaton's Law](#wheatons-law) +- [Principles](#principles) + - [All Models Are Wrong (George Box's Law)](#all-models-are-wrong-george-boxs-law) + - [Chesterton's Fence](#chestertons-fence) + - [The Dead Sea Effect](#the-dead-sea-effect) + - [The Dilbert Principle](#the-dilbert-principle) + - [The Pareto Principle (The 80/20 Rule)](#the-pareto-principle-the-8020-rule) + - [The Shirky Principle](#the-shirky-principle) + - [The Peter Principle](#the-peter-principle) + - [The Robustness Principle (Postel's Law)](#the-robustness-principle-postels-law) + - [SOLID](#solid) + - [The Single Responsibility Principle](#the-single-responsibility-principle) + - [The Open/Closed Principle](#the-openclosed-principle) + - [The Liskov Substitution Principle](#the-liskov-substitution-principle) + - [The Interface Segregation Principle](#the-interface-segregation-principle) + - [The Dependency Inversion Principle](#the-dependency-inversion-principle) + - [The DRY Principle](#the-dry-principle) + - [The KISS principle](#the-kiss-principle) + - [YAGNI](#yagni) + - [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing) + - [The Principle of Least Astonishment](#the-principle-of-least-astonishment) +- [Reading List](#reading-list) +- [Online Resources](#online-resources) +- [PDF eBook](#pdf-ebook) +- [Podcast](#podcast) +- [Translations](#translations) +- [Related Projects](#related-projects) +- [Contributing](#contributing) +- [TODO](#todo) @@ -574,11 +578,11 @@ See also: - [Metcalfe's Law](#metcalfes-law) - [Dunbar's Number](#dunbars-number) -### Ringelmann effect +### The Ringelmann effect -[Ringelmann effect on Wikipedia](https://en.wikipedia.org/wiki/Ringelmann_effect) +[The Ringelmann effect on Wikipedia](https://en.wikipedia.org/wiki/Ringelmann_effect) -The Ringelmann effect is the tendency of an individual to become increasingly inefficient as more and more people are involved in a task. In other words, as more individuals are added to a team, the more the average individual performance decreases. Multiple causes are believed to be at work, including social loafing and loss of coordination. +The Ringelmann effect is the tendency of an individual to become increasingly inefficient as more and more people are involved in a task. In other words, as more individuals are added to a team, the more the average individual performance decreases. Multiple causes are believed to be at work, including loss of motivation ("[social loafing](https://en.wikipedia.org/wiki/Social_loafing)") and challenges related to coordination. See also: - [Brooks' Law](#brooks-law) From 4adcc2a090a3374a101e93a13dfad0e4dc434479 Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Tue, 11 Feb 2025 12:10:19 +0000 Subject: [PATCH 23/23] docs: fix casing --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6d7be5b..c0d85de 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor - [Premature Optimization Effect](#premature-optimization-effect) - [Putt's Law](#putts-law) - [Reed's Law](#reeds-law) - - [The Ringelmann effect](#the-ringelmann-effect) + - [The Ringelmann Effect](#the-ringelmann-effect) - [The Law of Conservation of Complexity (Tesler's Law)](#the-law-of-conservation-of-complexity-teslers-law) - [The Law of Demeter](#the-law-of-demeter) - [The Law of Leaky Abstractions](#the-law-of-leaky-abstractions) @@ -578,11 +578,11 @@ See also: - [Metcalfe's Law](#metcalfes-law) - [Dunbar's Number](#dunbars-number) -### The Ringelmann effect +### The Ringelmann Effect [The Ringelmann effect on Wikipedia](https://en.wikipedia.org/wiki/Ringelmann_effect) -The Ringelmann effect is the tendency of an individual to become increasingly inefficient as more and more people are involved in a task. In other words, as more individuals are added to a team, the more the average individual performance decreases. Multiple causes are believed to be at work, including loss of motivation ("[social loafing](https://en.wikipedia.org/wiki/Social_loafing)") and challenges related to coordination. +The Ringelmann Effect is the tendency of an individual to become increasingly inefficient as more and more people are involved in a task. In other words, as more individuals are added to a team, the more the average individual performance decreases. Multiple causes are believed to be at work, including loss of motivation ("[social loafing](https://en.wikipedia.org/wiki/Social_loafing)") and challenges related to coordination. See also: - [Brooks' Law](#brooks-law)