중동이라는 동네에는
이미 오래전부터 보이지 않는 “폭탄”을 가진 집이 있었다.
그 집은 이스라엘.
공식적으로 인정하지는 않지만,
누구나 알고 있었다.
“저 집은 이미 가지고 있다.”
대신 그 집은
철저한 규칙 속에서 움직였다.
쉽게 흔들리지 않았고,
필요 이상으로 드러내지도 않았고,
무엇보다 “살기 위해서만 쓴다”는 암묵적인 선을 지키고 있었다.
그래서 불안하지만
일종의 균형은 유지되고 있었다.
그런데 다른 한 집, 이란이
점점 비슷한 힘을 가지려 하기 시작했다.
문제는 단순히 “폭탄”이 아니었다.
그 집은
기존 질서 안에 완전히 들어온 적도 없고,
서로 감시하는 약속에도 깊이 참여하지 않았으며,
때로는 기존 질서를 부정하는 발언도 해왔다.
주변 집들은 이렇게 느꼈다.
“이미 있는 폭탄은 불편하지만 익숙한 위험이고,
지금 만들어지는 폭탄은 방향을 예측할 수 없는 위험이다.”
이때 가장 멀리 있지만
동네 질서를 관리해온 큰 집, 미국이 나섰다.
그 이유는 단순했다.
“여기서 하나 더 늘어나면
사우디도, 터키도, 다른 집들도 결국 따라 할 것이다.”
그 순간부터는
이 동네 전체가 폭탄을 들고 서 있는 상태가 된다.
그리고 그건
한 번의 싸움으로 끝나지 않는다.
그래서 선택은 거칠지만 명확했다.
“이미 있는 건 당장 없애기 어렵다.
하지만 더 늘어나는 건 지금 막아야 한다.”
그 결정은 비난을 받는다.
불공정해 보이기 때문이다.
하지만 그들이 두려워하는 건
지금의 불공정보다
“통제 불가능한 확산 이후의 세상”이다.
While building a TUI program in Python, a thought suddenly crossed my mind.
Programs, in the end, all run inside a loop.
while True:
Inside that single line, we take input, make decisions, produce output, and return to the beginning.
Until it ends. Or more often, until it’s designed not to.
I first learned while loops in a C programming class.
Back then, it felt obvious.
“Oh, it’s just a loop.”
Nothing more, nothing less.
But stepping away from frameworks—
no Spring Boot, no event loop abstractions,
no libraries doing the heavy lifting—
and running a TUI by hand, something became clear.
Ah…
Everything happens right here.
With Spring Boot, we write controllers,
add annotations,
and trust that requests will be handled somehow.
That’s not wrong.
But what actually happens underneath slowly fades from view.
At some point, we get used to
“how to make it work” instead of “why it works.”
A manual-driven developer.
Harsh words, maybe.
But also a product of an efficient era.
Yet when you write the loop yourself,
the truth frameworks hide reveals itself.
In the end, servers too,
programs too,
are just repeating the same work over and over.
Wake up.
Go to work.
Do the job.
Eat.
Come home.
Sleep.
Back to the start.
There is input.
There is logic.
There is output.
And then we return to the beginning of the loop.
When we’re young, we don’t notice we’re inside it.
We just think, “That’s life.”
But in midlife, a thought appears.
“Wait… am I still inside the same while loop?”
We believe we’re living freely,
but haven’t we just been patching local logic inside a prewritten structure?
A bug appears, so we fix it.
Performance drops, so we tune it.
Salary feels low, so we consider a job change.
All of these are improvements inside the loop.
But
we rarely think about changing the loop itself.
Because the loop is
too familiar,
too normal,
and has been running for too long.
Programs are like that.
Life is too.
When you build a simple TUI in Python and
handle everything yourself inside a while, it’s strangely fun.
It’s not fancy.
It’s not efficient.
But it’s honest.
“So this is everything.”
“I can finally see what I’m actually doing.”
Maybe life has a moment like that too.
When you strip away complex frameworks,
and put down flashy abstractions,
and quietly look at
which loop you’re really living in.
Living like a program
isn’t necessarily a bad thing.
Programs create meaning even through repetition.
A small input
can lead to a completely different output.
Knowing you’re inside a loop is different from spinning without awareness.
Now I know.
We were inside a while loop.
And the moment you realize that,
choices finally appear.
That choice
is finally ours.
PythonでTUIプログラムを作っていたとき、ふとこんなことを考えた。
プログラムって、結局は loop の中で動いている。
while True:
この一行の中で、入力して、判断して、出力して、また最初に戻る。
終わるまで。いや、多くの場合は終わらないように設計されている。
C言語の授業で最初に学んだ while 文。
当時は当たり前すぎて、深く考えなかった。
「繰り返し処理だな」
それ以上でも以下でもなかった。
でもフレームワークを離れて、
Spring Bootもなく、
仕組みを全部自分で書いて
TUIを動かしてみたとき、急に見えてきた。
ああ…
全部、ここで起きてるんだ。
Spring Bootでは、
コントローラを書いて、
アノテーションを付ければ、
リクエストは「いい感じに」処理される。
それは間違いじゃない。
でも 中で何が起きているかは、だんだん見えなくなる。
いつの間にか僕たちは
**「なぜ動くか」より「どう書けば動くか」**に慣れていく。
マニュアル型エンジニア。
きつい言い方かもしれない。
でも効率を求めた時代の必然でもある。
ただ、自分で while を回すと、
フレームワークが隠していた真実が見えてくる。
結局、サーバも、
プログラムも、
同じことを繰り返しているだけなんだ。
朝起きて、
仕事に行って、
働いて、
食べて、
家に帰って、
寝る。
また最初へ。
入力があって、
判断があって、
出力があって、
そして loop の先頭に戻る。
若い頃は気づかない。
「生きるって、こういうもんだ」と思っている。
でも中年になると、
ふと頭をよぎる。
「あれ… これ、ずっと同じ while の中じゃないか?」
人生を生きているつもりで、
実は決められた構造の中で、部分的な修正だけしてきたんじゃないか。
バグが出たら直す。
遅ければチューニングする。
給料が低ければ転職を考える。
全部、loop の中での改善だ。
でも
loop 自体を変える発想は、あまり持たない。
なぜなら loop は
あまりにも馴染み深く、
当たり前で、
長く回り続けているから。
プログラムも、
人生も、同じだ。
PythonでシンプルなTUIを作り、
while の中ですべてを自分で書くと、不思議と楽しい。
派手じゃない。
効率的でもない。
でも 正直だ。
「ああ、これだけなんだ。」
「自分が何をしているのか、全部見える。」
人生にも、そんな瞬間が来るのかもしれない。
複雑なフレームワークを外し、
派手な抽象化を置いて、
自分はいま、どの loop の中にいるのかを
静かに見つめる時間。
プログラムのように生きてきたことは、
必ずしも悪いことじゃない。
プログラムは
繰り返しの中でも意味を生み出す。
小さな入力が、
まったく違う結果を生むこともある。
loop の中にいると知って生きるのと、
気づかず回り続けるのは、全然違う。
今なら分かる。
僕たちは while の中にいた。
そしてそれに気づいた瞬間、
選択肢が生まれる。
その選択は、
もう自分たちのものだ。
尹錫悦(ユン・ソンニョル)前大統領の弾劾罷免に伴う韓国大統領選で革新系最大野党「共に民主党」候補の李在明(イ・ジェミョン)前代表(60)の当選確実が報じられたことを受け、李氏は3日深夜、自宅前に集まった数百人の支持者の前に姿を見せ、「国民の偉大な決定に敬意を表する」と感謝を述べた。
私のラーメンレシピの話 — こだわりの食感を生む冷水の秘密
実はラーメンの作り方はみんな似ているようで、私は少し違います。一番大事なのは水の量と麺のこりっとした食感です。最初から水をたくさん入れずに、適量の水で早く沸かします。そうすると麺がのびず、もちもちとした食感に仕上がります。
お湯がグツグツ沸いたらすぐに麺を入れます。スープの粉を入れるタイミングはあまり気にしません。私はその日によって、麺を入れた瞬間に入れることもあれば、少し麺が煮えた後に入れることもあります。スープを煮出すのではなく、味を麺にしみ込ませるだけなので、そこまで神経質にはしません。
でも、こだわりの食感のためには冷水が必須です!麺がある程度煮えた時に、熱いお湯が多すぎると麺がのびてしまうので、少し冷たい水を足して麺を冷まし、水の量も調整します。
屋台や軽食店スタイルのラーメンはまた違います。麺とスープを一緒に煮て、麺だけ先に器に移します。そして残ったスープに卵やソーセージ、ネギなどのトッピングを加え、少し煮てから別にスープを注ぎます。こうすると麺はよりこりっとして、トッピングのスープは深く濃い味わいになり、二つの味を楽しめます。
卵はだいたい最後に軽く溶いて入れます。完全に溶いたり、少しだけ混ぜて入れたりすると、柔らかい食感が出ます。
私の最終的な公式はこうです:
水を少なめに入れて早く沸かす →
麺を入れて煮始める →
スープは最初か途中で入れてもOK →
麺が煮えたら冷水で量を調整し、こりっと感を保つ →
最後にトッピングを入れて少し煮る →
軽食店スタイルなら麺を先に器に入れ、トッピング入りのスープを別に煮て注ぐ!
たくさん(5袋以上)ラーメンを作る時は、最初の水は少なめにしたほうがいいです。でないと「川の水」みたいな味になりますよね。料理の一番のポイントは味のバランス。スープ系の料理は最初は水少なめで味を濃くし、あとで水を足すのがコツです。実はずっと話したかったことなんです。