Don't get me wrong, I love what I do, but to say that this is challenging is an understatement.
I will continue in 2026, still trying to do my best, because I still have a lot of work to do, some new ideas, and hope.
Don't get me wrong, I love what I do, but to say that this is challenging is an understatement.
I will continue in 2026, still trying to do my best, because I still have a lot of work to do, some new ideas, and hope.
Despite all this work, I live under the poverty threshold.
This is 2026 and maintaining OSS projects used by thousands of people is still a sustainability challenge.
I'm not alone in this situation, a lot of maintainers are struggling with it too.
I'm maintaining a large number of OSS projects with different sizes.
All my work is totally free and open source, and often invisible to the public.
This year, I have worked every day, no vacations, no weekends.
I reached the number of 180+ DNS providers supported inside `go-acme/lego`.
I created two new projects (`ldez/gomodcachesize` and `ldez/structtags`).
I reviewed hundreds of PRs, and answered to even more issues.
The review of my year 2025:
I created 533 PRs (1.5 PRs/day AVG).
I created golangci-lint v2.
I have fully revamped the golangci-lint documentation.
I revived golines, and made it 14 times faster.
ttl - bool - It can be set to the following values (number of seconds): 3600, 14400, 28800, 57600, 86400
#FunWithAPIs This is the story of a boolean that can only be a integer.
POST List DNS Records POST Add DNS Record POST Update DNS Record POST Delete DNS Record(s) POST Reset Record
#FunWithAPIs When an API is from the same family as Groot.
What HTTP methods are you using?
> I am POST!
OK... Do you know GET, DELETE, PUT?
> I am POST!
OK, I will use POST.
Perhaps you remember that we had a domain squatting.
I've been monitoring this domain for 2 years, and for the past 2 weeks, I've been checking it twice a day while waiting for the deletion period to end so I can reclaim it.
Today was the end of that period, and guess what?
We often focus on binary size, but do you know the size of the files inside the module cache for your project?
On a CI, this may lead you to "no space left on device"
I created a small tool to calculate module cache size for a module.
github.com/ldez/gomodca...
#golang
BREAKING.
From a reliable source. MITRE support for the CVE program is due to expire tomorrow. The attached letter was sent out to CVE Board Members.
I am thrilled to announce the release of golangci-lint v2!
ldez.github.io/blog/2025/03...
#golang #golangcilint
Golangci-lint financial report. January 2025
Golangci-lint financial report.
github.com/golangci/gol...
#golang #golangcilint
It's time for a v2 of golangci-lint!
github.com/golangci/gol...
#golang #golangcilint
Happy New Year π
New release (v1.63.0) of golangci-lint!
What's new?
golangci-lint.run/product/chan...
#golang #golangci-lint
π€ maybe It works but it need to be uploaded with video button.
run with
I missed that gif doesn't work on Bluesky
linters: enable: - usetesting linters-settings: usetesting: # Detects usage of `os.Chdir()` # Disabled if Go < 1.24. os-chdir: true # Detects usage of `context.Background()` # Disabled if Go < 1.24. context-background: true # Detects usage of `context.TODO()` # Disabled if Go < 1.24. context-todo: true
Bonus: this linter is go1.24 ready β¨
> ./golangci-lint run example_test.go:41:18: os.CreateTemp("", ...) could be replaced by os.CreateTemp(t.TempDir(), ...) in TestSample (usetesting) tmpFile, err := os.CreateTemp("", pattern) example_test.go:46:17: os.MkdirTemp() could be replaced by t.TempDir() in TestSample (usetesting) tmpDir, err := os.MkdirTemp("", pattern) example_test.go:51:17: os.TempDir() could be replaced by t.TempDir() in TestSample (usetesting) otherTmpDir := os.TempDir() >
linters: enable: - usetesting linters-settings: usetesting: # Detects usage of `os.CreateTemp("", ...)` os-create-temp: true # Detects usage of `os.MkdirTemp()` os-mkdir-temp: true # Detects usage of `os.TempDir()` os-temp-dir: true
I created a new linter to detect calls which can be replaced by methods from the testing package.
github.com/ldez/usetest...
This new linter will be available in the next version of golangci-lint (v1.63).
Support my work: bento.me/ldez
#golang #golangcilint
in computer news: lol, lmao
github.com/ultralytics/...
it looks like github actions got tricked into running bash through a malicious branch name
which was used to ship mining malware inside python packages
incredible
Great! My PR about publishing AUR from sources (not '-bin') has been merged into #GoReleaser, I can't wait to be able to use it, this will save me time and simplify the release processes.
Thank you @caarlos0.dev β€οΈ
> go mod edit -go=1.22 > ./golangci-lint run go.mod:3:1: go directive (1.22) doesn't match the pattern '\d\.\d+\.0$' (gomoddirectives) go 1.22 > go mod edit -go=1.22.3 > ./golangci-lint run go.mod:3:1: go directive (1.22.3) doesn't match the pattern '\d\.\d+\.0$' (gomoddirectives) go 1.22.3 > go mod edit -go=1.22.0 > ./golangci-lint run
linters: enable: - gomoddirectives linters-settings: gomoddirectives: # Defines a pattern to validate `go` directive. go-version-pattern: '\d\.\d+\.0$'
I added an option to the `gomoddirectives` linter: it forces the usage of patch 0 (ex: 1.22.0) or go family (ex 1.22) as min go version.
github.com/ldez/gomoddi...
This feature will be available in the next version of golangci-lint (v1.63).
Support my work: bento.me/ldez
#golang #golangcilint
Output of the golangci-lint command
Example of linter configuration: linters: enable: - tagliatelle linters-settings: tagliatelle: case: rules: json: camel overrides: # Ignore a package. - pkg: my/pkg ignore: true # Use different rules by package. - pkg: my/otherpkg rules: json: snake
I updated `tagliatelle` linter, you can now define the naming rules of struct tags by package.
github.com/ldez/tagliat...
This new feature will be available in the next version of golangci-lint (v1.63).
Sponsor my work: bento.me/ldez
#golang #golangcilint
merci
thank you
If you are using some of the projects I maintain, then click on the link bento.me/ldez π
Each donation is important to me β€οΈ
Please, RT this message.
Starting today, my only source of revenue is community sponsoring for my OSS work.
Currently, it is far from enough to live on.
The next months will be difficult, but I need to do it.
My main focus will be on golangci-lint and go-acme/lego, I want to add new features.
A few months ago a user alerted us to the existence of a weird website: a domain squatting website but with a really weird approach.
Maybe you can help us.
1/5
I learned something today: I was interacting with a Chinese contributor, and he was using "~" at the end of some sentences.
I thought it was related to a translation tool, but not at all.
The tilde is used at the end of sentences to convey a light, playful, or casual tone.
π New release (v1.62) of golangci-lint!
What's new?
golangci-lint.run/product/chan...
#golang #golangci-lint
π
How I published links (and emojis) inside the pkg.go.dev documentation of my module / The missing documentation of pkg.go.dev
ldez.github.io/blog/2024/10...
#go #golang