Profile img

구슬아이스크림

@icecream_mable@hackers.pub · 45 following · 31 followers

인간의 언어처리와 LLM의 언어처리를 서로 비교하는 전산심리언어학(Computational Psycholinguistics)을 연구했'었'습니다.

하지만 CS덕질이 더 재밌다는 걸 깨닫고선 대학원을 탈출했습니다.

요즘은 데이터 엔지니어링과 컴파일러가 재밌어요.

Github
@kihyo-park
Blog
kihyo-park.github.io
Linkedin
kihyo-park
0
1

DB 책 보는데 논리학 기본 파트들을 쭉 훑어주길래 올만에 복습이나 할까 하면서 보고 있는데 문제는 영어 원어가 안 적혀져있고 다 번역어로만 적혀있어서 다시 역으로 번역하면서 보고 있음...정량자는 quantifier, 속박변수는 bound variable, 범용정량자는 universal quantifier 등등..이런 용어들 학교 다닐 때 형식 의미론 수업에서 영어로만 배웠지 (근데 그마저도 가르치는 교수가 막말로 더럽게 못 가르쳤음) 한국어로는 사실상 처음 보는 거라서 좀 헤매고 있다 😵‍💫

2

구슬아이스크림 shared the below article:

PyCon JP 2025 후기

Jaeyeol Lee @kodingwarrior@hackers.pub

이 글은 PyCon JP 2025에 참가한 한국인 개발자의 생생한 후기를 담고 있습니다. 저자는 PyCon KR에 꾸준히 참여해왔지만, 해외 컨퍼런스는 처음이라 설렘과 기대를 안고 일본으로 향했습니다. 히로시마에서 열린 이번 행사에서 저자는 다양한 세션에 참여하고, Findy와 Python Asia Association에서 주최한 DrinkUp 파티, 그리고 PKSHA Technology의 파티에 참여하며 여러 개발자들과 교류했습니다. 특히 FastAPI 개발자인 tiangolo와의 만남, Neovim을 사용하는 데이터 엔지니어와의 공감대 형성, 그리고 Emacs 사용자에게서 느낀 위기감 등 재미있는 에피소드들이 인상적입니다. "Innovation is a side effect of solving problem"이라는 tiangolo의 어록은 깊은 인상을 남겼습니다. 이 글은 PyCon JP가 외국인을 위한 배려가 돋보이는 행사였으며, 다양한 주제의 세션과 네트워킹 기회가 많았음을 강조합니다. 다음 PyCon JP에 발표자로 참여하고 싶다는 의지를 밝히며, 한국 커뮤니티도 외국인이 즐길 수 있는 컨텐츠가 늘어나기를 바라는 마음을 전합니다.

Read more →
12

부산 내려가자마자 딩코 해야할 거 있어서 첫날 오전 공연들은 놓쳤지만 그래도 그 날 포함 총 3일 동안 정말로 재밌게 보냈다...울고 웃고 방방 뛰고 슬램 하고 목소리 터져라 노래 따라부르고 누군지도 모르는 사람들이랑 진흙밭에서 같이 춤추고 어깨동무하고 기차놀이하고..어른인 척 하나도 안 해도 되어서 너무 좋았음 내년에 갈 수 있으면 또 가야지!! 이제 다시 딩코의 세계로!!

나굿즈
2

예전에 우스개소리로 낮에는 프로그래머 저녁에는 락밴드 기타리스트로서의 삶을 살고 싶다고 했는데 정신 차리고 보니 진짜 IT쪽으로 취준하고 있고..오타쿠 밴드에서 곧 공연한다고 열심히 기타 연습하고 있고..둘 다 잘 돼면 정말 행복할 것 같다는 생각이 들었다

6

인생의 대부분을 락음악을 좋아했던 사람으로서 밴드 활동을 실제로 하고 또 밴드 음악을 좋아하는 사람들을 위한 서비스를 해보고 싶은데 뭐가 있을까? 그런 게 있으면 누가 좀 데려가줬으면 좋겠고 아니라면 혼자서 좀 생각해봐야할 듯...스포티파이같은 음원 스트리밍 서비스가 메인인 곳에서 일해보고 싶기도 하다..물론 뽑아주면! 부산락페에서 너무 재밌게 즐기는 와중에 생각나서 써봄.

4
2
0

대학원 다닐 때 주로 썼던 통계기법이 일반화/선형 혼합효과 모형(+베이지언)이었는데 데이터 분석쪽에서 쓰이는 가설검정 기법들은 딱 통계분석 책 피면 항상 나오는 t-test, ANOVA나 책 후반 챕터들에 나오는 Chi-squared test 같은 것들이 대부분인 것 같다. 역사가 깊고 보수적인 기법들이라서 그런 건가? 비슷하게 A/B testing도 처음에 볼 때 이게 뭐지 하다가 그냥 two-sample independent sample design[1] 갖고 검정 돌리는 거였다는 걸 깨닫고 나선 이름을 왜 이렇게 헷갈리게 지었을까 싶었음...여튼 실제 산업에서 쓰이는 데이터는 샘플 사이즈가 나 대학원 다닐 때 썼던 거에 비하면 엄청 커서 뭔가 복잡한 걸 쓸 것 같았는데, 저번에 파이콘에서 알게된 데이터 분석가분한테 얘기 들은 것도 그렇고 오히려 크니깐 그냥 안전빵(?)으로 t-test같이 많이들 알려져 있는 걸 쓰는 건가 싶다. 뭐...무슨 기법을 쓰든 결국엔 데이터를 얼마나 잘 모았느냐가 제일 중요한 거겠지만.


  1. 아마도 실제 현업에서는 또 구체적으로 어떻게 실험 디자인을 짜느냐에 따라 달라질 거라 뇌피셜을 세워봄 ↩︎

2
2
0

이번주 일본어 과외 받는 거 끝...이제서야 동사 존댓말/반말 + 부정/과거부정이랑 여기서 나오는 불규칙 변화들이 좀 머릿속에 들어오는 듯. 역시 언어학 전공했더라도 외국어 배우는 거랑은 그닥 크게 상관 없다니깐? 결국엔 달달달 외워서 자꾸 써봐야함...그래도 일본어 선생님이 보통 여기가 히라가나 다음에 겪는 통곡의 벽이라고 하셨는데 잘 하고 있다고 해주셔서 기분 좋았다.

1

너무 이른 시점에 일반화를 걱정하는 것은 위험할 수 있습니다. 자신이 코드를 작성하든 다른 사람의 코드를 이해하려 하든, 우리는 이 책에서 취한 접근 방식을 따를 것을 권장합니다. 즉, 일반적인 것부터 시작하지 말고 구체적인 예시부터 시작하세요. 그런 다음 그들이 어떤 측면을 공유하는지 관찰하세요. 학습자로서 이러한 순서는 더 쉬운 구체적인 예시를 토대로 더 어려운 추상적 개념을 이해할 기회를 더 많이 제공합니다. 저자로서 이러한 순서는 더 추상적인 발상이 타당성을 갖고 목적을 지닐 수 있도록 도와줍니다.

— 《Finding Success (and Failure) in Haskell》, 149쪽

6

러스트로 간단하게 별찍기 문제 풀었는데 파이썬이랑은 다르게 repeat()이란 함수란 게 있어서 신기했음...

# Python starrrrrrrs
for i in range(1, 4):
    print("*"*i)
// Rust starrrrrs
fn main() {
    for _i in 1..4 {
        println!("{}", "*".repeat(_i))
    }
}
1
4
1

구슬아이스크림 shared the below article:

2025 Q2/Q3 Review

Jaeyeol Lee @kodingwarrior@hackers.pub

이 글은 2025년 2분기 결산을 미루고 3분기에 몰아 작성한 개발자의 회고록입니다. 4월부터 9월까지 2~4주 단위로 굵직한 이벤트들이 연이어 발생하며 '업보 청산'의 시간을 보냈다고 합니다. 임금 미지급, 파이콘 발표 준비, Fedify 프로젝트 참여, UbuCon Korea 발표, PyCon KR 참여, Hackers' Public 주최, PyCon JP 참여 등 다사다난했던 3분기를 요약하고 있습니다. 특히 Fedify 프로젝트에 기여하며 NestJS 기반의 연합우주 소프트웨어 개발에 집중하고, Hackers' Public 밋업을 성공적으로 개최한 경험을 강조합니다. 현재는 수입이 거의 없는 상태이지만, 취업 준비와 외주를 병행하며 바쁘게 지내고 있습니다. Node.js 백엔드 엔지니어 또는 풀스택 엔지니어로서의 취업을 목표로 하고 있으며, 기술 면접 준비와 함께 OS 및 네트워크 관련 지식을 쌓고 있습니다. 마지막으로, 4분기에는 현재 진행 중인 프로젝트를 마무리하고 크리스마스 이전에 취업하는 것을 목표로 하고 있습니다.

Read more →
19
0

구슬아이스크림 shared the below article:

Optique 0.5.0: Enhanced error handling and message customization

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

Optique 0.5.0 is now available, bringing enhancements to error handling, help text generation, and overall developer experience while maintaining full backward compatibility. The update introduces better code organization by refactoring the large `@optique/core/parser` module into three focused modules: `@optique/core/primitives`, `@optique/core/modifiers`, and `@optique/core/constructs`. Error handling is improved with automatic conversion of default value callback errors into parser-level errors, and the new `WithDefaultError` class allows for structured error messages. Customization of default values in help text is now possible via an optional third parameter to `withDefault()`, enabling descriptive text instead of actual values. Additionally, the release provides comprehensive error message customization across all parser types and combinators, allowing context-specific feedback. These improvements aim to make Optique more user-friendly, especially for building CLI applications that require clear error messages and helpful documentation, making this release a significant step forward for developers using Optique.

Read more →
5
0
2

구슬아이스크림 shared the below article:

[잘라먹는 프로그래밍 언어론] 타입 체계는 명제 논리와 닮아있다 (커리-하워드 대응)

RanolP @ranolp@hackers.pub

이 글은 함수 타입, 합 타입, 곱 타입과 논리 연산의 대응 관계를 탐구하며, 특히 부정(negation)을 타입 시스템에서 어떻게 표현할 수 있는지에 대해 설명합니다. "P가 아니다"는 "P이면 거짓이다"와 동치라는 점을 이용하여, 타입 이론에서 값이 없음을 거짓으로 해석하고, 이를 통해 "정수를 0으로 나눌 수 없다"는 명제를 타입으로 표현하는 방법을 제시합니다. `div_by_zero :: Int -> ⊥`와 같은 표현을 통해 타입 체계와 명제 논리 간의 커리-하워드 대응을 보여주며, 타입 시스템이 논리적 추론과 어떻게 연결되는지에 대한 통찰력을 제공합니다.

Read more →
10
1

요전번에 산 책 '관계형 데이터베이스 실전 입문' 첫 챕터를 정리했다. 정리하는 김에 원래 대학원에서 썼던 학술용 홈피도 싹 다 갈아엎을 겸 해서 맘에 드는 테마 하나 포크해서 블로그도 다시 만들어서 첫 포스트로 써서 올림...글로 쓰다보니 뭔가 보충하면 좋을 것 같은 내용들이 보였는데, 특히나 관계형 모델에서 튜플(=행)은 하나의 집합이라서 그 원소가 사실 순서가 없어도 되는데 실제 SQL로 표현되는 테이블에서는 순서가 있어야한다는 지점이 흥미로워서 다른 DB 개론서들 보면서 그 내용들을 추가하다보니 결국엔 형식적으로 정의하는 부분까지 넣게 됐다. 써놓고 보니 배보다 배꼽이 더 커진 듯한 느낌이지만...뭐 어때, 재밌으면 됐지!

3

구슬아이스크림 shared the below article:

NestJS로 풀어보는 SOLID 원칙

Jaeyeol Lee @kodingwarrior@hackers.pub

이 글은 NestJS를 사용하면서 마주할 수 있는 소프트웨어 설계의 복잡성을 SOLID 원칙을 통해 해결하고자 한다. SOLID 원칙은 단일 책임 원칙(SRP), 개방-폐쇄 원칙(OCP), 리스코프 치환 원칙(LSP), 인터페이스 분리 원칙(ISP), 의존 역전 원칙(DIP)으로 구성되어 있으며, NestJS의 Controller, Service, Repository 구조를 통해 SRP를 실현하고, Interceptor를 통해 OCP를, 인터페이스를 통한 LSP, Guard, Pipe 등을 통해 ISP를, DI 컨테이너를 통해 DIP를 구현하는 방법을 설명한다. 각 원칙 위반 사례와 개선 사례를 비교하여 코드의 응집도, 유지보수성, 확장성, 유연성을 높이는 방법을 제시하며, 다이어그램을 통해 각 원칙이 적용된 코드 구조를 시각적으로 보여준다. 이 글을 통해 독자는 NestJS를 사용한 개발에서 SOLID 원칙을 적용하여 더 나은 소프트웨어 설계를 할 수 있을 것이다.

Read more →
4
2
0

오늘 밴드 합주하는데 우리가 대여한 연습실이 천장에서 물이 새고 있었다. 다행히 앰프라든가 그런 장비에 영향을 끼치는 건 아니었지만 어찌됐든 중간중간 관리직원분이 오셔서 고치셨는데 뭔가...할 일을 분명 다 하신 것 같은데 우리 봇치 노래 하는 거 들으시곤 일부러 없는 일 만드셔서 계시는 것 같았음. 관상(???)도 뭔가 오타쿠처럼 보이셨고...나만 그렇게 느낀 줄 알았는데 밴드 멤버들 모두가 다 비슷한 생각을 했다고 해서 좀 웃겼다 ㅋㅋ

3

최근 며칠간 WAH라는 이름의 WebAssembly 인터프리터를 만들고 있다. ~와! 샌즈!~

WAH의 특징이라면 C로 작성되어 있는데 헤더 하나로 구성되어 있다는 점과, 거의 대부분의 코드를 Gemini가 짰다는 것 정도일까? (Claude Code도 좀 사용했지만 코드 생성은 Gemini가 다 했다.) Gemini가 디버깅을 시키면 답답한 게 사실이라서 최대한 프롬프트에 정보를 많이 넣고 few-shot으로 생성하게 하는 걸 목표로 했는데 생각보다 잘 되었다. 예를 들어서 한 프롬프트는 다음과 같았다. 저 문장 하나 하나가 시행착오의 결과이다.

@wah.h 에 if~else~end 명령을 구현하고, 대응되는 test_*.c 파일들이 모두 성공하도록 (또는, 해당 테스트에서 잘못된 점이 있을 경우 그 원인을) 고쳐줘. 아직 loop 관련된 코드는 처리할 필요 없고 테스트 중에 그걸 테스트하는 게 있다면 주석 처리해(지우지는 마). 컴파일과 실행은 &&로 한 번에 하도록 해. 정확한 구현 방법은 이래야 해: if~else~end에서 마지막 end는 사라지고, if는 else 직후 명령으로 이동하는 conditional jump로 재활용하며, else는 unconditional jump로 바뀌어(즉 실행기 입장에서 br과 else의 동작은 똑같아야 해! else를 아예 없애고 br로 대체할지 말지는 알아서 정해). 그러니까, if A B C else D E F end G 같은 명령이 있다면 preparsing 이후에는 if <offset to D> A B B C else <offset to G> D E F G 형태가 되어야 한다는 뜻이야. WebAssembly 명세에 따르면 if 문에는 block type이 따르는데, 이 타입을 사용해서 validation을 진행하는 것도 정확히 구현해야 해(block type이 function type (T1..Tn)->(U1..Um)이면 현재 스택에 T1..Tn 타입이 들어 있고 end 이후에는 U1..Um 타입이 들어 있어야 하고, 일반 타입 T가 들어 있다면 ()->(T)와 동일하게 취급함). block type은 validation 이후 preparsing 과정에서 사라져서 런타임에는 반영되지 않도록 해.

솔직히 너무 많이 요구하는 거 아닌가, 안되면 validation 부분을 어떻게 뺄지 고민하고 있었는데 시도 세 번만에 800줄짜리 diff가 떡하니 나오고 일단 보기에는 틀린 부분이 없어서 놀랐다. 물론 삽질도 많이 했는데 가장 많이 한 삽질은 테스트를 작성할 때 수동으로 WebAssembly 바이너리를 짜면서 바이트 숫자를 잘못 세어서 오류가 나는 거랑, 분명 WebAssembly opcode를 사용해야 하는데 자기 마음대로 코드를 정해 버린다거나 하는... 그런 우스운 상황이었다.

우습기도 하고 놀랍기도 하지만 이 코드를 내가 직접 짜지 않는 이유는 귀찮아서...라기보다는 내가 이걸로 하고 싶은 일이 따로 있고 WebAssembly 인터프리터를 만드는 게 주 목표는 아니기 때문이다. (원래 하고 싶은 일은 나중에 언급할 듯.) WebAssembly 구현이라고 하면 기술적으로 복잡해 보이지만, 내 용도에서 유래하는 몇 가지 조건(대표적으로 결정론적인 동작)을 제약으로 걸면 기술적으로 복잡하다기보다는 그냥 노가다에 가까워지기 때문에 끌리지 않는 것도 있긴 하다. 이전의 Angel이 과연 얼마까지 바이브 코딩으로 할 수 있는지를 테스트하는 목표였다면, 이번에는 정말로 목표를 달성하는 수단으로 기능할지 실험해 볼 작정이다.

9
2
4

C++에서 UB는 하드웨어 수준에서는 UB가 아니라고 생각했던 얼마 전에 나어게 경종을 올렸던 글. "Pointers are complicated" 시리즈. 주로 Rust에 관한 글이지만 abstract machine, memory model의 개념은 C++에도 있으며 하드웨어와는 확연히 다르다. 특히 포인터가 얼마나 까다로운 개념인지, 컴파일러가 어떠한 가정하에서 최적화를 수행하는지 다시금 익혔다.

6

「Fedify Studio」(仮称)というウェブベースのActivityPubデバッグ・開発ツールを作ろうかと考えています。fedify inboxコマンドやActivityPub.Academyの強化版みたいなもので、アクティビティのテスト、アクターの検査、フェデレーションの問題調査などがちゃんとしたUIでできるイメージです。ActivityPub開発者の皆さんにとって需要ありそうでしょうか?

假稱(가칭) 「Fedify Studio」라는 웹 基盤(기반)의 ActivityPub 디버깅 및 開發(개발) 道具(도구)를 만들어 볼까 생각 ()입니다. fedify inbox 커맨드나 ActivityPub.Academy의 強化版(강화판) 같은 것으로, 액티비티 테스트, 액터 인스펙터, 聯合(연합) 이슈 디버거 ()을 제대로 된 UI로 提供(제공)하는 느낌인데요. ActivityPub 開發者(개발자) 분들께 需要(수요)가 좀 있으려나요?

4

사실 책 내용들을 내 식대로 글로 정리하면서 읽다보니 아직 초반부에 머물고 있긴 한데, 정리하다보니깐 뭔가 좀 설명이 부족한 게 보이는 것 같아서 (예: 정의가 느슨한다든가 어딘가 설명이 더 들어가야할 것 같은데 빠져있는 것 같다든가) DB 개론서들 몇 권이랑 해서 같이 보니깐 예전에 수업 들었을 땐 꽤나 중요하게 다루어졌다고 생각됐던 개념들은 언급이 잘 안됐다든가 (예: Key에 대한 설명들) 중요해보이는 가정이나 수리적 정의가 아예 스킵이 됐다든가 하는 게 보임...근데 또 한 편으론 저자 입장에선 최대한 독자들한테 부담을 안 줄려고 액기스만 뽑으면서 전공서적과 기술서적 사이의 밸런스를 맞추려 하다보니 이렇게 쓴 게 아닐까 하는 뇌피셜이 오가고 있다. 좋은 점은 저자가 DB가 구축될 때 사용되는 추상적/논리적 개념들이 실제 SQL 수준에선 어떻게 이루어지는지 종종 비교해준다는 거다. 예컨대 Relational Model에선 튜플(=행(row))은 속성(attribute)이랑 그 값이 서로 대응만 한다면 기존 집합의 원소들처럼 순서가 따로 없어도 되는데 실제 SQL에선 순서가 있다는 걸 비교해서 보여준다든가 등등..여튼 그렇다.

3

구슬아이스크림 shared the below article:

내가 LLM과 함께 코딩하는 방식

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

이 글은 저자가 LLM(Large Language Model)을 활용하여 코딩하는 방법에 대한 개인적인 경험과 팁을 공유합니다. LLM 코딩 에이전트 사용 시 맥락 제공의 중요성을 강조하며, Claude Code 모델을 선호하는 이유와 그 장단점을 설명합니다. 세부적인 지시를 위해 GitHub 이슈를 활용하고, 설계는 사람이, 구현은 LLM이 담당하는 역할 분담을 제안합니다. 또한, 프로젝트 지침을 담은 *AGENTS\.md* 파일의 중요성과 Context7을 활용한 문서 제공 방법을 소개합니다. 계획 모드를 통해 LLM이 스스로 피드백 루프를 돌도록 유도하고, 필요한 경우 손 코딩을 병행하여 코딩의 재미를 유지하는 전략을 제시합니다. 이 글은 LLM을 단순한 도구가 아닌 협력적인 동료로 활용하여 개발 효율성을 높이는 방법을 모색하는 개발자들에게 유용한 인사이트를 제공합니다.

Read more →
32
0
1

이제 자신이 보여주고 싶지 않은 추천사를 가리는 기능도 추가되었습니다. 메인 페이지에서 링크 타고가시면 사용 가능해요. 많은 이용 부탁드립니다.

https://referral.akaiaoon.dev/ 이 링크에서 사용 가능하고, 내가 받은 추천사는 https://referral.akaiaoon.dev/u/:username 으로 볼 수 있습니다. 아래 말코링님의 추천사 리스트를 참조해 주세요.

말코링님의 추천사

레퍼럴프로젝트의 새로운 기능 - 추천사 가리기
8
3
1
0
2

"두통과 함께하는 사람들"은 다음 주(22일 ~ 28일) 편두통 인식 개선 주간을 맞이해서 광화문에서 커피차 이벤트를 진행합니다! 주변에 많은 공유와 참여 부탁드려요.

  • 📆 언제? 2025년 9월 22일 (월요일) 오전 10시 ~ 오후 2시
  • 📍 어디서? 광화문 한국프레스센터 광장 [네이버 지도]
  • 📋 무엇을 하나요? 편두통 질환과 캠페인을 소개하며 다양한 기념품(안대와 귀마개 등)과 음료를 드립니다! 🎁🥤
  • 왜 하나요? 국제적으로 진행하는 캠페인의 일환으로 편두통에 대한 오해를 해소하고 편두통을 알리는걸 목표로 합니다.

오랫동안 열심히 준비하던 것 중 하나입니다. 부스 놀러와주시면 기쁠 것 같아요.

편두통, 오해말고 이해를! 당일 배포될 팜플렛의 표지입니다.
6
0
0

이제 자바 메인을 이렇게 써도 된다니 놀랍군요

void main() {  
    var name = IO.readln("What is your name? ");  
    IO.println("Hello, " + name);  
}  
5
5