20 random bookmarks
stuff me collect
stuff me collect
The same mission control framework NASA uses for Mars rover operations, ISS monitoring, and spacecraft analysis across the solar system.
Build professional telemetry dashboards and real-time data visualizations.
In this game, we will build the basic theory of the natural numbers {0,1,2,3,4,...} from scratch. Our first goal is to prove that 2 + 2 = 4. Next we'll prove that x + y = y + x. And at the end we'll see if we can prove Fermat's Last Theorem. We'll do this by solving levels of a computer puzzle game called Lean.
I argue for wider usage of delimiter-first in the code.
three friends [tic, tac, toe]becomesthree friends ・tic ・tac ・toe.
Tool to convert JSON into Go structures.
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.
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.
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.
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.
Desktop-приложение с настоящим интерфейсом, с учетом реалий Windows
Reads like some sci-fi story. How is that even a thing??
Science and engineering usually create consistent results. Generally, when you figure out how to make something, you can repeat that at will to make more of something. But what if, one day, you ran the same process, and got different results? You double-checked, and triple-checked, and you kept ending up with a different end product instead?
Perhaps it wasn’t the process that changed, but the environment? Or physics itself? Enter the scary world of disappearing polymorphs.
Yon is a little UI for knowledge designed to be used every day. Add your notes, write your diary, and connect thoughts with bidirectional links. Explore your text through an acme-inspired interface to dive deep or go wide and always find your way back. Yon code and your notes are contained in a single standalone html file with no dependency, so that you can open the lid and tweak any part of it and make it your own.
Concise, clear, and independent mobile note-taking app reviews with a new review each week.
Instantly publish your own books on the web for free, no publisher required.
Blogging and posting on social is easy. But why is it so hard to publish a whole book on the web? It’s not anymore. Writebook is remarkably simple software that allows you to publish text and pictures in a simple, browsable online book format.
Online simulator to learn automotive wiring and how to troubleshoot and fix problems with it
Create an infinite amount of straightforward and readable git manual pages.
Service that generates random man pages mocking Git’s dense documentation style.
Your unofficial guide to dotfiles on GitHub.
Однажды в конце декабря, когда воздух пахнет сгорающими над городом фейерверками, а улицы полны паникующих из-за цен на горошек, я решил научить программированию бомжа...
Фрустрация от когнитивной сложности — это то самое неприятное чувство, которое возникает, когда не можешь разобраться в какой-то запутанной фигне. В результате для любого человека процесс программирования переполнен страданием. Нормальный человек боль не любит и прогать бросает
Я согласен с тем, что логику нужно разносить по сервисам. Но сервисы должны использовать общую шину данных: базу, очередь сообщений, файлы в S3 в конце концов. Гонять друг другу JSON выглядит хорошо в теории, но на практике — фу.
Условный Постгрес выплюнет миллион записей за доли секунды. Забрать этот же миллион из другого сервиса — приключение на неделю. Тут и метрики, лимиты, квоты, сетевые спайки, etc… А когда таких запросов несколько, сервис ложится спать.
Personal goals are generally expected to happen later.
The reason it’s hard to get going on personal goals is that you’re already using all of your time. No matter who you are, you’re already using all 24 hours, every day, for something. Because this will always be true, goals that happen at all must happen now, while you still don’t yet have time.
Basically, you learn to work in small, uniform parcels of time. They’re short, timer-bound, and unwaveringly focused on a particular outcome. Most importantly, they can fit into real life, as it already is.