<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
    <title></title>
    <link rel="self" type="application/atom+xml" href="https://blog.ljc.me/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.ljc.me"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-10-26T00:00:00+00:00</updated>
    <id>https://blog.ljc.me/atom.xml</id>
    <entry xml:lang="zh">
        <title>Hello World：博客上线了</title>
        <published>2026-10-26T00:00:00+00:00</published>
        <updated>2026-10-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            LJC
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.ljc.me/blog/hello-world/"/>
        <id>https://blog.ljc.me/blog/hello-world/</id>
        
        <content type="html" xml:base="https://blog.ljc.me/blog/hello-world/">&lt;h2 id=&quot;ni-hao-shi-jie&quot;&gt;你好，世界&lt;/h2&gt;
&lt;p&gt;这是本博客的第一篇文章。从今天起，这台 2 核 2GB 内存的小 VPS 开始承载我的文字。&lt;/p&gt;
&lt;h2 id=&quot;wei-shen-me-xuan-jing-tai-bo-ke&quot;&gt;为什么选静态博客&lt;/h2&gt;
&lt;p&gt;对于一个纯粹&quot;写点东西&quot;的个人站点，静态博客几乎是无脑之选：&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;方案&lt;/th&gt;&lt;th&gt;运行时内存&lt;/th&gt;&lt;th&gt;维护成本&lt;/th&gt;&lt;th&gt;安全性&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;WordPress&lt;/td&gt;&lt;td&gt;~400MB+&lt;/td&gt;&lt;td&gt;需要升级 PHP / 数据库&lt;/td&gt;&lt;td&gt;插件越多风险越大&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Zola（静态）&lt;/td&gt;&lt;td&gt;0（只有 nginx ~10MB）&lt;/td&gt;&lt;td&gt;几乎为零&lt;/td&gt;&lt;td&gt;无数据库、无动态执行&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;最终选了 &lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org&quot;&gt;Zola&lt;/a&gt;：Rust 编写、单个二进制文件、构建一个博客只需要不到一秒。主题用了 &lt;a rel=&quot;external&quot; href=&quot;https://github.com/thomasweitzel/zolarwind&quot;&gt;Zolarwind&lt;/a&gt;，Tailwind 样式，自带 KaTeX 数学公式和 Mermaid 图表支持，且默认零第三方请求——没有追踪，没有 cookie 横幅。&lt;/p&gt;
&lt;h2 id=&quot;gei-xiao-ji-qi-zuo-de-you-hua&quot;&gt;给小机器做的优化&lt;/h2&gt;
&lt;p&gt;安装软件之前，先给这台 2GB 内存的小机器做了一轮调优：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;zram&lt;/strong&gt;：1GB zstd 压缩内存交换，优先级高于磁盘 swap，内存吃紧时快得多&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内核参数&lt;/strong&gt;：swappiness=10、TCP 缓冲调大、开启 BBR 拥塞控制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;journald&lt;/strong&gt; 日志限制在 100MB，避免慢慢吃掉磁盘&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件描述符&lt;/strong&gt;上限提高到 102400&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;fa-bu-liu-cheng&quot;&gt;发布流程&lt;/h2&gt;
&lt;p&gt;这个博客最有趣的地方：文章由 AI agent 直接在服务器上写成并发布。我只需要说一句话，剩下的交给 agent：&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;mermaid&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;flowchart&lt;/span&gt;&lt;span class=&quot;z-l-7 z-d-18&quot;&gt; LR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8&quot;&gt;    A&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-8&quot;&gt;我&lt;/span&gt;&lt;span&gt;：&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-8&quot;&gt;写一篇关于 X 的文章&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt; --&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-8&quot;&gt; B&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-8&quot;&gt;Agent 撰写 Markdown&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8&quot;&gt;    B &lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-8&quot;&gt; C&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-8&quot;&gt;zola build 不到一秒&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8&quot;&gt;    C &lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-8&quot;&gt; D&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-8&quot;&gt;nginx 静态发布上线&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-17&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;源码用 git 管理，每一次修改都有记录，写坏了随时回滚。&lt;/p&gt;
&lt;h2 id=&quot;jie-xia-lai&quot;&gt;接下来&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;折腾一下主题的评论功能（Artalk？）&lt;/li&gt;
&lt;li&gt;把「关于」页面写好&lt;/li&gt;
&lt;li&gt;开始正经写技术笔记&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你也想搭一个这样的博客，欢迎交流。&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Search</title>
        <published>2026-01-14T00:00:00+00:00</published>
        <updated>2026-01-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            Thomas Weitzel
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.ljc.me/pages/search/"/>
        <id>https://blog.ljc.me/pages/search/</id>
        
        <content type="html" xml:base="https://blog.ljc.me/pages/search/"></content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Attributions</title>
        <published>2021-06-04T00:00:00+00:00</published>
        <updated>2021-06-04T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.ljc.me/pages/attributions/"/>
        <id>https://blog.ljc.me/pages/attributions/</id>
        
        <content type="html" xml:base="https://blog.ljc.me/pages/attributions/">&lt;h2 id=&quot;content-management-system&quot;&gt;Content management system&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org/&quot;&gt;Zola&lt;/a&gt; is my choice for managing content and creating a static website from it.
It is your one-stop static site engine.&lt;/p&gt;
&lt;h2 id=&quot;cascading-style-sheets&quot;&gt;Cascading style sheets&lt;/h2&gt;
&lt;p&gt;For styling, I use the &lt;a rel=&quot;external&quot; href=&quot;https://tailwindcss.com&quot;&gt;Tailwind CSS&lt;/a&gt; framework by Adam Wathan.&lt;/p&gt;
&lt;h2 id=&quot;artwork&quot;&gt;Artwork&lt;/h2&gt;
&lt;p&gt;I use free artwork on this site:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Free icons (MIT License) from
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/refactoringui/heroicons&quot;&gt;Heroicons&lt;/a&gt; by Refactoring UI Inc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Free images under the &lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/license&quot;&gt;Unsplash License&lt;/a&gt; from
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@zgc1993&quot;&gt;冬城&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@cuatrobel&quot;&gt;Abel Pérez&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@alexander_ant&quot;&gt;Alexander Ant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@sharonmccutcheon&quot;&gt;Alexander Grey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Andrew Buchanan&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@drwmrk&quot;&gt;Andrew Stutesman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@brett_jordan&quot;&gt;Brett Jordan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@woodpecker65&quot;&gt;Christian Stahl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@clintadair&quot;&gt;Clint Adair&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@danielcgold&quot;&gt;Dan Gold&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@davelowephoto&quot;&gt;Dave Lowe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@davidclode&quot;&gt;David Clode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@hasanalmasi&quot;&gt;Hasan Almasi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@jasonrosewell&quot;&gt;Jason Rosewell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@jaysung&quot;&gt;Jehyun Sung&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@kathhh&quot;&gt;Katherine Fleitas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@lionel28&quot;&gt;Lionel Hesry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@mmmarq&quot;&gt;Marcelo Marques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Marian Kroell&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@kerber&quot;&gt;Marko Blažević&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@markusspiske&quot;&gt;Markus Spiske&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@markuswinkler&quot;&gt;Markus Winkler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@max_williams&quot;&gt;Max Williams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mohammad Ali Berenji&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@nhulz&quot;&gt;Nathan Hulsey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@jannerboy62&quot;&gt;Nick Fewings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@olav_tvedt&quot;&gt;Olav Tvedt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Omar Flores&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@pawel_czerwinski&quot;&gt;Pawel Czerwinski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@theshubhamdhage&quot;&gt;Shubham Dhage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sophie Vinetlouis&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@steve_j&quot;&gt;Steve Johnson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@srz&quot;&gt;Sydney Rae&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@timmarshall&quot;&gt;Tim Marshall&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@timmossholder&quot;&gt;Tim Mossholder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@karton55&quot;&gt;Vitalik Vynarchyk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://unsplash.com/@vivaantrivedii&quot;&gt;Vivaan Trivedii&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some Unsplash profiles are no longer available.&lt;/p&gt;
&lt;h2 id=&quot;libraries-and-assets&quot;&gt;Libraries and assets&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://katex.org/&quot;&gt;KaTeX&lt;/a&gt; (MIT License) for math rendering.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://mermaid.js.org/&quot;&gt;Mermaid&lt;/a&gt; (MIT License) for diagrams.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://howlerjs.com/&quot;&gt;Howler.js&lt;/a&gt; (MIT License) for the custom audio player.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://lucaong.github.io/minisearch/&quot;&gt;MiniSearch&lt;/a&gt; (MIT License) for client-side search.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://artalk.js.org/&quot;&gt;Artalk&lt;/a&gt; (MIT License) for optional comments.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/getzola/giallo&quot;&gt;Giallo&lt;/a&gt; (EUPL-1.2 License) for syntax highlighting.&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Terms</title>
        <published>2020-01-08T00:00:00+00:00</published>
        <updated>2020-01-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            Thomas Weitzel
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.ljc.me/pages/terms/"/>
        <id>https://blog.ljc.me/pages/terms/</id>
        
        <content type="html" xml:base="https://blog.ljc.me/pages/terms/">&lt;p&gt;&lt;em&gt;Last updated: February 9, 2026&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;general-character-of-the-website&quot;&gt;General character of the website&lt;/h2&gt;
&lt;p&gt;This website is a &lt;strong&gt;private, non-commercial blog&lt;/strong&gt; with mostly informational content. It can be used &lt;strong&gt;without registration&lt;/strong&gt;
and &lt;strong&gt;without providing personal data&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The following notes are for transparency and clarity. They are &lt;strong&gt;not general terms and conditions&lt;/strong&gt; and &lt;strong&gt;not a contract&lt;/strong&gt;
in a legal sense.&lt;/p&gt;
&lt;h2 id=&quot;content-and-opinions&quot;&gt;Content and opinions&lt;/h2&gt;
&lt;p&gt;The content published on this website reflects &lt;strong&gt;my personal views and experiences&lt;/strong&gt;. It is &lt;strong&gt;not professional advice&lt;/strong&gt;,
in particular not legal, tax, medical, or financial advice.&lt;/p&gt;
&lt;p&gt;I aim to provide correct and current information but make &lt;strong&gt;no warranties&lt;/strong&gt; regarding accuracy, completeness, or suitability
for a specific purpose.&lt;/p&gt;
&lt;h2 id=&quot;liability&quot;&gt;Liability&lt;/h2&gt;
&lt;p&gt;Liability for damages resulting from the use or non-use of the information provided on this website is excluded,
&lt;strong&gt;unless caused by intent or gross negligence&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Mandatory statutory liability remains unaffected, especially for injury to life, body, or health.&lt;/p&gt;
&lt;h2 id=&quot;external-links&quot;&gt;External links&lt;/h2&gt;
&lt;p&gt;This website may contain links to external websites of third parties. I have no influence on their content.&lt;/p&gt;
&lt;p&gt;The provider or operator of the linked pages is always responsible. At the time of linking, no illegal content was apparent.
If legal violations become known, the links will be removed promptly.&lt;/p&gt;
&lt;h2 id=&quot;copyright-and-use-of-content&quot;&gt;Copyright and use of content&lt;/h2&gt;
&lt;p&gt;The content and works published on this website are subject to German copyright law.&lt;/p&gt;
&lt;p&gt;Unless stated otherwise, &lt;strong&gt;copying and redistribution&lt;/strong&gt; are permitted &lt;strong&gt;as long as the author&#39;s attribution notice remains&lt;/strong&gt; and the use is not commercial.&lt;/p&gt;
&lt;p&gt;Any further use requires my prior consent.&lt;/p&gt;
&lt;h2 id=&quot;privacy&quot;&gt;Privacy&lt;/h2&gt;
&lt;p&gt;Information about the processing of personal data and browser storage can be found in the
&lt;a href=&quot;https://blog.ljc.me/pages/privacy/&quot;&gt;privacy policy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;applicable-law&quot;&gt;Applicable law&lt;/h2&gt;
&lt;p&gt;These notes and the use of this website are governed by the laws of the Federal Republic of Germany.&lt;/p&gt;
&lt;h2 id=&quot;closing-note&quot;&gt;Closing note&lt;/h2&gt;
&lt;p&gt;If any part of these notes is or becomes invalid, the remaining content remains effective.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>About</title>
        <published>2019-03-11T00:00:00+00:00</published>
        <updated>2019-03-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            Thomas Weitzel
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.ljc.me/pages/about/"/>
        <id>https://blog.ljc.me/pages/about/</id>
        
        <content type="html" xml:base="https://blog.ljc.me/pages/about/">&lt;h2 id=&quot;who-am-i&quot;&gt;Who am I?&lt;/h2&gt;
&lt;p&gt;My name is &lt;strong&gt;Thomas Weitzel&lt;/strong&gt;.
When people have trouble pronouncing my last name, I suggest trying &lt;em&gt;White Cell&lt;/em&gt;.
If you want to call me by my nickname, that&#39;s fine, too.
It is &lt;strong&gt;Thomy&lt;/strong&gt;, pronounced like &lt;em&gt;Tommy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I have worked as an independent software developer for many years.
Industries I&#39;ve worked in include Finance, Health Care, Automotive, Military, and Government.
I mostly worked on internal projects, but also some software products.
My mother tongue is German.&lt;/p&gt;
&lt;h2 id=&quot;what-s-the-topic&quot;&gt;What&#39;s the topic?&lt;/h2&gt;
&lt;p&gt;This blog covers my findings while exploring various aspects of programming in general, with a special focus on functional programming.&lt;/p&gt;
&lt;h2 id=&quot;the-motivation&quot;&gt;The motivation?&lt;/h2&gt;
&lt;p&gt;Why do people climb mountains?
British mountaineer George Mallory famously answered: &lt;em&gt;Because they&#39;re there&lt;/em&gt;.
They want to reach the top faster, in a more efficient or elegant way, differently from anybody else, or even at all.
That&#39;s how you approach problem-solving in programming.&lt;/p&gt;
&lt;h2 id=&quot;what-to-expect&quot;&gt;What to expect&lt;/h2&gt;
&lt;p&gt;Since I come from an object-oriented background, expect all sorts of problems I stumble into and then getting out of them.
C, C++, and Java were my first professionally used programming languages.
Later I switched to Scala, and even later to Kotlin.
I had, and still have, a lot to learn, even more to unlearn, and I&#39;m not nearly done yet.
If you have a similar background, maybe you can get something out of my mistakes and the occasional success.&lt;/p&gt;
&lt;h2 id=&quot;do-or-not-do-there-is-no-try-yoda&quot;&gt;&lt;em&gt;Do, or not do. There is no try&lt;/em&gt;. -- Yoda&lt;/h2&gt;
&lt;p&gt;The decision is not between doing something or not.
It&#39;s that &lt;em&gt;trying&lt;/em&gt; is something more than just any attempt.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Imprint</title>
        <published>2019-03-11T00:00:00+00:00</published>
        <updated>2019-03-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            Thomas Weitzel
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.ljc.me/pages/imprint/"/>
        <id>https://blog.ljc.me/pages/imprint/</id>
        
        <content type="html" xml:base="https://blog.ljc.me/pages/imprint/">&lt;!-- Add two spaces after each line to enforce line break --&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Thomas Weitzel&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;Theodor-Heuss-Str. 21&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;63225 Langen&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;Germany&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Copyright Thomas Weitzel.&lt;/p&gt;
&lt;h2 id=&quot;liability-for-content&quot;&gt;Liability for content&lt;/h2&gt;
&lt;p&gt;As a service provider, I am responsible under the general laws (DDG) for my own content on these pages.
However, I am not obliged to monitor transmitted or stored third-party information or to investigate circumstances that indicate illegal activity.
Obligations to remove or block the use of information under the general laws remain unaffected.
Liability is only possible from the time of knowledge of a specific infringement.
If I become aware of violations, I will remove the content immediately.&lt;/p&gt;
&lt;h2 id=&quot;liability-for-links&quot;&gt;Liability for links&lt;/h2&gt;
&lt;p&gt;This website contains links to external websites of third parties. I have no influence on their content.
The provider or operator of the linked pages is always responsible.
At the time of linking, no illegal content was apparent.
Permanent monitoring of the content of the linked pages is not reasonable without concrete evidence of an infringement.
If I become aware of violations, I will remove such links immediately.&lt;/p&gt;
&lt;h2 id=&quot;copyright&quot;&gt;Copyright&lt;/h2&gt;
&lt;p&gt;The content and works created by me on these pages are subject to German copyright law.
Reproduction, editing, distribution, and any kind of use outside the limits of copyright law require my written consent.
Downloads and copies of this page are permitted only for private, non-commercial use.
If the content on this page was not created by me, the copyrights of third parties are respected and such content is marked.
If you notice a copyright infringement, please inform me. If violations become known, I will remove such content immediately.&lt;/p&gt;
&lt;p&gt;Attributions for third-party assets used on this site are listed &lt;a href=&quot;https://blog.ljc.me/pages/attributions/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh">
        <title>Privacy Policy</title>
        <published>2019-03-11T00:00:00+00:00</published>
        <updated>2019-03-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            Thomas Weitzel
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.ljc.me/pages/privacy/"/>
        <id>https://blog.ljc.me/pages/privacy/</id>
        
        <content type="html" xml:base="https://blog.ljc.me/pages/privacy/">&lt;h2 id=&quot;general-notes&quot;&gt;General notes&lt;/h2&gt;
&lt;p&gt;Protecting your personal data matters. This website is a &lt;strong&gt;static information site&lt;/strong&gt; and can be used &lt;strong&gt;without providing personal data&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I do &lt;strong&gt;not&lt;/strong&gt; actively collect personal data unless optional features are used, in particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;no contact forms&lt;/li&gt;
&lt;li&gt;no tracking&lt;/li&gt;
&lt;li&gt;no analytics or marketing services&lt;/li&gt;
&lt;li&gt;no comments or user accounts without explicit consent&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;responsible-controller&quot;&gt;Responsible controller&lt;/h2&gt;
&lt;p&gt;The responsible controller for data processing on this website is the person named in the &lt;a href=&quot;https://blog.ljc.me/pages/imprint/&quot;&gt;imprint&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;hosting&quot;&gt;Hosting&lt;/h2&gt;
&lt;p&gt;This website is hosted by &lt;strong&gt;an internet hosting provider&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The web server stores information in its log files, some of which your browser transmits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IP address&lt;/li&gt;
&lt;li&gt;date and time of the request&lt;/li&gt;
&lt;li&gt;requested page&lt;/li&gt;
&lt;li&gt;HTTP status code&lt;/li&gt;
&lt;li&gt;referrer URL&lt;/li&gt;
&lt;li&gt;browser and operating system information&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This data is used only for &lt;strong&gt;technical operation&lt;/strong&gt;, &lt;strong&gt;security&lt;/strong&gt;, and &lt;strong&gt;error analysis&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Legal basis:&lt;/strong&gt; Art. 6(1)(f) GDPR &lt;br /&gt;
&lt;strong&gt;Legitimate interest:&lt;/strong&gt; secure and stable operation of the website&lt;/p&gt;
&lt;p&gt;The log data are stored separately and not used for profiling.&lt;/p&gt;
&lt;h2 id=&quot;data-processing&quot;&gt;Data processing&lt;/h2&gt;
&lt;p&gt;I have signed a data processing agreement with the hosting provider under Art. 28 GDPR.&lt;/p&gt;
&lt;h2 id=&quot;cookies&quot;&gt;Cookies and browser data storage&lt;/h2&gt;
&lt;p&gt;This website does not use cookies.&lt;/p&gt;
&lt;p&gt;Browser storage is used in these cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;After an &lt;strong&gt;active click on the theme toggle&lt;/strong&gt;, to store the display setting (&lt;code&gt;light&lt;/code&gt; or &lt;code&gt;dark&lt;/code&gt;) for this session in
the browser (&lt;code&gt;sessionStorage&lt;/code&gt;). Legal basis: Section 25(2) No. 2 TDDDG.&lt;/li&gt;
&lt;li&gt;When using the comment function, to store user-provided data and technical session information for later
comments in the browser, e.g. username/nickname, email address, optional website (&lt;code&gt;localStorage&lt;/code&gt;). Legal basis:
Section 25(1) TDDDG and Art. 7 GDPR.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The data storage takes place exclusively locally in the browser. Entries can be deleted there at any time.&lt;/p&gt;
&lt;h2 id=&quot;external-content-and-services&quot;&gt;External content and services&lt;/h2&gt;
&lt;p&gt;This website does &lt;strong&gt;not&lt;/strong&gt; embed external content (e.g., YouTube, Google Fonts, tracking scripts).
All resources (scripts, images, etc.) are served locally.&lt;/p&gt;
&lt;h2 id=&quot;ssl-tls-encryption&quot;&gt;SSL/TLS encryption&lt;/h2&gt;
&lt;p&gt;This website uses SSL/TLS encryption. Data transmitted during a page request cannot be read by third parties.&lt;/p&gt;
&lt;h2 id=&quot;rights-of-data-subjects&quot;&gt;Rights of data subjects&lt;/h2&gt;
&lt;p&gt;You have the right to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;access to stored personal data&lt;/li&gt;
&lt;li&gt;correction or deletion&lt;/li&gt;
&lt;li&gt;data portability where applicable&lt;/li&gt;
&lt;li&gt;restriction of processing&lt;/li&gt;
&lt;li&gt;objection to processing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These rights mainly apply to technically necessary server log data. If you use the comment function, the data you enter
(e.g. name/nickname, email address, optional website) and the comment content may also be processed. In that case, the
same rights apply. On request, a comment can be deleted or anonymized unless statutory retention obligations prevent this.&lt;/p&gt;
&lt;p&gt;Requests can be sent via the contact address in the imprint.&lt;/p&gt;
&lt;h2 id=&quot;supervisory-authority-and-right-to-file-a-complaint&quot;&gt;Supervisory authority and right to file a complaint&lt;/h2&gt;
&lt;p&gt;You have the right to file a complaint with a data protection supervisory authority. The competent authority is the
authority of your federal state of residence or the seat of the responsible controller.&lt;/p&gt;
</content>
        
    </entry>
</feed>
