Philip Silva's Avatar

Philip Silva

@silva.ph.bsky.social

Freelance Software Engineer based in Berlin Working with Web, Go, Linux, DevSecOps (also interested in OpenBSD, Plan 9) silva.ph

454 Followers  |  390 Following  |  29 Posts  |  Joined: 16.11.2024  |  1.5967

Latest posts by silva.ph on Bluesky

Preview
Study finds AI tools made open source software developers 19 percent slower Coders spent more time prompting and reviewing AI generations than they saved on coding.
14.07.2025 20:04 β€” πŸ‘ 197    πŸ” 64    πŸ’¬ 6    πŸ“Œ 24

Redmine is so much more practical than Jira. Especially for issue tracking and it even allows cascading subtasks. The only major downside I see is the Wiki because editing is not in-place. Also post-configuring the Postgres tables was needed for me (utf8mb4) to allow Emojis in issue texts

09.07.2025 13:26 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Now that Let's Encrypt stopped their notification mails I just swapped nginx for Caddy which automagically handles certificates

30.06.2025 12:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

IMHO the best tool to organize source installations on Linux: GNU Stow (unless using an immutable distribution like NixOS...)

07.05.2025 08:39 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Running nginx with HTTP/3 is quite adventurous. I appreciate though that (the required) compiling from source allows me to use LibreSSL

07.05.2025 08:29 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I always create a function Main() (err error) that I call from main. Mostly out of convenience though to be able to just write "return" for error checking

21.04.2025 12:58 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Vulnerability websites with logos seem to have fully superseded CVE numbers by now

16.04.2025 16:26 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I don't like the clunkiness of Dependency Injection but every time I'm surprised how test coverage increases almost by itself

28.03.2025 08:37 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Underrated file system protocol: WebDAV

18.03.2025 07:03 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Self-hosting E-Mail has come a long way. That's my second attempt now, this time with Mox. A few months aren't really enough data points but at this point it's already more reliable than Protonmail

04.03.2025 14:16 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

To create a systemd user service:

β€’ service definition in /home/username/.config/systemd/user/
β€’ using target default (multi-user won't work on boot)
β€’ loginctl enable-linger username
β€’ systemctl --user enable my.service

(Optionally systemctl --user daemon-reload with XDG_RUNTIME_DIR set)

17.02.2025 17:12 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I tried the Vault Secrets Operator recently and once the setup is done, it's really practical. Also automated secret rotation is quite something. #kubernetes #vault

11.02.2025 16:28 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Current versions of WebPageTest are quite practical. Apart from the usual performance insights it also has now carbon control and an accessibility check.

28.01.2025 10:51 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Google enforcing JS enabled browsers reminds me of a discussion I had 11 years ago on the PhantomJS mailing list asking whether it adheres to robots.txt.

The answer was no, also with the argument that it's not a bot and scriptable like a Browser.

I still find it quite an interesting perspective.

19.01.2025 17:09 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I'd also add regularly cleaning the nozzle (watch out, it's hot) before problems occur, just with Isopropyl alcohol and a paper towel. There are plenty of guides how to do this though.

14.01.2025 14:30 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I see, that's not ideal. (I somewhat liked the standardization effort of the Filesystem hierarchy though while it was current but I guess that's only a small bit of it.)

13.01.2025 19:19 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Linux Standard Base - Wikipedia

I cannot believe the Linux Standard Base has been abandoned. (Paradoxically Linux on the Desktop is as popular as never before.) #linux

13.01.2025 19:07 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Using runtime.LockOSThread() is a nice trick to prevent unpredictable results when using #cgo or doing syscalls in #golang

08.01.2025 11:22 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
FLIPPYR.AM

How important is Rowhammer in the real world? Seems it'll be a bit more certain next year #38c3 flippyr.am

31.12.2024 13:25 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

Happy holidays!

24.12.2024 09:23 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Go example that imports a library with a vulnerable accept header parser function from 2020. It uses the reflect package to call it. Running govulncheck in binary mode results in finding 2 vulnerabilities.

Source code:
```
$ cat main.go
package main

import (
    "golang.org/x/text/language" // v0.3.4 (2020)
    "reflect" 
)

func Main() {
    language.ParseAcceptLanguage("00-t-0o")
}

func main() {
    reflect.ValueOf(Main).Call([]reflect.Value{})
}
```

Go example that imports a library with a vulnerable accept header parser function from 2020. It uses the reflect package to call it. Running govulncheck in binary mode results in finding 2 vulnerabilities. Source code: ``` $ cat main.go package main import ( "golang.org/x/text/language" // v0.3.4 (2020) "reflect" ) func Main() { language.ParseAcceptLanguage("00-t-0o") } func main() { reflect.ValueOf(Main).Call([]reflect.Value{}) } ```

Again the same Go example calling a vulnerable function using reflect. This time govulncheck is called in source mode though, reporting:

No vulnerabilities found.

Your code is affected by 0 vulnerabilities.
This scan also found 2 vulnerabilities in packages you import and 0
vulnerabilities in modules you require, but your code doesn't appear to call these vulnerabilities.

Again the same Go example calling a vulnerable function using reflect. This time govulncheck is called in source mode though, reporting: No vulnerabilities found. Your code is affected by 0 vulnerabilities. This scan also found 2 vulnerabilities in packages you import and 0 vulnerabilities in modules you require, but your code doesn't appear to call these vulnerabilities.

govulncheck also has a binary mode to increase coverage for reflect based call chains #devsecops #golang

18.12.2024 16:26 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
log_format no_ip_ua '$time_local "$request" $status $body_bytes_sent "$http_referer"';
access_log /var/log/nginx/access.log no_ip_ua;

log_format no_ip_ua '$time_local "$request" $status $body_bytes_sent "$http_referer"'; access_log /var/log/nginx/access.log no_ip_ua;

Logging in nginx without IP and User-Agent when feasible

13.12.2024 07:46 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Keeping dependency count low and sticking to high quality dependencies at the beginning of a project has multiplier effects. Upgrading to recent versions is feasible when done consistently. Thus keeping security in check and preventing package archeology during migrations #devsecops #shiftleft

06.12.2024 10:32 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Microservices all the way πŸ˜€ I'm playing around with Next at the moment but I cannot decide yet. If anything more complex is needed Backend-wise, I rather put that into a separate service though

03.12.2024 19:59 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

My favorite hosters are actually Hetzner and Scaleway. For instance Scaleway feels very round and I'm impressed that they use resource efficient adiabatic cooling in PAR2 which reduces water usage

02.12.2024 09:21 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Something random like UUID is definitely an advantage security-wise, e.g. to prevent enumeration attacks (definitely need to look into ULID, first time I hear about them)

28.11.2024 17:36 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I like just telling that "a password reset mail was sent to user@example.com" either way. Not disclosing whether that was actually successful. So legit users still have a reasonable UX and may even realize if they entered the wrong mail

Also it's possible to suggest more help (faq/contact)

26.11.2024 20:58 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0


Looking into 2FA for SSH with libpam-google-authenticator on a Debian server. What I notice:

β€’ one factor must be password auth otherwise ineffective (3FA with Key Auth)
β€’ ⚠️ will lock out root by default
β€’ Ansible use tricky

Feels robust so far but planning for lock out scenario seems essential

25.11.2024 14:04 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thanks! πŸ™

21.11.2024 10:29 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Hi Andrei, would be awesome to get added as well!

21.11.2024 08:06 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@silva.ph is following 19 prominent accounts