diff --git a/computer_science/DevOps.md b/computer_science/DevOps.md index 52b73af..33d4a1e 100644 --- a/computer_science/DevOps.md +++ b/computer_science/DevOps.md @@ -65,4 +65,4 @@ - [A conversation about how to enable high-velocity DevOps culture at your organization](https://stackoverflow.blog/2021/12/13/a-conversation-about-how-to-enable-high-velocity-devops-culture-at-your-organization/) - [90DaysOfDevOps](https://github.com/MichaelCade/90DaysOfDevOps) - better foundational knowledge of DevOps in 90 short lessons - [State of DevOps 2021](https://services.google.com/fh/files/misc/state-of-devops-2021.pdf) - +- [2023 State of DevOps Report: Culture is everything](https://cloud.google.com/blog/products/devops-sre/announcing-the-2023-state-of-devops-report) diff --git a/computer_science/architecture.md b/computer_science/architecture.md index b943d0d..8e64835 100644 --- a/computer_science/architecture.md +++ b/computer_science/architecture.md @@ -1,6 +1,7 @@ # Architecture -**Entity component system** - Entity Component System is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on entities' components. +- [**Entity component system**](https://en.wikipedia.org/wiki/Entity_component_system) is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on entities' components. +- [**Hexagonal architecture**](https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)) is an architectural pattern used in software design. It aims at creating loosely coupled application components that can be easily connected to their software environment by means of ports and adapters. This makes components exchangeable at any level and facilitates test automation. ## Resources diff --git a/computer_science/command_line/nix.md b/computer_science/command_line/nix.md index b6b5f82..cb8e640 100644 --- a/computer_science/command_line/nix.md +++ b/computer_science/command_line/nix.md @@ -15,3 +15,4 @@ - [Tutorial: Getting started with Home Manager for Nix](https://ghedam.at/24353/tutorial-getting-started-with-home-manager-for-nix) - [Using Nix on macOS](https://checkoway.net/musings/nix/) by Stephen Checkoway - [Using Nix to install Go tools for VS Code](https://mgdm.net/weblog/vscode-nix-go-tools/) by Michael Maclean +- [Searching and installing old versions of Nix packages](https://lazamar.github.io/download-specific-package-version-with-nix/) diff --git a/computer_science/computer_science.md b/computer_science/computer_science.md index ae9040d..cbae04e 100644 --- a/computer_science/computer_science.md +++ b/computer_science/computer_science.md @@ -1,39 +1,5 @@ # Computer Science -- [OSI Model](https://www.cloudflare.com/en-gb/learning/ddos/glossary/open-systems-interconnection-model-osi/) - 1. Physical layer - 2. Data link layer - 3. Network layer - 4. Transport layer - 5. Session layer - 6. Presentation layer - 7. Application layer - -- **Cross-Cutting Concerns** - Cross-cutting concerns are things that affect many parts of a product. And are hard to separate. For example, monitoring and alerting the health of the services. - -- [The Cathedral and the Bazaar](https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar) - - Every good work of software starts by scratching a developer's personal itch. - - Good programmers know what to write. Great ones know what to rewrite (and reuse). (edit: _"What not to write"_) - - Plan to throw one [version] away; you will, anyhow (copied from Frederick Brooks's [The Mythical Man-Month](https://en.wikipedia.org/wiki/The_Mythical_Man-Month)). - - If you have the right attitude, interesting problems will find you. - - When you lose interest in a program, your last duty to it is to hand it off to a competent successor. - - Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging. - - [Release early. Release often.](https://en.wikipedia.org/wiki/Release_early,_release_often) And listen to your customers. - - Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. - - Smart data structures and dumb code works a lot better than the other way around. - - If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource. - - The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better. - - Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong. - - Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away. (attributed to [Antoine de Saint-Exupéry](https://en.wikipedia.org/wiki/Antoine_de_Saint-Exup%C3%A9ry)) - - Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected. - - When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to! - - A security system is only as secure as its secret. Beware of pseudo-secrets. - - To solve an interesting problem, start by finding a problem that is interesting to you. - - Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one. - -## Dictionary - -- [YAGNI](https://wiki.c2.com/?YouArentGonnaNeedIt) - You Aren't Gonna Need It ## Books diff --git a/computer_science/data.md b/computer_science/data.md index 8ab399e..93063fd 100644 --- a/computer_science/data.md +++ b/computer_science/data.md @@ -1,7 +1,8 @@ # Data +- [**Extract, transform, load**](https://en.wikipedia.org/wiki/Extract,_transform,_load) is a three-phase process where data is extracted, transformed (cleaned, sanitized, scrubbed) and loaded into an output data container. The data can be collated from one or more sources and it can also be output to one or more destinations. ETL processing is typically executed using software applications but it can also be done manually by system operators. ETL software typically automates the entire process and can be run manually or on reccurring schedules either as single jobs or aggregated into a batch of jobs. + ## Resources - [Flat Data](https://octo.github.com/projects/flat-data) - bringing working datasets into your repositories and versioning them - [The sad state of personal data and infrastructure](https://beepb00p.xyz/sad-infra.html#exports) - diff --git a/computer_science/developer_experience.md b/computer_science/developer_experience.md index 1eccb0f..6671764 100644 --- a/computer_science/developer_experience.md +++ b/computer_science/developer_experience.md @@ -8,3 +8,4 @@ - [Developer Experience Infrastructure (DXI)](https://kenneth.io/post/developer-experience-infrastructure-dxi) - [What is Developer Experience? a roundup of links and goodness](https://redmonk.com/jgovernor/2022/02/21/what-is-developer-experience-a-roundup-of-links-and-goodness/) - [The ultimate guide to developer experience](https://www.swarmia.com/blog/developer-experience-what-why-how/?utm_campaign=Pointer&utm_source=email&utm_medium=cpv&utm_content=july23) +- [DevEx: What Actually Drives Productivity](https://queue.acm.org/detail.cfm?id=3595878) diff --git a/computer_science/dns.md b/computer_science/dns.md index ea3bee7..46a4fcd 100644 --- a/computer_science/dns.md +++ b/computer_science/dns.md @@ -5,3 +5,4 @@ - [Why do domain names sometimes end with a dot?](https://jvns.ca/blog/2022/09/12/why-do-domain-names-end-with-a-dot-/) - [Why is DNS still hard to learn?](https://jvns.ca/blog/2023/07/28/why-is-dns-still-hard-to-learn/) - [Implement DNS in a weekend](https://implement-dns.wizardzines.com) +- [The Top of the DNS Hierarchy](https://computer.rip/2024-02-11-the-top-of-the-DNS-hierarchy.html) diff --git a/computer_science/index.md b/computer_science/index.md index 9c137d3..d87f7ef 100644 --- a/computer_science/index.md +++ b/computer_science/index.md @@ -2,7 +2,17 @@ ## Dictionary -- [YAGNI](https://wiki.c2.com/?YouArentGonnaNeedIt) - You Aren't Gonna Need It +- [**YAGNI**](https://wiki.c2.com/?YouArentGonnaNeedIt) - You Aren't Gonna Need It +- [**Read-copy-update**](https://en.wikipedia.org/wiki/Read-copy-update) (RCU) is a synchronization mechanism that avoids the use of lock primitives while multiple threads concurrently read and update elements that are linked through pointers and that belong to shared data structures (e.g., linked lists, trees, hash tables). +- [**OSI Model**](https://en.wikipedia.org/wiki/OSI_model), [What is the OSI Model?](https://www.cloudflare.com/en-gb/learning/ddos/glossary/open-systems-interconnection-model-osi/) + 1. Physical layer + 2. Data link layer + 3. Network layer + 4. Transport layer + 5. Session layer + 6. Presentation layer + 7. Application layer +- **Cross-Cutting Concerns** - Cross-cutting concerns are things that affect many parts of a product. And are hard to separate. For example, monitoring and alerting the health of the services. ## Books @@ -10,6 +20,25 @@ * [A list of computer-science readings I recommend](https://github.com/amilajack/reading) - _by Amila Welihinda_ * [Ask HN: What book to read to get a footing in CS theory?](https://news.ycombinator.com/item?id=20729252) * [Ask HN: What are the most fundamental books on computer science?](https://news.ycombinator.com/item?id=21311302) +- [The Cathedral and the Bazaar](https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar) + - Every good work of software starts by scratching a developer's personal itch. + - Good programmers know what to write. Great ones know what to rewrite (and reuse). (edit: _"What not to write"_) + - Plan to throw one [version] away; you will, anyhow (copied from Frederick Brooks's [The Mythical Man-Month](https://en.wikipedia.org/wiki/The_Mythical_Man-Month)). + - If you have the right attitude, interesting problems will find you. + - When you lose interest in a program, your last duty to it is to hand it off to a competent successor. + - Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging. + - [Release early. Release often.](https://en.wikipedia.org/wiki/Release_early,_release_often) And listen to your customers. + - Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. + - Smart data structures and dumb code works a lot better than the other way around. + - If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource. + - The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better. + - Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong. + - Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away. (attributed to [Antoine de Saint-Exupéry](https://en.wikipedia.org/wiki/Antoine_de_Saint-Exup%C3%A9ry)) + - Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected. + - When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to! + - A security system is only as secure as its secret. Beware of pseudo-secrets. + - To solve an interesting problem, start by finding a problem that is interesting to you. + - Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one. ## Services diff --git a/computer_science/languages/golang.md b/computer_science/languages/golang.md index cc4ba8b..f397f7e 100644 --- a/computer_science/languages/golang.md +++ b/computer_science/languages/golang.md @@ -73,3 +73,4 @@ - [Profiling Go Programs](https://benchkram.de/blog/dev/profiling-go-programs) - [Case Study: Algorithmic Trading With Go](https://polygon.io/blog/case-study-algorithmict-trading-with-go/) - [How to start a Go project in 2023](https://boyter.org/posts/how-to-start-go-project-2023/) +- [Running the “Reflections on Trusting Trust” Compiler ](https://research.swtch.com/nih) by [Russ Cox](https://swtch.com/~rsc/) on [Reflections on Trusting Trust](https://dl.acm.org/doi/pdf/10.1145/358198.358210) by [Ken Thompson](https://en.wikipedia.org/wiki/Ken_Thompson) diff --git a/computer_science/search_engines.md b/computer_science/search_engines.md index f5de4a0..01589fc 100644 --- a/computer_science/search_engines.md +++ b/computer_science/search_engines.md @@ -3,3 +3,9 @@ - [A look at search engines with their own indexes](https://seirdy.one/posts/2021/03/10/search-engines-with-own-indexes/) - [Almost all searches on my independent search engine are now from SEO spam bots](https://blog.searchmysite.net/posts/almost-all-searches-on-my-independent-search-engine-are-now-from-seo-spam-bots/) - [PruningRadixTrie](https://github.com/wolfgarbe/PruningRadixTrie) + +## Resources + +- [The small web is beautiful](https://benhoyt.com/writings/the-small-web-is-beautiful/) +- [Rediscovering the Small Web](https://neustadt.fr/essays/the-small-web/) +- [What is the Small Web?](https://ar.al/2020/08/07/what-is-the-small-web/) diff --git a/computer_science/security/auth.md b/computer_science/security/auth.md index 670471c..ce490d9 100644 --- a/computer_science/security/auth.md +++ b/computer_science/security/auth.md @@ -1,5 +1,12 @@ # Auth +## OAuth2 + +- [RFC 9126 - OAuth 2.0 Pushed Authorization Requests](https://datatracker.ietf.org/doc/html/rfc9126) +- [RFC 9449 - OAuth 2.0 Demonstrating Proof of Possession (DPoP)](https://datatracker.ietf.org/doc/html/rfc9449) +- [RFC 7591 - OAuth 2.0 Dynamic Client Registration Protocol](https://www.rfc-editor.org/rfc/rfc7591.html) +- [RFC 8417 - Security Event Token (SET)](https://datatracker.ietf.org/doc/html/rfc8417) + ## Resources - [Basic HTTP Auth via Cloudflare Workers](https://github.com/dommmel/cloudflare-workers-basic-auth) - Can be used to protect static HTML pages. diff --git a/life/life.md b/life/life.md index 10aab22..318b139 100644 --- a/life/life.md +++ b/life/life.md @@ -72,3 +72,4 @@ - [Effective Spaced Repetition](https://borretti.me/article/effective-spaced-repetition) #memory #life - [Scholarsome](https://github.com/hwgilbert16/scholarsome) - an open source system for flashcard sutyding - [The Ultimate Deliberate Practice Guide: How to Be the Best](https://fs.blog/deliberate-practice-guide/) +- [What I Wish Someone Had Told Me](https://blog.samaltman.com/what-i-wish-someone-had-told-me) by [Sam Altman](https://en.wikipedia.org/wiki/Sam_Altman) diff --git a/life/productivity.md b/life/productivity.md index f700eb8..13a19da 100644 --- a/life/productivity.md +++ b/life/productivity.md @@ -10,7 +10,11 @@ - [Maker's schedule](http://www.paulgraham.com/makersschedule.html) - maker's need larger units of time (half a day or so), meetings can blow their whole afternoon by breaking their flow. -- [Productivity by Sam Altman](https://blog.samaltman.com/productivity) +- [Productivity](https://blog.samaltman.com/productivity) by Sam Altman + > Compound growth gets discussed as a financial concept, but it works in careers as well, and it is magic. A small productivity gain, compounded over 50 years, is worth a lot. So it’s worth figuring out how to optimize productivity. If you get 10% more done and 1% better every day compared to someone else, the compounded difference is massive. + + - What you work on + - Three key pillars: “Make sure to get the important shit done”, “Don’t waste time on stupid shit”, and “make a lot of lists”. - [Why Procrastinators Procrastinate](https://waitbutwhy.com/2013/10/why-procrastinators-procrastinate.html) - [Alexey Guzey on productivity](https://guzey.com/productivity/) - [My productivity app for the past 12 years has been a single .txt file](https://news.ycombinator.com/item?id=22276184) diff --git a/work/career.md b/work/career.md index 317ce4d..2593651 100644 --- a/work/career.md +++ b/work/career.md @@ -109,6 +109,8 @@ - "Do I want to maintain this?" - [The surprising connection between after-hours work and decreased productivity](https://slack.com/blog/news/the-surprising-connection-between-after-hours-work-and-decreased-productivity) - [Readability: Google's Temple to Engineering Excellence](https://www.moderndescartes.com/essays/readability/) +- [Software Engineering at Google](https://abseil.io/resources/swe-book/html/toc.html) + - [Knowledge Sharing](https://abseil.io/resources/swe-book/html/ch03.html#readability_standardized_mentorship_thr) ## Senior Software Engineer diff --git a/work/work.md b/work/work.md index 0e83f76..faa1edb 100644 --- a/work/work.md +++ b/work/work.md @@ -90,6 +90,7 @@ _Get it done_ - the mandate of your job is not _do the best you can_ but _get it - Make experimentation effortless - Embrace reliable mainstream formats (JSON, RSS, etc) - Write code that can be replaced +- [Team Topologies](https://martinfowler.com/bliki/TeamTopologies.html) ## Soft Skills