Good Article Roundup: AI Coding

June 16, 2026

I often can’t find good articles I’ve read. Therefore, I’m for once write a blog post that is just a stash of good links.

Searching for remembered article
Figure 1. Searching for remembered article
Continue reading →

좋은 기사 모음: AI 코딩

June 1, 2026

저는 좋은 기사를 읽은후에 자주 기사를 다시 못 찾아요.

왜 못 챁아요?
Figure 1. 왜 못 챁아요?
Continue reading →

좋은 오류 메시지가 시간을 절약하다

April 24, 2026

개발자는 자주 오류를 보고 오류의 메시지를 읽어야 해요. 그래서 나쁜 오류 메시지 시간 많이 필요할 수 있잖아요. 오류의 안내가 없으면 사람들 추측하기 시작해야 돼요.

나쁜 오류 예: - 프로세스는 비정상 종료 코드만 하하지마! 제발, 표준 에러에 오류를 설명해주세요! - 파일을 못 찾았다고요. 끝. 무슨 파일!, 무슨 파일 못 차았어요? - 등

근데 진짜 좋은 예도 있어요: Babashka HTTP client.

Babashka 선생님
Figure 1. Babashka 선생님

REPL에서:

(http/post "http://gamlor.info/nowhere"
           {:headers {"Authorization" "Bearer open-sesame"}})
=> Execution error (ExceptionInfo) at babashka.http-client.interceptors/fn (interceptors.clj:251).
Exceptional status code: 404

근데, 오류 정보를 더 잘 살펴보면 정보 많이 생기다:

Continue reading →

Good Error Messages Save Time

April 24, 2026

Developers often face errors and will read error messages. So, a bad error message will use a lot of time. If there is no good information, people have to start guessing.

Bad error examples: - Do not a process with only an error code. Please explain the error in the error standard out. - "File not found error." End. What file! WHAT file was not found - etc

However, a good example is Babashka HTTP client.

Babashka Teacher
Figure 1. Babashka Teacher

In the REPL:

(http/post "http://gamlor.info/nowhere"
           {:headers {"Authorization" "Bearer open-sesame"}})
=> Execution error (ExceptionInfo) at babashka.http-client.interceptors/fn (interceptors.clj:251).
Exceptional status code: 404

Not much, but you can ask for the full error information in the REPL:

Continue reading →

루트 없는 포트 80/443 사용하기 방법: 방화벽으로

December 29, 2025

유닉스는 루트만 1024이한 포트를 사용할 수 있어요. 근데 인터넷 듣기 위험해요: 이 프러그램이 보안 취약 있으면 나쁜 넘들이 루트 권한을 받을 수 있어요. 그래서 비루트로 1024이한 포트를 사용한 방법 필요해요.

잘 아는 방법은:

  • `setuid`과 `setgid`로 포트 바인딩 하기 후에 일반 사용자 바꼬기 보텅 권한 해제해요.

  • 자근 유틸리티 privbind는 모든 프로그램 1024이한 포트를 사용 권한으로 비루트로 시작해요.

  • 리눅스의 CAP_NET_BIND_SERVICE capability 프로그램에게 권한을 해요.

  • Docker 아니면 다른 컨테이너는 포트과 사용자 옵션이 있어요.

피밀
Figure 1. 피밀
Continue reading →