Sign in

Fernandez Ludovic

@ldez.dev
163 followers 28 following 27 posts

I'm a community-funded open-source developer. Core maintainer of Golangci-lint, go-acme/lego, and some open-source projects you may be using 😉

PostsRepliesMedia
Fernandez Ludovic @ldez.dev · 08/06/2026
If you are like me, tired of having to commit and push your forms to GitHub to see if they would work, I may have a solution for you. github.com/ldez/ghforms #github
github.com
GitHub - ldez/ghforms: GitHub Forms Live Preview and Validation (Issues and Discussions)
GitHub Forms Live Preview and Validation (Issues and Discussions) - ldez/ghforms
020
Fernandez Ludovic @ldez.dev · 28/05/2026
If you are maintaining a library in Go: you never need to update the minimum version unless you are using a language feature related to a specific Go version. And, please stop updating the minimum Go version to patch versions. #golang
020
Reposted by Fernandez Ludovic
go-acme/lego @goacme.bsky.social · 11/05/2026
I am thrilled to announce go-acme/lego v5! This is a major release that brings a completely redesigned CLI, and powerful new features. ldez.github.io/blog/2026/05...
ldez.github.io
Welcome to go-acme/lego v5
I am thrilled to announce go-acme/lego v5! This is a major release that brings a completely redesigned CLI, and powerful new features.
012
Fernandez Ludovic @ldez.dev · 09/05/2026
Until #github decides to protect us from this, I created a GitHub Action to close "blank template" issues. github.com/ldez/no-blan...
github.com
GitHub - ldez/no-blank-issue: Automatically closes newly opened issues that have no labels, indicating that the issue forms have not been used.
Automatically closes newly opened issues that have no labels, indicating that the issue forms have not been used. - ldez/no-blank-issue
010
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 04/05/2026
Today is a special day for Star Wars fans, but this is also the birthday for the first commit of golangci-lint (it was a Friday in 2018 at 4pm). The v1 was released 9 days later (2018/05/13). Shoutout to Denis Isaev, who created golangci-lint.
A gopher behind a birthday cake with eight candles.
033
Fernandez Ludovic @ldez.dev · 09/01/2026
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.
000
Fernandez Ludovic @ldez.dev · 09/01/2026
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.
120
Fernandez Ludovic @ldez.dev · 09/01/2026
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.
110
Fernandez Ludovic @ldez.dev · 09/01/2026
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.
100
Fernandez Ludovic @ldez.dev · 09/01/2026
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.
110
Fernandez Ludovic @ldez.dev · 07/01/2026
#FunWithAPIs This is the story of a boolean that can only be a integer.
ttl - bool - It can be set to the following values (number of seconds): 3600, 14400, 28800, 57600, 86400
000
Fernandez Ludovic @ldez.dev · 06/01/2026
#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.
POST List DNS Records
POST Add DNS Record
POST Update DNS Record
POST Delete DNS Record(s)
POST Reset Record
000
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 06/12/2025
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?
143
Fernandez Ludovic @ldez.dev · 25/04/2025
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
000
Reposted by Fernandez Ludovic
Tib3rius @tib3rius.bsky.social · 15/04/2025
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.
35672409
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 24/03/2025
I am thrilled to announce the release of golangci-lint v2! ldez.github.io/blog/2025/03... #golang #golangcilint
ldez.github.io
Welcome to golangci-lint v2
I am thrilled to announce the release of v2! I hope is that these features will enhance your development experience.
1113
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 27/01/2025
Golangci-lint financial report. github.com/golangci/gol... #golang #golangcilint
Golangci-lint financial report.

January 2025
021
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 06/01/2025
It's time for a v2 of golangci-lint! github.com/golangci/gol... #golang #golangcilint
github.com
🪩 It's time to create a v2 🚀 · Issue #5300 · golangci/golangci-lint
There are at least 6 years since the idea of a v2 is here, we should pass this step now. ImportantThe focus will be on structural configuration changes and default values changes only (and removing...
084
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 01/01/2025
Happy New Year 🎉 New release (v1.63.0) of golangci-lint! What's new? golangci-lint.run/product/chan... #golang #golangci-lint
golangci-lint.run
Changelog | golangci-lint
Fast Go linters runner golangci-lint.
0104
Fernandez Ludovic @ldez.dev · 09/12/2024
🤔 maybe It works but it need to be uploaded with video button.
010
Fernandez Ludovic @ldez.dev · 09/12/2024
I missed that gif doesn't work on Bluesky
run with
100
Fernandez Ludovic @ldez.dev · 09/12/2024
Bonus: this linter is go1.24 ready ✨
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
100
Fernandez Ludovic @ldez.dev · 09/12/2024
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
> ./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
162
Reposted by Fernandez Ludovic
tef @tef.bsky.social · 06/12/2024
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
github.com
Discrepancy between what's in GitHub and what's been published to PyPI for v8.3.41 · Issue #18027 · ultralytics/ultralytics
Bug Code in the published wheel 8.3.41 is not what's in GitHub and appears to invoke mining. Users of ultralytics who install 8.3.41 will unknowingly execute an xmrig miner. Examining the file util...
311433
Fernandez Ludovic @ldez.dev · 06/12/2024
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 ❤️
021
Fernandez Ludovic @ldez.dev · 04/12/2024
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
> 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 runlinters:
  enable:
    - gomoddirectives

linters-settings:
  gomoddirectives:
    # Defines a pattern to validate `go` directive.
    go-version-pattern: '\d\.\d+\.0$'
022
Fernandez Ludovic @ldez.dev · 03/12/2024
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
Output of the golangci-lint commandExample 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
001
Fernandez Ludovic @ldez.dev · 02/12/2024
merci
000
Fernandez Ludovic @ldez.dev · 02/12/2024
thank you
010
Fernandez Ludovic @ldez.dev · 02/12/2024
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.
000
Fernandez Ludovic @ldez.dev · 02/12/2024
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.
494
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 25/11/2024
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
111
Fernandez Ludovic @ldez.dev · 19/11/2024
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.
020
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 10/11/2024
🎉 New release (v1.62) of golangci-lint! What's new? golangci-lint.run/product/chan... #golang #golangci-lint 👇
golangci-lint.run
Changelog | golangci-lint
Fast Go linters runner golangci-lint.
112
Fernandez Ludovic @ldez.dev · 28/10/2024
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
ldez.github.io
How I published links inside the pkg.go.dev documentation of my module
While hunting down a package on https://pkg.go.dev, I stumbled upon a delightful surprise in the “Links” section: there are custom links!! What is this magic?
000
Fernandez Ludovic @ldez.dev · 18/09/2024
Joke of the day, the answer of a DNS provider to their customers: > We cannot provide an API that creates or deletes a DNS record, as this is a threat to the DNS itself.
000
Fernandez Ludovic @ldez.dev · 14/09/2024
It can be useful if you want to get an overview of the forks of a GitHub repository github.com/ldez/distrib...
github.com
GitHub - ldez/distributarepo: Helper to get an overview of the forks of a GitHub repository.
Helper to get an overview of the forks of a GitHub repository. - ldez/distributarepo
000
Reposted by Fernandez Ludovic
golangci-lint.run @golangci-lint.run · 09/09/2024
Invest in the sustainability of open-source software, and donate to golangci-lint! Your generosity ensures we can continue to serve gophers worldwide. - opencollective.com/golangci-lint - github.com/sponsors/gol... #golang #go #osssustainability
001
Fernandez Ludovic @ldez.dev · 04/07/2024
I "unclogged" the module "github.com/gofrs/flock", so if you need a thread-safe file-locking library in Go, you can use it. github.com/gofrs/flock #golang #go
github.com
GitHub - gofrs/flock: Thread-safe file locking library in Go
Thread-safe file locking library in Go. Contribute to gofrs/flock development by creating an account on GitHub.
031