20 random bookmarks
stuff me collect
stuff me collect
How exactly does sakura help you?
- Just drop it in, even on existing HTML content, to get a pretty-looking website (everything “just works”)
- Quick prototyping, especially when working on backend sites and can’t yet be bothered to fidget with CSS/HTML
- Building a quick (but pretty) site/blog for your best friend or aunt!
- No need to remember tons of different class names for every other CSS framework
- Works amazingly with markdown-generated HTML pages (eliminates the need for hacks like including .img img-responsive in <img></img> tags generated from markdown-parser
- Wonderful for people who aren’t really good or interested in design as sakura is nothing but a set of reasonable defaults
Cultivating memories instead of snapshots.
Do this full body split 3 times a week. The goal is to get your form down pat on the most basic and most important exercises in the gym.
A container-based approach to boot a full Android system on regular GNU/Linux systems running Wayland based desktop environments.
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.
How to use different git identities for different projects
It has aesthetics associated with 90s and 2000s internet.
Social media is too limiting. We believe that everyone should be able to freely express themselves in their own little corner of the web, without having to worry about things like algorithms, tracking, or advertisements.
Nekoweb is free of any advertisements, and is run completely by donations from its users.
Notes as database. Supports Frontmatter, querying, backlinks, live preview, wiki style linking link, templates.
A single-user “wiki” engine powering the ThoughtStorms wiki.
HackerNews post about Betula
unix is user-friendly—it’s just choosy about who its friends are.
I even have it [Windows] installed on my gaming pc so that I can buy games I never play.
It is easy to shoot your foot off with git, but also easy to revert to a previous foot and merge it with your current leg.
Interactive introduction to grep with real-world use cases.
Did you ever wake up in the middle of the night wondering what would happen if you applied JPEG-style lossy compression to text?
Я согласен с тем, что логику нужно разносить по сервисам. Но сервисы должны использовать общую шину данных: базу, очередь сообщений, файлы в 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.