<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Igor Kulman</title>
    <link>/</link>
    <description>Recent content on Igor Kulman</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 11 Apr 2026 11:49:00 +0000</lastBuildDate>
    
        <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>测试</title>
      <link>/test/</link>
      <pubDate>Sat, 11 Apr 2026 11:49:00 +0000</pubDate>
      <guid>/test/</guid>
      <description>&lt;p&gt;这是测试。&lt;/p&gt;
&lt;p&gt;看看怎么样？&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>稀奇古怪的中国经济</title>
      <link>/ce/</link>
      <pubDate>Sat, 11 Apr 2026 11:40:00 +0000</pubDate>
      <guid>/ce/</guid>
      <description>&lt;p&gt;(北京时间 2008 年 7 月 04 日 来稿) 正如俗话所说，“当中国打喷嚏时，世界其他地方就会患……” 且慢，这难道不是用来形容美国时常用的陈词滥调吗？或许就是，但对于全球经济增长来说，这些天来中国经济减速几乎同美国经济衰退一样重要。北京能够驾驭其飞速增长的经济实现软着陆吗？或者说，世界将遭受美国、欧洲和中国经济虚弱表现的三重打击吗？中国经济的全球化不仅仅使中国产品走进了世界各地的数十亿个家庭，还把世界的命运同中国的未来联系在了一起。中国的出口几乎占到了世界总出口的 9%，而中国的进口正在帮助其他的经济体维持繁荣。其中近 1 / 3 的进口来自附近的日本、韩国等。由于日本试图巩固其期待已久的经济复苏，韩国则担心其出口需求下降，因而，中国增长的急速下降可能是危险的。美国、德国以及中国其他的主要供应国也以担忧的心情注视着中国。如果急剧减速到来，它的程度会有多大？中国政府明显意识到了其经济正处于过热的危险之中，但并不情愿采取严厉的措施为经济增长刹车。人民币价值适当而稳健的增长可能有助于减少中国的贸易顺差。然而，利率不得不大幅提高。采取这种权宜之计的部分原因可能是政治上的考虑。由于中国的中央银行并没实现真正的独立，所以即使一些经济学家预测说通货膨胀率达到两位数字也不会导致更加严厉的信贷政策，尤其是在今年夏天的奥运会期间。但如果央行保持沉默，那么最近的事态可能会使形势更加恶化。过去两年来，中国一直努力使其经济年增长率从 11% 到 12% 下降到 8% 或 9%。即使这一变化也很难实现。如果通胀继续上升，增长不很快放缓，那么软着陆 —— 在不引起经济衰退的情况下使经济活动减速 —— 几乎是不可能的。到目前为止，中国的通胀部分是由国内需求推动的，部分是由全球商品价格上升推动的。不过，瑞士信贷的亚洲首席经济学家陶冬 (音) 说，工资压力可能在今年下半年把国内价格推到一个更高的水平。陶说他认为对于中国经济来说有两种假定。一是对中国出口产品需求的降低可能会引发中国经济轻微的减速，可以缓解价格压力，允许经济有一个喘息的机会；另一个假定是高通胀将导致政府采取积极行动，如提高利率和允许人民币快速升值。繁荣的中国房地产市场将遭受打击，国内消费也将受到影响，还会影响到对世界其他地方产品的需求。对全球经济来说，这将是一个重要的发展阶段。中国经济年增长率急速下滑，比如说从 12% 下降到 4% 将会使全球经济损失 2800 亿美元，几乎等同于美国经济增长率从 3% 下降到 1% 所带来的影响。即使美国经济规模仍是中国经济规模的四倍，中国经济的快速增长仍将是非常令人怀念的。（2008 年 7 月 4 日《新快报》）&lt;/p&gt;
&lt;p&gt;这是该报翻译自美国《国际先驱论坛报》的一篇文字。&lt;/p&gt;
&lt;p&gt;王未名长年累月地给我发来 BBC 和世界日报的相关报道。&lt;/p&gt;
&lt;p&gt;2007 年 01 月 02 日 格林尼治标准时间 14:11 北京时间 22:11 发表&lt;/p&gt;
&lt;p&gt;转寄朋友 打印文稿&lt;/p&gt;
&lt;p&gt;透视：“新中间阶层” 和 “有钱不敢花”&lt;/p&gt;
&lt;p&gt;透视中国&lt;/p&gt;
&lt;p&gt;江迅&lt;/p&gt;
&lt;p&gt;中国人收入高了却仍不敢消费&lt;/p&gt;
&lt;p&gt;年终，家家户户在掐指算计一年的收入。圣诞刚过，元旦来临，春节也不远了。这些日子应该是消费旺季，但不少中国百姓还是捂紧着钱袋子。&lt;/p&gt;
&lt;p&gt;中国经济全球领跑，百姓的收入不能说没有提高，但百姓还是喊穷。&lt;/p&gt;
&lt;p&gt;月收入 4700 多元人民币（下同）的北京大学新闻与传播学院副教授、中央电视台《实话实说》前主持人周忆军（阿忆），前不久在博客中也叫穷，引发网上争论热潮。&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>战马</title>
      <link>/fh/</link>
      <pubDate>Sat, 11 Apr 2026 11:34:00 +0100</pubDate>
      <guid>/fh/</guid>
      <description>&lt;iframe width=&#34;713&#34; height=&#34;401&#34; src=&#34;https://www.youtube.com/embed/asKQbk7AcJU&#34; title=&#34;崔伟立原唱《战马》完整版 歌曲旋律优美，句句入耳入心超好听&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;</description>
    </item>
    
    <item>
      <title>Why I still build apps for myself</title>
      <link>/why-i-still-build-ios-apps/</link>
      <pubDate>Wed, 08 Apr 2026 05:29:12 +0100</pubDate>
      <guid>/why-i-still-build-ios-apps/</guid>
      <description>&lt;p&gt;I wrote recently that &lt;a href=&#34;/i-used-to-like-software-development-but-not-anymore&#34;&gt;I do not enjoy software development the way I used to&lt;/a&gt;. That is still true. Most of the joy is gone. Too much of modern development feels like meetings, process, alignment, and maintenance of systems nobody really likes but everyone has agreed to keep alive.&lt;/p&gt;
&lt;p&gt;And yet over the last few months I built &lt;strong&gt;three iOS apps&lt;/strong&gt;: &lt;a href=&#34;/japanese-reading-problem&#34;&gt;Yomu&lt;/a&gt;, &lt;a href=&#34;/building-aira&#34;&gt;Aira&lt;/a&gt;, and &lt;a href=&#34;/building-ledgee&#34;&gt;Ledgee&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All three started the same way: &lt;strong&gt;I wanted them to exist for myself.&lt;/strong&gt; That is the whole explanation.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Why I built my own expense tracker</title>
      <link>/building-ledgee/</link>
      <pubDate>Wed, 25 Mar 2026 07:00:00 +0100</pubDate>
      <guid>/building-ledgee/</guid>
      <description>&lt;p&gt;For years I kept trying different expense tracking apps.&lt;/p&gt;
&lt;p&gt;At first they always seemed promising. I would install one, enter a few transactions, maybe explore the charts and reports. For a week or two I would even use it consistently.&lt;/p&gt;
&lt;p&gt;Then gradually I stopped opening the app.&lt;/p&gt;
&lt;p&gt;Not because it was bad. Many of them were actually great.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The problem was different: they expected a mindset I simply do not have.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Beating App Store review: lessons from shipping a minimal indie game</title>
      <link>/beating-app-store-review/</link>
      <pubDate>Wed, 11 Mar 2026 07:00:00 +0100</pubDate>
      <guid>/beating-app-store-review/</guid>
      <description>&lt;p&gt;Shipping a small, focused app on the App Store sounds straightforward: build the app, make sure it works, submit it, done.&lt;/p&gt;
&lt;p&gt;That was my assumption when I finished my first iOS game — a minimal, offline, pixel‑art push‑box puzzle inspired by classic warehouse logic games.&lt;/p&gt;
&lt;p&gt;What followed instead was a multi‑week back‑and‑forth with App Store Review, several rejections, and a slow realization that &lt;strong&gt;“simple” and “complete” are not the same thing in Apple’s eyes&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Building Aira: a calm anime tracker for myself</title>
      <link>/building-aira/</link>
      <pubDate>Wed, 25 Feb 2026 09:00:00 +0100</pubDate>
      <guid>/building-aira/</guid>
      <description>&lt;p&gt;For years, tracking anime was just part of my routine. I used &lt;a href=&#34;https://myanimelist.net/&#34;&gt;MyAnimeList&lt;/a&gt; because it worked well enough, and I never thought much about it. It was just something I did after every episode.&lt;/p&gt;
&lt;p&gt;But over time, the way I watched anime changed. The tools I used did not change with me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I started to feel a disconnect.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;from-backlog-to-seasons&#34;&gt;From backlog to seasons&lt;/h2&gt;
&lt;p&gt;When I first got into anime, there was always a backlog. There were classics to catch up on, highly rated shows I had not seen yet, and long lists of “someday.”&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Building Yomu: Safari, furigana, and why “plain text” often isn’t plain</title>
      <link>/building-yomu-safari-plain-text/</link>
      <pubDate>Wed, 11 Feb 2026 05:29:12 +0100</pubDate>
      <guid>/building-yomu-safari-plain-text/</guid>
      <description>&lt;p&gt;This is the third part of a short series about building &lt;a href=&#34;https://yomuapp.kulman.sk&#34;&gt;Yomu&lt;/a&gt;, an iOS app for reading Japanese text with adaptive furigana.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&#34;/building-yomu-furigana-tokenization-dictionary&#34;&gt;previous post&lt;/a&gt;, I described how the app tokenizes text, renders furigana, and works with an offline dictionary. This post focuses on a much lower-level problem: getting usable input text in the first place.&lt;/p&gt;
&lt;p&gt;It turned out to be one of the most frustrating parts of the project.&lt;/p&gt;
&lt;h2 id=&#34;copying-japanese-text-is-not-a-solved-problem&#34;&gt;Copying Japanese text is not a solved problem&lt;/h2&gt;
&lt;p&gt;At a glance, copying text should be trivial. You select it, paste it somewhere else, and move on.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Building Yomu: furigana, tokenization, and offline dictionaries on iOS</title>
      <link>/building-yomu-furigana-tokenization-dictionary/</link>
      <pubDate>Wed, 28 Jan 2026 05:29:12 +0100</pubDate>
      <guid>/building-yomu-furigana-tokenization-dictionary/</guid>
      <description>&lt;p&gt;This is the second part of a short series about building &lt;a href=&#34;https://yomuapp.kulman.sk&#34;&gt;Yomu&lt;/a&gt;, an iOS app for reading Japanese text with adaptive furigana. In the &lt;a href=&#34;/japanese-reading-problem&#34;&gt;first post&lt;/a&gt;, I described the reading problem that motivated the project. This one focuses on the technical core: how the app actually processes and renders Japanese text.&lt;/p&gt;
&lt;p&gt;I am intentionally skipping large parts of the app here — UI, persistence, OCR, monetization. They are either standard iOS work or not particularly interesting in the context of Japanese text processing. What follows are the parts that turned out to be non-trivial.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The Japanese reading problem that finally made me build my own app</title>
      <link>/japanese-reading-problem/</link>
      <pubDate>Wed, 14 Jan 2026 05:29:12 +0100</pubDate>
      <guid>/japanese-reading-problem/</guid>
      <description>&lt;p&gt;I’ve been learning Japanese for several years now. Not intensively, not full‑time, but consistently — textbooks, classes, homework, and a lot of reading that never quite felt as productive as it should.&lt;/p&gt;
&lt;p&gt;In December I took the &lt;strong&gt;JLPT N4&lt;/strong&gt;. While preparing for it, I spent a lot of time reading Japanese texts that were &lt;em&gt;supposed&lt;/em&gt; to be appropriate for my level. And that’s where I kept running into the same problem over and over again.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Still using Firefox — but not because of its vision</title>
      <link>/stuck-with-firefox/</link>
      <pubDate>Tue, 30 Dec 2025 07:00:00 +0100</pubDate>
      <guid>/stuck-with-firefox/</guid>
      <description>&lt;p&gt;For years I have been using Firefox as my primary browser. Not out of ideology or nostalgia, but because it did the job well enough and stayed out of the way. Lately, however, I have been increasingly uncomfortable with where Firefox is heading — and yet I am still using it.&lt;/p&gt;
&lt;p&gt;This post is about why.&lt;/p&gt;
&lt;h2 id=&#34;firefoxs-new-direction&#34;&gt;Firefox’s new direction&lt;/h2&gt;
&lt;p&gt;In December 2025, Mozilla made it clear that Firefox is entering an “AI browser” phase. New built‑in AI features, assistants, and AI‑driven workflows are now part of the official roadmap. Mozilla has been careful to stress that these features are optional and that users will be able to fully disable them, but the strategic direction is obvious: AI is no longer an experiment, it is a pillar.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Advent of Code 2025: Modern C&#43;&#43; and Zed</title>
      <link>/advent-of-code-cpp/</link>
      <pubDate>Tue, 23 Dec 2025 07:00:00 +0100</pubDate>
      <guid>/advent-of-code-cpp/</guid>
      <description>&lt;p&gt;At a client I currently work for, we started a small &lt;strong&gt;code club&lt;/strong&gt; a few months ago. The idea was simple: regularly try something outside our day-to-day stack.&lt;/p&gt;
&lt;p&gt;I began doing the challenges with &lt;strong&gt;Erlang&lt;/strong&gt;, then moved to &lt;strong&gt;Elixir&lt;/strong&gt;. For December, instead of making up a new monthly challenge, we decided to just do &lt;strong&gt;Advent of Code&lt;/strong&gt;. It fits well: small problems, no long-term commitment, and plenty of room to experiment.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Apple will not let me join the Developer Program — and will not say why</title>
      <link>/apple-developer-program/</link>
      <pubDate>Wed, 03 Dec 2025 05:29:12 +0100</pubDate>
      <guid>/apple-developer-program/</guid>
      <description>&lt;p&gt;I’ve been building apps for a long time. More than a decade ago I shipped several apps on the Windows Phone Store — and back then, publishing as an indie was empowering. Even though &lt;a href=&#34;/dealing-with-microsoft-in-wp-times&#34;&gt;dealing with Microsoft was often frustrating&lt;/a&gt;, at least I could publish my apps under my own name.&lt;/p&gt;
&lt;p&gt;Ever since switching fully to iOS professionally, I’ve been waiting for a good personal project idea. Something small but meaningful. Something I could polish and ship under my own name again.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Backing up my repositories to self-hosted Gitea</title>
      <link>/self-hosted-gitea-backup/</link>
      <pubDate>Wed, 05 Nov 2025 05:29:12 +0100</pubDate>
      <guid>/self-hosted-gitea-backup/</guid>
      <description>&lt;p&gt;I’ve been gradually moving more of my setup to self-hosted services. After &lt;a href=&#34;https://github.com/igorkulman/thinkserver&#34;&gt;turning my old ThinkPad into a home server&lt;/a&gt;, one of the next logical step was to back up all my Git repositories.&lt;/p&gt;
&lt;p&gt;Most of my projects live on &lt;a href=&#34;https://github.com/igorkulman/&#34;&gt;GitHub&lt;/a&gt;, and other places I use for contract work.&lt;/p&gt;
&lt;p&gt;For a while, I just ran an &lt;code&gt;rsync&lt;/code&gt; backup of my local clones. It worked, but it wasn’t a real solution — no metadata, no browsing, and no way to restore easily.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>I used to like software development... but not anymore</title>
      <link>/i-used-to-like-software-development-but-not-anymore/</link>
      <pubDate>Wed, 22 Oct 2025 05:29:12 +0100</pubDate>
      <guid>/i-used-to-like-software-development-but-not-anymore/</guid>
      <description>&lt;p&gt;I used to really like programming. Making apps, solving problems, seeing something I wrote come alive on a phone. I could spend hours coding and still want more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;That feeling is mostly gone now&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Somewhere between the meetings, the processes, and the layers of &amp;ldquo;modern development&amp;rdquo; I stopped enjoying it.&lt;/p&gt;
&lt;h2 id=&#34;the-early-days&#34;&gt;The early days&lt;/h2&gt;
&lt;p&gt;I started programming professionally in 2012, doing Windows Phone 7 apps. It was a strange but exciting time. Every company wanted an app. Not just iOS or Android — in Czechia, Windows Phone actually had a bigger share than iPhones for a while.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>