An individual can change an organization
Одно из главных карьерных уроков автора пришло от Дрю ДеВолта в Linode 10 лет назад. Будучи одним из самых молодых разработчиков, Дрю настойчиво отстаивал качественную архитектуру и кодирование, когда в компании царил хаотичный подход. Без специальной должности он смог убедительно аргументировать свою позицию и в итоге преобразовал всю инженерную организацию — то, что, по мнению автора, должно было быть невозможным. Этот опыт научил его, что не нужно ждать людей с большим опытом, чтобы принимать правильные решения.
Автор усвоил несколько ключевых принципов: не переоценивать старшинство, уметь спорить, быть подготовленным с фактами, настойчиво добиваться изменений и понимать, как отдельный человек может изменить направление компании. Хотя он позже понял, когда нужно бороться за изменения, а когда — их отпускать (иногда с сожалением), урок Дрю о возможностях всегда остается в памяти: "Вы можете быть частью принятия правильного решения, если сможете найти логику и волю для этого".
Комментарии (31)
- Дискуссия вращается вокруг того, что вместо того, чтобы пытаться изменить культуру организации, лучше уйти и найти более подходящую культуру.
- Участники обсуждения подчеркивают, что в большинстве случаев это единственно рациональный выбор, особенно если учитывать, что в больших организациях изменения культуры крайне трудны и требуют много времени.
- Некоторые участники подчеркивают, что важно различать "Exit" и "Voice" как два различных подхода к решению проблемы, и что "Voice" требует значительных усилий и может не увенчаться успехом.
- Также поднимается вопрос о том, что если вы не можете изменить организацию, возможно, вам следует изменить организацию.
Website is served from nine Neovim buffers on my old ThinkPad
Кратко: плагин nvim-web-server на чистом Lua отдаёт HTTP-запросы прямо из открытых буферов Neovim, без внешних зависимостей, с нативной поддержкой Djot и быстрее Nginx.
Почему так быстро?
- Однозадачность: только статика.
- libuv + асинхронный I/O Neovim.
- LuaJIT: NaN-тегинг, отсутствие boxing чисел, allocation sinking.
- aiohttp тормозит из-за парсера на чистом Python и boxing в CPython.
Бенчмарк, RPS (среднее):
| сервер | 1 | 50 | 100 | 200 | 400 |
|---|---|---|---|---|---|
| nvim-web-server | 3981 | 15284 | 15124 | 14476 | 14446 |
| Nginx | 4451 | 11306 | 11576 | 10011 | 10461 |
| aiohttp | 6391 | 8477 | 8448 | 7696 | 7132 |
Развёртывание: живёт на старом ThinkPad, 9 буферов — весь сайт.
Безопасность: да, но мелочи мы игнорируем.
Комментарии (17)
- Пользователи в восторге от статьи: называют её «одной из любимейших» и приводят цитату «они были так заняты тем, могут ли, что не спросили себя, стоит ли».
- Кто-то отмечает, что сайт резолвится на IP Linode, но не объясняется, зачем нужен промежуточный сервер.
- Обсуждают безопасность: пример показывает, что «никогда не бывает так, чтобы код точно не запустили по сети».
- Некоторые шутят, что Neovim теперь можно считать кроссплатформенным рантаймом «ужаса», но признают крутость эксперимента.
- Предполагают, что высокая скорость может быть из-за хранения файлов в RAM, а не на диске, и что всё равно всё закешируется.