Tag programming

16 bookmarks have this tag.

2025-01-13

194.

How I ship projects at big tech companies | sean goedecke

seangoedecke.com/how-to-ship
  • Shipping is really hard and you have to make it your main priority

  • Shipping doesn’t mean deploying code, it means making your leadership team happy

  • You need your leadership team to trust you in order to ship

  • Most of the essential technical work is in anticipating problems and creating fallback plans

  • Scale back your implementation work as you approach launch so you’re free to jump on last-minute problems

  • You should constantly ask yourself “can I ship right this second?”

2024-12-26

192.

Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

news.ycombinator.com/item?id=42492508

Really intresting comments

This question reminds me of the first time I met a blind programmer. I asked him how he managed to code, and he replied with something that stayed with me: a good programmer should organize software in such a way that every piece of code has a clear and logical place. The organization should be so intuitive that anyone could build a mental model of the structure and navigate it easily, even without seeing it.

2024-12-09

189.

Tiger Style

github.com/tigerbeetle/tigerbeetle/blob/a43f2205f5335cb8f56d6e8bfcc6b2d99a4fc4a4/docs/TIGER_STYLE.md

Our design goals are safety, performance, and developer experience. In that order.

Contrary to popular belief, simplicity is also not the first attempt but the hardest revision

code, like steel, is less expensive to change while it's hot.

Safety

NASA's Power of Ten — Rules for Developing Safety Critical Code

  • Use only very simple, explicit control flow for clarity.

  • Put a limit on everything. Fail Fast

  • Assertions detect programmer errors. The only correct way to handle corrupt code is to crash.

  • Assertions are a safety net, not a substitute for human understanding.

    • Build a precise mental model of the code first.

    • encode your understanding in the form of assertions,

    • write the code and comments to explain and justify the mental model to your reviewer,

    • and use VOPR as the final line of defense, to find bugs in your and reviewer's understanding of code.

  • No memory may be dynamically allocated (or freed and reallocated) after initialization.

  • Declare variables at the smallest possible scope, and minimize the number of variables in scope.

  • Good function shape is often the inverse of an hourglass: a few parameters, a simple return type, and a lot of meaty logic between the braces.

  • Centralize control flow. When splitting a large function, try to keep all switch/if statements in the "parent" function, and move non-branchy logic fragments to helper functions.

  • Centralize state manipulation. Let the parent function keep all relevant state in local variables, and use helpers to compute what needs to change, rather than applying the change directly.

Developer Experience

  • Add units or qualifiers to variable names, and put the units or qualifiers last, sorted by descending significance. latency_ms_max rather than max_latency_ms.

  • Callbacks go last in the list of parameters.

  • Order matters for readability (even if it doesn't affect semantics). On the first read, a file is read top-down, so put important things near the top. The main function goes first.

  • Don't overload names with multiple meanings that are context-dependent.

2024-11-22

175.

Hyrum's Law in Golang

abenezer.org/blog/hyrum-law-in-golang

With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.

2024-11-14

173.

Testcontainers - Unit tests with real dependencies

testcontainers.com

Testcontainers is an open source library for providing throwaway, lightweight instances of databases, message brokers, web browsers, or just about anything that can run in a Docker container.

2024-10-14

159.

Cognitive load

minds.md/zakirullin/cognitive

The best components are those that provide powerful functionality yet have simple interface.

Do not add layers of abstractions for the sake of an architecture. Add them whenever you need an extension point that is justified for practical reasons.

2024-10-12

Reposted 156.

Collection

git.calculate-linux.org/serg-sg/collection

Сборник различных сценариев автоматизации и справочных материалов

Есть инструкция для почтового сервиса в кластере

2024-07-23

Reposted 137.

Как разработчику вкатываться в новые проекты

strizhechenko.github.io/2024/07/12/how-to-dig-into-a-project.html
Reposted 136.

The Forth Methodology of Charles Moore by Jeff Fox 12/09/01

www.ultratechnology.com/method.htm

Don't leave openings in which you are going to insert code at some future date when the problem changes because inevitably the problem will change in a way that you didn't anticipate. Whatever the cost it's wasted. Don't anticipate, solve the problem you've got.

2024-06-21

98.

Home-Cooked Software and Barefoot Developers

maggieappleton.com/home-cooked-software

The emerging golden age of home-cooked software, barefoot developers, and why the local-first community should help build it

2024-06-18

92.

DreamBerd: perfect programming language

github.com/TodePond/DreamBerd

perfect programming language.

Best programming language of all time

2024-04-20

58.

Why you need a "WTF Notebook"

www.simplermachines.com/why-you-need-a-wtf-notebook

WTF Notebook gives me a place to park the impulse to fix it now, damn it! until I have more context for deciding what to work on first. Instead, for two weeks, I just write things down.

2024-04-13

Reposted 56.

How I write tests in Go

blog.verygoodsoftwarenotvirus.ru/posts/testing-in-go

In many other languages, you have to not only evaluate testing libraries, but also write your tests in a style that complies with that library’s expectations. Gophers are blessed to have a thoroughly adequate solution out-of-the-box, and even further blessed to have an active ecosystem where folks are making in-depth testing a walk in the park.

2024-04-08

53.

Эффект Монреаля: почему языкам программирования нужен Царь стилей

habr.com/ru/companies/ruvds/articles/805235

2024-03-14

30.

Почему твоя мама всё ещё не прогает?

habr.com/ru/companies/domclick/articles/569062

Однажды в конце декабря, когда воздух пахнет сгорающими над городом фейерверками, а улицы полны паникующих из-за цен на горошек, я решил научить программированию бомжа...
Фрустрация от когнитивной сложности — это то самое неприятное чувство, которое возникает, когда не можешь разобраться в какой-то запутанной фигне. В результате для любого человека процесс программирования переполнен страданием. Нормальный человек боль не любит и прогать бросает

2024-03-12

Reposted 17.

Choose Boring Technology

boringtechnology.club

Innovation tokens and whatnot.