20 random bookmarks
Тут будут ссылки на всё-всё, что я найду интересным
Тут будут ссылки на всё-всё, что я найду интересным
Меня просто нечеловечески бесит, когда разработчики оправдывают собственную некомпетентность мантрой «бизнесу надо». Если программист любой степени квалификации, от стажёра — до принципала — использует в качестве аргумента в любой дискуссии фразу «бизнесу надо» — знайте, перед вами тупой самозванец, гоните его в шею.
Automatic headphone equalization
Avoid these things:
Asking the developer how things should work: It’s your responsibility to know how a feature should work; if you don’t, how can you test it?
Reporting bugs outside of the ticket: Avoid informal bug discussions, as they waste time for you and your team.
Using vague phrases like “This does not work properly”: ‘Properly’ is unclear—specify exactly what’s wrong.
Большое машиностроительное предприятие в Екатеринбурге и как там всё работает
Staticcheck - The advanced Go linter. Contribute to dominikh/go-tools development by creating an account on GitHub.
Chats, emails, phone calls, mailing lists, issue tracking systems, face-to-face meetings, and other communication instruments for a software project.
Micro-tasking is a management paradigm we've been practicing for over eight years, to the benefit of our programmers and project sponsors.
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)
}
SQL has evolved. Beyond the relational model. Discover it now.
О том, почему важно занимать обе стороны на эскалаторе в метро.
Постоянно об этом задумывался, а тут мне скинули статью.
PRQL is a modern language for transforming data
Интересная замена SQL. Запросы для аналитики данных станет писать намного проще. Не думаю, что для чего-то другого этот проект подойдёт. Условный CRUD проще написать, используя именно SQL запросы, здесь PRQL излишен.
Как технически обнаружить мусорщика и почему камеры, смотрящие не на фасад, бесполезны
Library of free eBooks
If you want a single piece of advice to reduce your bug count, it’s this:
Re-read your code frequently. After writing a few lines of code (3 to 6 lines, a short block within a function), re-read them. That habit will save you more time than any other simple change you can make.
Сайт с заданиями для создания, редактирования, проверки данных ОСМ
Рич Хикки рассказывает о различиях простоты и лёгкости в контексте проектирования и написания программ.
Говорит, что многие выбирают лёгкость, забывая про простоту. Со временем комплексность превращается во что-то такое, что сложно поддерживать и в чём сложно разобраться новичкам.
Нужно стремиться искать лёгкие способы делать простые программы.