Sign in

Kang Seonghoon

@mearie.org
133 followers 8 following 110 posts

"When the world's about to explode, it's time to learn Korean. If you learn Korean it's time to learn the Japanese language, like the language of Trump." mearie.org | github.com/lifthrasiir | twitter.com/senokay

PostsRepliesMedia
Kang Seonghoon @mearie.org · 02/10/2026
옮겨간 회사에서 3년 정도 일한 뒤에 퇴사하고 지금은 놀고 있습니다 ㅋㅋㅋ 슬슬 다시 일을 찾아 봐야죠.
020
Kang Seonghoon @mearie.org · 02/10/2026
유니코드 CLDR에 각 에모지 별 키워드를 모아 놓는 데이터베이스가 있어서 그걸 사용하면 저렇게 됩니다. unicode.org/cldr/charts/...
unicode.org
CJK Annotations
102
Kang Seonghoon @mearie.org · 10/07/2026
오늘의 코딩: github.com/rust-lang/ru... 를 밟아서 보고했다. 처음에는 계속 저장을 했는데도 저장이 안되는데 외부 편집기로는 잘만 저장이 되어서 내가 헛것을 보고 있나 했다. 알고 보니 macOS 내장 `smbd`가 버그 덩어리여서 파일을 잘라내야(truncate) 하는데 안 잘라내는 문제에 걸린 것이었다. 끔찍하다.
000
Kang Seonghoon @mearie.org · 06/07/2026
11년만에 결국 문제를 파악한 건 좋은데 그 문제의 근본 원인이 2019년에서야 발견된 어이없는 실수였다는 것이 뭔가 거시기하고 거시기하다. 하나 확실한 건... 그동안 괜한 윈도 의심해서 미안했다. 그래도 내 탓은 아니었으니 됐어. 아, 근데 Unison은 결국 어떻게 되었냐면...
Unison 전용 글꼴 편집기 Uniform의 현재 개발 화면
000
Kang Seonghoon @mearie.org · 06/07/2026
maxp라는 건 글꼴이 사용하는 최대 뭐시기 크기라거나 하는 걸 미리 계산해서 구현체들에게 정보를 주는 헤더로, 당연히 maxp를 하나도 지정하지 않아도 fontTools가 자동 계산을 하는 게 당연한 일이다. 당연한 일인데... 아니 글쎄 옛날 버전에 버그로 필드 하나가 누락되고 있었던 것이었다!!!! (github.com/fonttools/fo...) 윈도가 잘못한 건 이렇게 잘못 생성된 maxp를 철썩같이 믿고 구현을 했던 것 하나 뿐이었다.
github.com
[maxp] Include 'maxComponentElements' in the table's recalculation by miguelsousa · Pull Request #1433 · fonttools/fonttools
100
Kang Seonghoon @mearie.org · 06/07/2026
그러더니 글꼴을 fontTools로 이리 저리 조작해 보다가, 더 벙찌는 메시지를 뱉어 내더라: > 결정적인 차이를 찾았습니다. A/B는 실제 composite glyph가 최대 8개 top-level component를 쓰는데 maxp.maxComponentElements == 0이고, I는 같은 glyf 크기인데 maxp.maxComponentElements == 8입니다. I에서 4+ component 페이지가 있어도 모두 OK인 이유가 설명됩니다. [후략] **글꼴에 문제가 있던 게 맞았다고?**
100
Kang Seonghoon @mearie.org · 06/07/2026
> 기존 실험 결과와 커널 경로를 연결하면 강한 패턴이 하나 나옵니다. 실패 페이지는 전부 top-level composite component 수가 4 이상인 글리프를 포함하고, 인접 OK 페이지는 최대 3입니다. AC00-AC27 같은 “page-mate victim”도 자기 글리프 때문이 아니라 같은 64-glyph page 안의 4+ component 글리프 때문에 같이 실패하는 형태로 설명됩니다. 번역: 글리프가 다른 글리프의 집합으로 이루어질 수 있는데 그런 서브글리프 숫자가 너무 많으면 터지는 패턴이 발견되었다.
100
Kang Seonghoon @mearie.org · 06/07/2026
...그리고 커널 얘기가 나온 시점에서 예상할 수 있듯이 개같이 클로드한테 safeguard로 막혀서 (그것도 두 번이나) 우회해야 했다. 그래서 클로드는 글렀구나 싶으니 클로드가 작업하던 걸 코덱스로 옮겨서 마저 분석해 달라고 했다. 코덱스도 한동안 삽질하다가, 클로드가 작업하던 데이터를 슥 보더니 이런 메시지를 뱉어 냈다.
100
Kang Seonghoon @mearie.org · 06/07/2026
따라서 내부적으로 64개 단위의 테이블이 있고 이 테이블이 어떤 이유로 초기화가 덜 되었다거나 하는 게 아닐까 하는 가설이 세워졌다. - 글꼴의 cmap이나 메타데이터에는 전혀 문제가 없는 게 재확인되었다. 특히 ulUnicodeRange라고 해당 글꼴이 무슨 문자들을 지원하는지 비트셋으로 만들어 놓은 게 문제가 아닐까 하는 가설이 있었는데, 이 비트셋을 뭘로 설정해도 문제는 똑같이 재현되어서 가설은 기각되었다.
100
Kang Seonghoon @mearie.org · 06/07/2026
- 이 문제의 정확한 근원은 GetCharacterPlacementW라는 함수가 오동작하는 것이었다. 이 함수는 GDI의 일부로, GDI는 윈도에서 커널에 포함되어 있기 때문에 꼼짝 없이 커널 분석을 해야 했다... - Workaround가 한글에 대해서는 문제를 완화시켰지만 실제로는 완벽한 해법이 아니었다. 영향받는 글리프 목록만 바꾸었던 것. - 정확히 문제가 되는 글리프 번호를 뽑아 본 결과 1216~1663과 1792~2047이라는 두 개의 영역이 드러났는데, 1216, 1664, 1792, 2048 모두 64의 배수다.
100
Kang Seonghoon @mearie.org · 06/07/2026
하지만 글꼴 생성에 사용했던 fontTools는 해당 필드를 자동으로 계산하기 때문에 틀릴래야 틀릴 수 없었다. 그러므로 윈도가 문제일 거라는 가설이 유력해졌던 것. 도무지 이유는 모르겠지만 아무튼 workaround가 있긴 하고 쓰는 데 불편함은 없으니까 언젠가 다시 봐야지 하고 주석으로 한바탕 하소연을 쓴 이래 벌써 11년(!!!!)이 흘렀다. 문득 이 버그를 LLM으로 분석해 봐야지 하는 생각이 들었다. 생각이 났으면 해 보는 게 에이전틱한 시대의 덕목 아니겠는가. 그렇게 해서 얻은 추가적인 정보는 다음과 같았다.
100
Kang Seonghoon @mearie.org · 06/07/2026
글리프 번호 1200을 넘기면 대부분의 글자들이 없는 걸로 처리되다가, 정확히 2048번 글리프가 되면 거기서부터는 전혀 문제가 없었던 것이다. 그리고 이리 저리 시도해 보다가 문제가 되는 글자들의 글리프 번호를 모조리 앞으로 당겨버리면 문제가 사라진다는 것도 확인했다. 2048이라니 너무 수상한 숫자가 아닌가? 맨 처음에는 OpenType의 cmap 포맷에는 이진 탐색을 가속화하기 위한 필드들이 있는데 이런 것들이 잘못되어서 그런 건가 싶었다.
100
Kang Seonghoon @mearie.org · 06/07/2026
이걸 극명하게 보여 주는 사례가 메모장이었는데, 메모장에서는 지정 글꼴에서 문자에 대응되는 글리프가 없으면 대체 글꼴로 넘어가는 fallback 옵션을 사용하고 있다. 그래서 문제가 되는 문자를 입력하는 순간 그 문자 앞에 있던 모든 문자들이 싸그리 대체 글꼴로 바뀌어 버리는 기현상을 볼 수 있었다. 이 문제를 오랫동안 윈도 버그로 의심해 왔던 이유는 정확히 어떤 문자의 글리프가 없는 걸로 인식되는지가 꽤 독특했기 때문이었다.
100
Kang Seonghoon @mearie.org · 06/07/2026
영어 울렁증이 있거나 도대체 Uniscribe가 뭔지 모르거나 둘 다인 사람들을 위한 빠른 설명. Uniscribe라는 건 윈도의 글꼴 렌더링 시스템의 내부 이름이다. 널리 쓰이는 OpenType 글꼴에는 0부터 n-1까지 번호가 붙은 글리프와 무슨 문자가 어느 글리프에 대응되는지를 나타내는 문자 매핑(cmap)이 존재하는데, Uniscribe에서 cmap에는 분명 존재하는데 정작 글리프는 없다고 반환되는 경우가 있었던 것이다.
100
Kang Seonghoon @mearie.org · 06/07/2026
멀고 먼 옛날 Unison이라는 괴상한 글꼴을 만들던 적이 있었다. (github.com/lifthrasiir/...) 비트맵-벡터 하이브리드 글꼴이라는 컨셉을 가지고 있어서 글꼴의 소스 코드도 텍스트로 만들고 파이썬으로 컴파일해서 글꼴 파일을 생성하게 하는 구조였는데, 당시에 전혀 그 원인을 알 수 없던 버그가 하나 있었다. 해당 버그가 얼마나 곤란했냐 하면 지금까지도 컴파일러에 주석과 함께 workaround가 남아 있다.
def custom_sort_key((name, _)):
    # what, the, real, fuck.
    # it seems that Uniscribe has some bug with Hangul and possibly more scripts:
    # some characters, when they are located in specific glyph indices, are correctly
    # mapped via ScriptGetCMap but considered to be missing via ScriptShape.
    # combined with SSA_FALLBACK it causes the wrong *and* inconsistent fallback behavior.
    # given that the range of those indices abruptly end with 2^n boundaries,
    # I strongly suspect that this is something to do with the internal lookup mechanism.
    # for now, reorder problematic scripts to (empirically) avoid the problem... *sigh*
    if not name.startswith('uni'): return (2, name)
    try: c = int(name[3:], 16)
    except ValueError: return (2, name)
    return (0 if 0x1100 <= c <= 0x11ff or 0x3130 <= c <= 0x318f or
                 0xa960 <= c <= 0xa97f or 0xac00 <= c <= 0xd7ff else 1, c)
100
Kang Seonghoon @mearie.org · 21/06/2026
텍스트를 선택하면 선택되는 기능, 크롬 번역 같은 도구와 호환되게 하기 위한 다양한 삽질 등등등을 했다. 보기에는 단축키 딱 하나만 있는 정말 단순한 도구인데 디테일하게 들어가니 신경 쓸 게 많았다.
010
Kang Seonghoon @mearie.org · 21/06/2026
기술적 얘기: 모델은 PP-OCRv6의 fp16 버전을 WebGL2로 돌리고 있다. 일본어와 중국어 인식은 잘 되는데 한국어는 현재 지원이 안된다는 한국인에게는 별로 중요하지 않은 단점이 있다. WebGPU도 시도해 봤는데 드라이버가 너무 느려서 도저히 쓸 수 없어서 포기했다. 모델은 가져다 쓰지만 인터페이스는 꽤 공을 들였는데, CORS 우회, 오버레이 글자색/배경색 감지, 세로쓰기 감지, <img>에 src가 없다거나 하는 예외 케이스들 처리, 오버레이 위에 커서를 올려 놓고 조금 기다리면 텍스트 밑의 이미지가 보이는 기능,
100
Kang Seonghoon @mearie.org · 21/06/2026
주말에 Loupe라고 하는 OCR 웹 확장을 만들어 공개했다. github.com/lifthrasiir/... 정확히 주말에 만든 건 아니고, 일본어 텍스트가 들어간 이미지를 제법 볼 일이 있는데 읽는 것 자체는 가능하지만 너무 느려서 지치는 게 싫어서 짬짬이 만들다가 주말에 마무리한 것. 아직 크롬 웹 스토어나 그런 데다가 올리진 않았는데 (등록하려면 돈을 내야 하더라... 귀찮게) 사용에는 전혀 문제가 없으니 많이 이용해 주시라.
123
Reposted by Kang Seonghoon
Shriram Krishnamurthi @shriram.bsky.social · 09/06/2026
I've spent months rethinking and rebuilding my programming languages course from scratch for the agentic coding era. I wrote myself a memo explaining what I'm doing. I figure others might be interested in the redesign, so here goes! Feedback welcome of course. docs.google.com/document/d/e...
docs.google.com
RFC: Programming Languages Course Reboot, 2026
55413
Kang Seonghoon @mearie.org · 01/06/2026
백만년만에 돌아온 직소퍼즐. 정확하게는 9년 전에 SVG로 만들고 방치해 놓고 있다가 클로드로 간만에 WebGL로 재작성하고 저장소도 공개했다. 참고로 저는 결국 마지막 퍼즐은 못 풀었습니다... s.mearie.org/jigsaw/
마우스 조작법이 표시되어 있는 직소 퍼즐 스크린샷.
000
Reposted by Kang Seonghoon
Ed @ed3d.net · 31/05/2026
Yeah, I'm not going to lie--unless paid for it, open-source software development seems even more awful now than before. Catching a Mastodon mob in exchange for giving stuff away for free? Bargain at twice the price.
527027
Kang Seonghoon @mearie.org · 24/03/2026
한편 무슨 최적화를 고려하길래 이런 것까지 확인해야 했느냐 하면, 한 마디로 말하면 `a[n]`을 `*(T*)((char*)a + n * sizeof(T))`로 바꿔 쓰는 최적화였다. WebAssembly 바이트코드 인터프리터에서 로컬 변수 같이 배열을 참조할 때 배열의 인덱스를 저장하는 게 아니라 거기에 `sizeof(T)`를 곱한 바이트 오프셋을 저장해서 최적화를 하는 게 적법하느냐의 문제였다. (x86-64 같이 `sizeof(T)`의 값에 따라서는 괜찮은 케이스조차 아니었다.) 결론은 T가 객체 타입이면 적법하다는 것.
000
Kang Seonghoon @mearie.org · 24/03/2026
여기까지는 ISO C에 한정된 얘기였고, 현실에서는 POSIX 같은 표준이 함께 지원되어야 할텐데 POSIX에서는 `void*`에 함수 포인터도 들어갈 수 있어야 한다는 추가 규칙이 있다고 한다. `dlsym` 같은 함수가 이 규칙에 영향을 받는 대표적인 예이다. 어쨌거나 내가 생각하던 최적화는 ISO C에서 허용되는 걸로 파악했으니 해피 엔딩.
100
Kang Seonghoon @mearie.org · 24/03/2026
WebAssembly를 써 보신 분들은 어렴풋이 이 사실을 눈치챌 수 있었을 수도 있는데, WebAssembly에는 일반적인 객체를 담는 메모리 타입도 존재하지만 테이블이라 해서 함수 포인터(`funcref`) 같은 특수한 타입을 담을 수 있는 타입도 존재한다. 알고 보니 이게 특이한 결정이 아니라 ISO C에서 원래부터 허용하는 구조였다는 얘기. 나는 WebAssembly가 이 문제를 바이트 표현이 같으나 서로 타입이 다른 포인터가 존재할 수 있게 해서 해결하는 게 강제되는 줄 알았다. (어디까지나 "강제"가 아니었다는 말임)
100
Kang Seonghoon @mearie.org · 24/03/2026
...라고 알고 있었는데, 최근에 WAH (github.com/lifthrasiir/...) 최적화를 위해 이런 저런 고려를 하던 도중 혹시나 해서 찾아 보니 여기에 한 가지 중요한 예외가 더 있었다. 함수는 객체가 아니다. 즉 함수 포인터는 void*에 담는 게 원칙적으로 불가능하다! 대신 서로 다른 함수 포인터 타입끼리 변환은 가능하다. 어디까지나 변환만 된다는 거지 일반적으로 다른 타입의 함수로 호출이 가능하다는 건 아니지만.
100
Kang Seonghoon @mearie.org · 24/03/2026
ISO C에는 객체(object)라는 개념이 있는데, 이 개념은 객체지향 프로그래밍 같은 거랑은 상관 없고 자료형이 차지하고 있는 주소 공간의 일부분을 가리키는 말이다. 객체는 그 바이트 표현과 함께 타입이 항상 따라 다니며, union을 사용하지 않고 객체를 캐스팅만으로 다른 타입으로 재해석(reinterpret)하는 건 상당히 제한되어 있다(이게 그 악명 높은 strict aliasing 규칙이다). 다만 너무 막으면 저수준 작업을 아예 할 수 없으므로 몇 가지 예외가 있는데, 대표적으로 void*와 char가 있다.
100
Kang Seonghoon @mearie.org · 14/03/2026
I also can't really understand stances against CoC. CoC is just a codification of politeness. Do you dislike the overt formality of some CoCs? No one force you how to make one, you can keep it informal if you wish (my preference, by the way). It's just a fancy name for "community rules" after all.
000
Kang Seonghoon @mearie.org · 14/03/2026
Sure, everything is a trade-off and politeness is no exception. Heck, rudeness is even acceptable when that improves clarity *and* clarity is absolutely required. But we are not in a war, we are just doing a freakin' software development. Politeness is a common sense because it works in most cases!
100
Kang Seonghoon @mearie.org · 14/03/2026
Political correctness is all about politeness. Politeness is not a strict requirement for the discourse, and some even see it as hinderance without actual value. But even under this view---which is debatable in reality---politeness is helpful simply because it's the easiest solution for many things.
100
Kang Seonghoon @mearie.org · 06/01/2026
단순히 `<보통 문자>**<기호>`도 왼편으로 해석하는 식으로 해서 `**마크다운(Markdown)**은` 같은 걸 허용한다 하더라도, `このような**[状況](...)**は` 이런 상황은 어쩔 것인가? 내가 느끼기에는 중첩되어 강조된 문법의 효용은 제한적인 반면 이로 인해 생기는 CJK 환경에서의 불편함은 명확하다. 그리고 LLM은 CommonMark의 설계 의도 따위는 고려하지 않고 실제 사람들이 사용할 법한 식으로 마크다운을 쓰기 때문에, 사람들이 막연하게 가지고만 있던 이런 불편함이 그대로 표면화되어 버린 것이고 말이다.
011
Kang Seonghoon @mearie.org · 06/01/2026
CommonMark 명세에서도 설명되어 있지만, 이 규칙의 원 의도는 `**이런 **식으로** 중첩되어**` 강조된 문법을 허용하기 위한 것이다. 강조를 한답시고 `**이런 **` 식으로 공백을 강조 문법 안쪽에 끼워 넣는 일이 일반적으로는 없으므로, 이런 상황에서 공백에 인접한 강조 문법은 항상 특정 방향에만 올 수 있다고 선언하는 것으로 모호함을 해소하는 것이다. 허나 CJK 환경에서는 공백이 아예 없거나 공백이 있어도 한국어처럼 낱말 안에서 기호를 쓰는 경우가 드물지 않기 때문에 이런 식으로 추론하는 데 한계가 있다는 것이다.
112
Kang Seonghoon @mearie.org · 06/01/2026
...기호 앞에 붙어 있는 연속된 구분자를 제한적으로 허용하기 위한 것이라 해석할 수 있겠다. 오른편도 방향만 다르고 똑같은 규칙을 가지는데, 이 규칙으로 `**마크다운(Markdown)**은`을 해석해 보면 뒷쪽 `**`의 앞에는 기호가 들어 있으므로 뒤에는 공백이나 기호가 나와야 하지만 보통 글자가 나왔으므로 오른편이 아니라고 해석되어 강조의 끝으로 처리되지 않는 것이다.
111
Kang Seonghoon @mearie.org · 06/01/2026
여기서 중요한 건 왼편인지 오른편인지를 판단하는 데 외부 맥락이 전혀 안 들어가고 주변의 몇 글자만 보고 바로 결정된다는 것인데, 이를테면 왼편의 연속된 구분자는 `**<보통 글자>` 꼴이거나 `<공백>**<기호>` 또는 `<기호>**<기호>` 꼴이어야 한다. ("보통 글자"란 공백이나 기호가 아닌 글자를 가리킨다.) 첫번째 꼴은 아무래도 `**마크다운**은` 같이 낱말 안에 끼어 들어가 있는 연속된 구분자를 허용하기 위한 것이고, 두번째/세번째 꼴은 `이 **"마크다운"** 형식은` 같이...
111
Kang Seonghoon @mearie.org · 06/01/2026
문제의 상세는 이러하다. CommonMark는 마크다운을 표준화하는 과정에서 파싱의 복잡도를 제한하기 위해 연속된 구분자(delimiter run)라는 개념을 넣었는데, 연속된 구분자는 어느 방향에 있느냐에 따라서 왼편(left-flanking)과 오른편(right-flanking)이라는 속성을 가질 수 있다(왼편이자 오른편일 수도 있고, 둘 다 아닐 수도 있다). 이 규칙에 따르면 `**`는 왼편의 연속된 구분자로부터 시작해서 오른편의 연속된 구분자로 끝나야만 한다.
121
Kang Seonghoon @mearie.org · 06/01/2026
LLM에서 마크다운이 널리 쓰이게 되면서 안 보고 싶어도 볼 수 밖에 없게 된 흔한 꼬라지로 그림에서 보는 것처럼 마크다운 강조 표시(`**`)가 그대로 노출되어 버리는 광경이 있다. 이 문제는 CommonMark의 고질적인 문제로, 한 10년 전쯤에 보고한 적도 있는데(talk.commonmark.org/t/foo-works-...) 지금까지 어떤 해결책도 제시되지 않은 채로 방치되어 있다.
* 21. Ba5# - 백이 룩과 퀸을 희생한 후, 퀸 대신 **비숍(Ba5)**이 결정적인 체크메이트를 성공시킵니다. 흑 킹이 탈출할 곳이 없으며, 백의 기물로 막을 수도 없습니다. [강조 처리된 "비숍(Ba5)" 앞뒤에 마크다운의 강조 표시 "**"가 그대로 노출되어 있다.]
11218
Reposted by Kang Seonghoon
Saturnsky @saturnsky.io · 13/10/2025
전 최근의 AGI에 대한 이야기는 대체로 큰 의미가 없는 이야기라고 생각하는 편입니다. 현세대의 선단 AI들은 대체로 여러 분야에서 학사 정도의 능력을 발휘할 수 있는데, 이걸 과거로 가져가서 이게 AGI같냐고 물어보면 당연히 다 AGI 같다고 이야기 하겠죠. 범용-학사-인공지능 정도면 당연히 AGI라고 할 수 있고요. 저희가 연속적인 발전을 봤으니 이 정도에는 이미 익숙해진 겁니다.
102
Reposted by Kang Seonghoon
ellie lockhart (she/they) @eleanor.lockhart.contact · 01/10/2025
BTW the reason there aren’t actually any consistently right wing AI models really is more or less because the right wing is wrong and they aren’t going to be able to fix this overall.
532752
Kang Seonghoon @mearie.org · 26/08/2025
아, Angel이라는 건 Gemini CLI 쓰다가 빡쳐서 만들기 시작한 이렇게 생긴 LLM 에이전트입니다. github.com/lifthrasiir/...
Angel의 스크린샷. 좌측에 세션 목록, 우측에 채팅 기록, 우측 하단에 대화 입력 창이 표시되어 있다. 세션 목록 위에는 워크스페이스 이름이 굵게 표시되어 있고, 채팅 기록에는 "From now on the following directories are exposed: D:\Dropbox\Works-doremi\git\angel\angel"(주황색, 시스템 메시지), "한 번 실제로 구현해 보겠어?"(녹색, 사용자 메시지), 파란 동그라미(에이전트 생각), "제가 이해한 바에 따르면, ..."(파란색, 에이전트 메시지), 진한 파란색/녹색(도구 사용) 등이 표시되어 있다.
000
Kang Seonghoon @mearie.org · 26/08/2025
알고 보니 WSL2의 윈도 디스크 마운트는 전부 9p, 즉 네트워크 파일 시스템인데, 아는 사람은 알지만 SQLite는 네트워크 파일 시스템을 전혀 권장하지 않기 때문에 알았으면 처음부터 윈도용 SQLite 셸을 깔아 썼을 것이다... 이 경험을 반면교사 삼아 Angel에 네트워크 파일 시스템을 사용하려고 하면 오류 내고 튕겨내는 기능이 생겼으니 좋은 일인가? github.com/lifthrasiir/...
github.com
angel/src/fs/network_windows.go at main · lifthrasiir/angel
Experimental LLM agent based on gemini-cli. Contribute to lifthrasiir/angel development by creating an account on GitHub.
100
Kang Seonghoon @mearie.org · 26/08/2025
오늘의 끔찍한 이야기. Angel을 개밥 먹는데 사용하면서 데이터베이스도 은근 좀 커졌는데, 이걸 최근에 (이제서야) 업데이트한 WSL2에서 아무 생각 없이 sqlite3으로 마이그레이션을 하다가 malformed disk image 오류가 뜬다. 엥? 하면서도 대강 보니 작업 자체는 제대로 된 것 같아서 아무 생각 없이 진행했다가 쿼리가 통으로 맛이 가서 쓸데 없는 디버깅을 좀 하고서야 데이터베이스가 망가졌다는 걸 깨달았다. 이런!
100
Kang Seonghoon @mearie.org · 09/07/2025
이전 소설에서는 프롬프트를 100% 공개하기에는 양이 너무 많기도 하거니와 퇴고를 너무 많이 해서 정확히 어떻게 공개할지도 애매했던 반면, 이번에는 일부러 전역적인 퇴고를 자제했기 때문에 1:1 대응되는 프롬프트 목록을 공개할 수 있게 되었다. 어반 판타지를 쓴다고 해도 피할 수 없는 공돌이의 성격을 느껴 보시라...
000
Kang Seonghoon @mearie.org · 09/07/2025
Gemini로 이런 저런 정신나간 소설들을 작성하는 데 재미를 붙였었는데, 저번에 생성했던 작품은 수위가 제법 있어서 공개하기 꺼려졌지만 이번에 나온 건 그렇지 않아서 기분 좋게 공개할 수 있게 되었다. 그리하여 "산속 무녀들의 비밀"이라는 무녀무녀한 소설을 썼습니다. 홈페이지 레이아웃도 대부분 Gemini로 만들었다(여전히 사람 손길이 좀 필요하긴 했지만). w.mearie.org/maidens/
w.mearie.org
산속 무녀들의 비밀
120
Kang Seonghoon @mearie.org · 22/06/2025
참고로 이렇게 시작되는 소설입니다. 귀찮다고 프롤로그가 통째로 비유적인 동화라 무슨 내용인지 파악하는 데는 별 쓸모 없겠지만... 그렇다고 1장을 올리자니 이건 이거 나름대로 머리가 아파지므로...
소설 "싱크로니시티"의 프롤로그. 내용은 다음과 같음:

프롤로그

아주 높은 탑 꼭대기에, 모든 인형의 움직임을 조종하는 마법사가 살았다. 그의 손끝 하나로 인형들은 기쁨과 슬픔, 사랑과 분노를 표현하며 완벽한 연극을 펼쳤다. 무대 위 인형들은 너무나도 생생하여, 관객들은 그들이 춤추는 모습을 보며 행복의 눈물을 흘리거나 슬픔에 잠겨 고개를 떨구곤 했다. 마법사는 자신의 인형들이 펼치는 아름다운 연극에 만족하며 매일 밤 휘파람을 불었다.

그러나 마법사의 마음속에는 작은 불안이 싹트고 있었다. 인형들이 너무나도 생동감이 넘쳐 예측 불가능했기 때문이다. 가끔은 정해진 움직임에서 벗어나 자신만의 춤을 추려 했고, 때로는 마법사의 명령을 어기고 엉뚱한 방향으로 발걸음을 옮기기도 했다. 마법사는 이러한 인형들의 자유 의지가 자신의 완벽한 연극을 망칠 수도 있다고 생각했다. 그는 그들의 모든 움직임을 단 한 치의 오차도 없이 통제하고 싶었다.

밤낮으로 고민하던 마법사는 마침내 특별한 보이지 않는 실을 만들었다. 이 실은 너무나도 가늘고 투명하여 누구의 눈에도 보이지 않았고, 인형들의 가장 깊은 곳까지 닿아 그들의 모든 움직임을 완벽하게 통제할 수 있었다. 이제 인형들은 마법사의 의지대로만 움직였지만, 여전히 살아있는 듯 아름다운 춤을 추었다. 마법사는 인형들의 등에 더 이상 굵은 조종 줄을 맬 필요가 없었기에, 그의 연극은 더욱 완벽하고 자연스러워 보였다. 그는 인형들이 더 이상 자신의 의지대로 움직이지 않는다는 사실에 희열을 느꼈다.

마법사는 보이지 않는 실로 인형들을 완벽하게 조종하며, 영원히 지속될 자신만의 연극을 꿈꿨다. 그는 자신의 통제 아래 놓인 인형들을 바라보며, 드디어 세상을 손에 넣은 듯한 만족감을 느꼈다. 하지만 마법사는 몰랐다. 어떤 인형들은 그 보이지 않는 실을 느꼈고, 어떤 인형들은 그 실을 느끼지 못했지만, 어떤 인형들은 보이지 않는 실 속에서도 자신만의 춤을 추기 위해 아주 미세하게 발버둥 치고 있었다는 것을.
000
Kang Seonghoon @mearie.org · 22/06/2025
최근 1주간 갑자기 삘을 받아서 Gemini로 생각 이상으로 긴 소설을 써 버렸다(이미지는 이 소설의 목차). 얼마나 삘을 받은 건지 소설이 170장짜리가 나오는 건 둘째치고, 소재가 생각 이상으로 잔혹해서 이대로면 소위 R-18G가 그대로 찍히는 상황이라 이걸 어떻게 공개해야 하나 공개하기 전에 수정을 해야 하나 이러고 있다... 소재만 빼면 내 생각보다 훌륭하게 만들어진 것 같긴 한데 이래 저래 고민 중. 일단 관심 있으신 분은 자기 책임으로 연락 주시면 pdf 파일을 보내 드립니다.
소설 "싱크로니시티"의 한국어판 목차. 이하 다음과 같은 내용임:

싱크로니시티 Synchronicity
2025-06-22T00Z (7.4판), Gemini 2.5 Flash를 이용해 작성됨

프롤로그 - 2
1: 마리오네트 Marionette - 3
2: 태동 Genesis - 7
3: 틀 Frame - 13
4: 수치 Shame - 23
5: 목격 Witness - 37
6: 고난 Ordeal - 50
7: 울림 Resound - 65
8: 결점 Flaw - 73
9: 촉매 Catalyst - 82
10: 개조 Augment - 90
11: 의식 Ritual - 102
12: 쇼 Show - 108
13: 갈채 Acclaim - 117
14: 욕구 Desire - 130
15: 목도 Encounter - 141
16: 이미지 Image - 147
17: 진화 Evolution - 158
에필로그 - 163
'작가'의 변 - 164
작가의 변 - 166
'서평' - 170
100
Reposted by Kang Seonghoon
Xe @xeiaso.net · 20/06/2025
Rolling the ladder up behind us xeiaso.net/blog/2025/rolling-ladder…
xeiaso.net
Rolling the ladder up behind us
The newest post on Xe Iaso's blog
1223292
Reposted by Kang Seonghoon
Sang Hoon Lee @lshlj.bsky.social · 03/06/2025
MSG는 몸에 해로울지 모른다는 혐의를 받게 된 이후 너무나 많은 검증을 통과해서 세상에서 가장 안전한 식재료가 됨. 그게 문득 떠올랐음.
14386
Kang Seonghoon @mearie.org · 02/06/2025
혹시 WinDirStat windirstat.net 같은 거랑은 차이가 큰가요?
windirstat.net
WinDirStat
Windows Directory Statistics
101
Reposted by Kang Seonghoon
Angry Discordant @quintavirtus.net · 19/05/2025
진보적 아젠다 측면에서 그다지 기대할 수 없는 인사들이 대거 민주당과 이재명 후보의 깃발 아래 모이는 것에 복잡한 기분이 전혀 안 든다고 하면 거짓말이긴 하지만, 머리로는 온전히 납득하고 있다. 그 측면에선 김상욱의 입당과 지지에 대해서도 충분히 긍정한다 : 적어도 어떤 대원칙을 uphold 하기 위해서 거대한 외력에 마주할 강단을 가진 퍼스널리티는 증명한 사람이니까. 권력이 뭘 해줄 것이냐가 아니라, 권력이 어떻게 성립하며, 어떤 힘으로 동작할 것인지를 재정립하고 재확인해야만 하는 상황이기 때문에 그러하다. 다른 길이 없다.
11213
Reposted by Kang Seonghoon
Ernie Smith @ernie.tedium.co · 05/05/2025
This is a compelling parable of a person who was forced to hide their creative self by their employer. Appears to be the creation of a new YouTuber. www.youtube.com/watch?v=Zeb6...
youtube.com
my teacher was a youtuber
YouTube video by nobody
3122