У своїй статті Андрій Севастьянов ділиться досвідом переходу зі старої Ubuntu на декларативну NixOS. Він описує встановлення системи на ZFS, генерацію конфігів за допомогою ШІ та безпроблемний запуск Steam, а також розбирає переваги nix-shell для зручної ізоляції робочих середовищ.
Розв’язувати задачі оптимізації можна по-різному. Андрій Севастьянов ділиться досвідом створення алгоритму жеребкування для шведських шахів, де замість написання складних переборів використовується міць OR-Tools, а рутинний код частково делегується агенту Gemini.
Якось у 2024 році понад 2 мільйони сайтів одночасно впали через один-єдиний assert! у Rust-коді Cloudflare. Обговорень було море, але вони швидко перетворилися на холівар. За баталіями загубилося головне: як різні мови програмування підходять до assert-ів. Це і спонукало автора написати цю статтю.
Коли запитуєш, як переконатися, що програма працює як треба, зазвичай чуєш: писати unit-тести, наймати більше QA, використовувати статичні аналізатори або просто молитися, щоб усе не зламалося в продакшні. Але часто забувають, що існує формальна верифікація. Що це таке — читайте у блозі.
Автор розповідає про монади «hard way» — через деталізацію та Haskell. Пояснює складні концепції на прикладах і показує, чому розробники часто не здогадуються, що щодня працюють із монадоподібними конструкціями.