oleg_log
1.77K subscribers
1.86K photos
130 videos
9 files
2.78K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
Why Software Projects need Heroes (Lessons Learned from 1000+ Projects)

A "hero" project is one where 80% or more of the contributions are made by the 20% of the developers. Those developers are called "hero" developers. In the literature, heroes projects are deprecated since they might cause bottlenecks in development and communication. However, there is little empirical evidence on this matter. Further, recent studies show that such hero projects are very prevalent. Accordingly, this paper explores the effect of having heroes in project, from a code quality perspective by analyzing 1000+ open source GitHub projects. Based on the analysis, this study finds that (a) majority of the projects are hero projects; and (b)the commits from "hero developers" (who contribute most to the code) result in far fewer bugs than other developers. That is, contrary to the literature, heroes are standard and very useful part of modern open source projects.

https://arxiv.org/abs/1904.09954
Кто-то мне объяснит эту тенденцию, когда опытные и в чем-то даже умные люди в IT уходят читать курсы по этому же IT ?

То есть не решают расти по карьерной лестнице, не идут в бизнес или подобное, а просто садятся в душных чатиках и рассказывают студентам и стремящимся к синьерам как нужно работать и на что смотреть.

Просто не раз на таких натыкался и не совсем улавливаю цель, или их мотивацию, хз. Может вы другой паттерн у таких дедов(и бабуль) встречали? (к примеру кофейни идут открывать)
Python я в прод не пускал, но эта штука звучит полезной и приятной.

In Python every class can have instance attributes. By default Python uses a dict to store an object’s instance attributes. This is really helpful as it allows setting arbitrary new attributes at runtime.

However, for small classes with known attributes it might be a bottleneck. The dict wastes a lot of RAM. Python can’t just allocate a static amount of memory at object creation to store all the attributes. Therefore it sucks a lot of RAM if you create a lot of objects (I am talking in thousands and millions). Still there is a way to circumvent this issue. It involves the usage of slots to tell Python not to use a dict, and only allocate space for a fixed set of attributes. Here is an example with and without slots:

https://book.pythontips.com/en/latest/__slots__magic.html
Ах да, чуть не забыл зачем я в офисе сижу до вечера

UPD: Слайды конечно же https://speakerdeck.com/olegkovalov/za-paru-mghnovienii-do-main
Forwarded from How to Go wrong
GopherCon Russia 2021 стартует уже через полчаса, и бесплатная регистрация ещё открыта! Все на https://www.gophercon-russia.ru !

А ещё там можно купить билет на крутейшие воркшопы в субботу и воскресенье. Булат Замалутдинов и Николай Маржан расскажут как писать Kubernetes-операторы, чтобы всё работало и не ломалось; Искандер Шарипов расскажет как крафтить линтеры, чтобы самим всё не сломать; а Валерий Мелешкин и я расскажем как применять property-based тесты и фаззинг, чтобы самим ломать свой код до production. Места ещё есть!
На самом деле вчера я опубликовал чуть хелперов для sync пакета в Go https://github.com/cristalhq/synx

Возможно кому-то это сделает жизнь проще (мне сделало). Спасибо Богдану (@bortlog) за когда-то там веселый пейринг в субботу.

Напомню еще про атомики) https://xn--r1a.website/oleg_log/790

Заведу еще тег #hq
Forwarded from Alex senpai
Я тут недавно workshop по ruleguard провёл.

Какую-то часть выложил в открытый доступ. :)
Всё остальное было в лайве (плюс там эксклюзивный контент для конференции пока приватный, попозже может открою).

В выложенную часть входит несколько обучающих видео + несколько небольших практических задачек.

Ссылка на плейлист: https://www.youtube.com/watch?v=wZMgZNtKCm0&list=PLAjl-3QkinHvbgBKtIwlD2j3qqZ7iNOhE&index=1
Практические задачки: https://github.com/go-ruleguard/workshop-tasks/blob/main/ru/tasks.md
дааа блен
Crypto miners are killing free CI
CI providers like GitLab, TravisCI, and Shippable are all worsening or shutting down their free tiers due to cryptocurrency mining attacks.
https://layerci.com/blog/crypto-miners-are-killing-free-ci/
Ну наконец-то, сколько я ждал нормальных оплат в Телеге. Этож просто на кончиках пальцев ощущается, как WeChat: тут же сидишь трындишь и тут же оплачиваешь. Короч круто, скорее всего это хороший толчок к росту платформы.

https://telegram.org/blog/payments-2-0-scheduled-voice-chats
Вот это интересно. По крайней мере я надеюсь на интересные вещи в треде. https://www.reddit.com/r/rust/comments/my3ipa/if_you_could_redesign_rust_from_scratch_today/
Вопрос на благо всех: подкиньте материалы по устройству ядра Linux. Совет читать сорцы можете придержать на майские праздники.

Интересны права пользователей, systemd, что там с файловыми системами и тд. Можете не совсем внутренности (аллокаторы, скедулеры), но думаю вы поняли.

Возможно в одной статье/книге этого не будет (скорее не будет), поэтому кидайте, что считаете нужным. Заранее спасибо.
Товарищ Мерлин поднял старый вопрос о сравнении адресов struct{} в Go. Не обошлось без гугления спеки.

https://github.com/golang/go/issues/2620

Pointer values are comparable. Two pointer values are equal if they point to the same variable or if both have value nil. Pointers to distinct zero-size variables may or may not be equal.

...

A struct or array type has size zero if it contains no fields (or elements, respectively) that have a size greater than zero. Two distinct zero-size variables may have the same address in memory.

Пост https://xn--r1a.website/teamerlin/6625