20 random bookmarks

Тут будут ссылки на всё-всё, что я найду интересным

2026-07-12

997.

Betula Logo Devlog

garden.bouncepaw.com/hypha/betula_logo_devlog

For the NLNet Betula grant, I had to redesign the logo. The old one was not very recognisable at small sizes, barely looked like a birch, etc. June 2026, I spent several days working on the new one. Turned out, logo design and vector graphics are so much more complicated than I anticipated! Went through multiple approaches until I settled on the final logo. It's live on https://joinbetula.org or instances running newer versions, such as https://links.bouncepaw.com.

2026-06-12

984.

Datasette

datasette.io

Datasette is a tool for exploring and publishing data. It helps people take data of any shape, analyze and explore it, and publish it as an interactive website and accompanying API.

2026-04-18

958.

How much of your life are you selling off?

www.raptitude.com/2013/04/how-much-of-your-life-are-you-selling-off

Most people’s financial decisions are driven by what the people around them decide — which, in this culture, typically ranges from thoughtless to completely backwards — and conscious thought about the getting the best deal on happiness doesn’t enter the picture. Would you rather have five all-expenses-paid years off to spend with your family, learn a language or build a business — or drive a big car instead of a small car? It’s shockingly normal for people to choose the latter, because they have no idea that they’re making that choice at all.

...

I am way happier already. In the three months since I’ve been smarter about my spending, I’ve saved three months’ worth of living expenses, which has an immediate stress-reducing effect. I could get laid off or fired and have plenty of time to figure out what to do, so there’s much less day-to-day stress about my job performance, which has actually led to an effortless improvement in job performance. I have a sense of control over my life that I’ve never felt before. These intangible dividends are immediate, and they don’t cost a cent because the money is still mine.

2026-04-06

953.

How Does Clean Code Work?

rocket-science.ru/hacking/2026/04/06/how-does-clean-code-work

Clean Code doesn't work—not because the principles are wrong, but because the real world is dirty, chaotic, unpredictable, and asynchronous. The best code I’ve ever seen violated a good half of Clean Code’s commandments.

2026-02-13

931.

You have to know how to drive the car

www.seangoedecke.com/knowing-how-to-drive-the-car

2025-05-12

858.

The importance of virtue in software engineering

www.seangoedecke.com/character-in-software-engineering

Plenty of books and blogs will tell you how to develop your functional programming skills or teach you algorithms. But if you’re already pretty good at that stuff, you might be better off trying to become a more virtuous human being: more in control of your emotions, more able to hold your nerve in times of crisis, and humbler about the institutional power your technical knowledge grants you.

2025-02-14

Reposted 837.

Providing HTML Content Using Htmx

docs.postgrest.org/en/v12/how-tos/providing-html-content-using-htmx.html

HTMX in PostgREST!

create or replace function api.index() returns "text/html" as $$
  select $html$
    <!DOCTYPE html>
    <html>
    ...
    </html>
  $html$;
$$ language sql;

2024-06-26

695.

Как правильно работать с убеждениями

spectator.ru/entry/6701

Вывели с клиентом универсальную «инструкцию к терапии». На случай, если кому-то это нужно. Как часто и бывает, у него была популярная мечта сначала что-то поменять в голове, а потом зажить по-новому.

2024-06-14

683.

ChatGPT is bullshit - Ethics and Information Technology

link.springer.com/article/10.1007/s10676-024-09775-5

Recently, there has been considerable interest in large language models: machine learning systems which produce human-like text and dialogue. Applications of these systems have been plagued by persistent inaccuracies in their output; these are often called “AI hallucinations”. We argue that these falsehoods, and the overall activity of large language models, is better understood as bullshit in the sense explored by Frankfurt (On Bullshit, Princeton, 2005): the models are in an important way indifferent to the truth of their outputs. We distinguish two ways in which the models can be said to be bullshitters, and argue that they clearly meet at least one of these definitions. We further argue that describing AI misrepresentations as bullshit is both a more useful and more accurate way of predicting and discussing the behaviour of these systems.

2024-05-02

618.

Uiua

www.uiua.org

Uiua (wee-wuh) is a general purpose, stack-based, array-oriented programming language with a focus on simplicity, beauty, and tacit code

2024-03-27

590.

Подкасты с «продакшеном»

ilyabirman.ru/meanwhile/all/podsasts-production

Бесит, что всё больше подкастов монтируют и оформляют всякими джинглами, перебивками и эффектами. Такое ощущение, что туда понаприходили люди с радио и телевидения, которые не понимают, как устроен интернет, и притащили с собой весь эфирный мусор. Причём многие слушатели, кто открывают для себя подкасты только в последнее время, думают, что так и надо, и не видят в этом абсурда — другого-то они не слышали!

2024-03-10

567.

Сервисы

grishaev.me/services

Я согласен с тем, что логику нужно разносить по сервисам. Но сервисы должны использовать общую шину данных: базу, очередь сообщений, файлы в S3 в конце концов. Гонять друг другу JSON выглядит хорошо в теории, но на практике — фу.

Условный Постгрес выплюнет миллион записей за доли секунды. Забрать этот же миллион из другого сервиса — приключение на неделю. Тут и метрики, лимиты, квоты, сетевые спайки, etc… А когда таких запросов несколько, сервис ложится спать.

2024-03-06

547.

Dysfunctional options pattern in Go

rednafi.com/go/dysfunctional_options_pattern
package src

type config struct {
    // Required
    foo, bar string

    // Optional
    fizz, bazz int
}

// Each optional configuration attribute will have its own public method
func (c *config) WithFizz(fizz int) *config {
    c.fizz = fizz
    return c
}

func (c *config) WithBazz(bazz int) *config {
    c.bazz = bazz
    return c
}

// This only accepts the required options as params
func NewConfig(foo, bar string) *config {
    // First fill in the options with default values
    return &config{foo, bar, 10, 100}
}

func Do(c *config) {}

You’d use the API as follows:

package main

import ".../src"

func main() {
    // Initialize the struct with only the required options and then chain
    // the option methods to update the optional configuration attributes
    c := src.NewConfig("hello", "world").WithFizz(0).WithBazz(42)
    src.Do(c)
}

2023-12-21

Reposted 466.

NilAway: Practical Nil Panic Detection for Go

www.uber.com/blog/nilaway-practical-nil-panic-detection-for-go

A linter for Go that finds nil panics. It found several potential nil panic in Betula and Mycorrhiza codebases that I didn't bother fixing.

2023-11-04

392.

Lobsters

lobste.rs

Ещё один сайт для ссылок

2023-10-26

372.

Людские пробки в метро у эскалаторов. Как с ними бороться?

habr.com/ru/articles/733438

О том, почему важно занимать обе стороны на эскалаторе в метро.

Постоянно об этом задумывался, а тут мне скинули статью.

2023-10-02

351.

Time to upgrade your monitor

tonsky.me/blog/monitors

A non-comprehensive and opinionated guide to best monitor for programming

349.

Карта гулябельности Санкт-Петербурга

habr.com/ru/articles/583810

2023-08-10

284.

Как DOOM пугала раньше и продолжает сейчас

youtu.be/GSq0CkR1c64

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

2023-08-07

279.

Elements of C Style

www.teamten.com/lawrence/style

Заметки о том, как писать и оформлять код на Си