Justin Kim
Logic meets intuition
-
KSUID와 UUIDv7을 동시에 지원하는 경량 UID 생성기: libchronoid 이야기
Datalog 엔진을 만들면서 ID 생성기가 필요했는데 많은 고민을 한 끝에 직접 만들기로 했습니다. 단순 난수 기반의 중복을 피하는 ID가 아니라, 생성 순서를 보존해야 하고, 데이터베이스 정렬 성능에 영향을 주지 않으면서, 동시에 외부 시스템과도 호환되어야 했습니다. 그런데 기존 UID 라이브러리들은 C 외부 의존성이 많았고, 임베디드 환경이나 서버 확장 모듈에 포함시키기 어려웠습니다....
-
순수 소프트웨어로 구현하는 비디오 스태빌라이저: GStreamer 파이프라인의 이해
순수 소프트웨어로 구현하는 비디오 스태빌라이저: GStreamer 파이프라인의 이해 왜 소프트웨어 스태빌라이저인가 손으로 촬영한 영상은 항상 떨립니다. 손 떨림, 바람, 움직임—대부분의 영상에는 이런 흔들림이 있죠. 비디오 스태빌라이제이션은 이 문제를 푸는 방법인데, 기술에 따라 세 가지로 나뉩니다. OIS(Optical Image Stabilization)는 렌즈나 센서 자체를 움직여서 보정하고, EIS(Electronic Image Stabilization)는 자이로 센서 데이터를 써서...
-
Symbolic AI에서 Datalog가 필요한 이유
Datalog와 Prolog는 논리 프로그래밍(Logic Programming)이라는 동일한 뿌리에서 파생되어 시각적으로 매우 유사한 문법을 공유하고 있습니다. 때문에 Datalog를 처음 접하게 되면 이미 익숙하고 범용적인 Prolog와의 실질적인 차이를 체감하기 쉽지 않습니다. 하지만 그 동작 원리와 목적을 자세히 들여다보면 이 둘이 지향하는 방향은 완전히 다릅니다. 이 글에서는 겉보기에 비슷해 보이는 두 언어의 근본적인 차이점을...
-
캐시 히트율을 위한 Radix Sort 도입 기대
Datalog 엔진을 구현하다 보면 성능 병목을 해결하기 위해 다양한 최적화 기법을 도입하게 됩니다. 특히 다량의 데이터를 처리해야 하는 데이터베이스나 논리 프로그래밍 엔진에서는 어떤 정렬 알고리즘을 선택하느냐에 따라 전체적인 성능 차이가 극명하게 나타날 수 있습니다. 이번 글에서는 기수 정렬(Radix Sort)의 기본 개념에 대해 알아보고, 왜 Datalog 엔진에서 정렬 알고리즘이 필수적인지, 그리고...
-
시맨틱 태깅, 단순한 키워드를 넘어 지식의 연결로
기록이 쌓일수록 고민도 깊어집니다. 우리는 매일 수많은 노트를 작성하고, 나중에 찾기 쉽게 ‘태그’를 답니다. #datalog, #pkm, #ai 같은 키워드들이 그 예입니다. 하지만 시간이 흘러 노트가 수백, 수천 개가 되었을 때, 이 태그들이 정말 우리에게 의미 있는 ‘지식’으로 기능하고 있는지는 돌이켜볼 문제입니다. 키워드 태깅의 한계: 단순한 문자열의 나열 우리가 흔히 쓰는...