<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>ikenox.info</title>
        <link>http://ikenox.info/</link>
        <description>undefined</description>
        <lastBuildDate>Sat, 13 Jun 2026 13:57:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>All rights reserved 2025, Naoto Ikeno</copyright>
        <item>
            <title><![CDATA[I built "firestore-repository", a lightweight Firestore client written in TypeScript]]></title>
            <link>https://ikenox.info/en/blog/firestore-repository</link>
            <guid>https://ikenox.info/en/blog/firestore-repository</guid>
            <pubDate>Tue, 18 Feb 2025 15:00:00 GMT</pubDate>
            <description><![CDATA[firestore-repository

npm: firestore-repository
GitHub: ikenox/firestore-repository

Features

Provides a Firestore client in the so-called Repository pattern...]]></description>
        </item>
        <item>
            <title><![CDATA[I rebuilt my blog on Cloudflare Pages + Astro]]></title>
            <link>https://ikenox.info/en/blog/rebuilt-blog-with-astro-and-cloudflare</link>
            <guid>https://ikenox.info/en/blog/rebuilt-blog-with-astro-and-cloudflare</guid>
            <pubDate>Fri, 06 Oct 2023 15:00:00 GMT</pubDate>
            <description><![CDATA[I've been working with Node.js at my job, and that got me interested in things like SSR and SSG. Along the way I kept seeing Astro and Cloudflare come up a lot lately, so I decided to rebuild my blog on top of them....]]></description>
        </item>
        <item>
            <title><![CDATA[I wrote "h2s", a library for declaratively scraping HTML in Rust]]></title>
            <link>https://ikenox.info/en/blog/h2s-rs</link>
            <guid>https://ikenox.info/en/blog/h2s-rs</guid>
            <pubDate>Sun, 30 Apr 2023 15:00:00 GMT</pubDate>
            <description><![CDATA[h2s

crates.io: https://crates.io/crates/h2s
Repository: https://github.com/ikenox/h2s-rs

It's html-to-struct...]]></description>
        </item>
        <item>
            <title><![CDATA[Finding the action name of "that feature I always use in IntelliJ" with IdeaVim]]></title>
            <link>https://ikenox.info/en/blog/ideavim-search-actionlist</link>
            <guid>https://ikenox.info/en/blog/ideavim-search-actionlist</guid>
            <pubDate>Mon, 10 Jun 2019 15:00:00 GMT</pubDate>
            <description><![CDATA[IdeaVim actions
In IdeaVim, by writing settings in ~/.ideavimrc you can assign any IntelliJ feature (action) to a key mapping.
Here is an example of such a setting....]]></description>
        </item>
        <item>
            <title><![CDATA[Where should validation go in Clean Architecture?]]></title>
            <link>https://ikenox.info/en/blog/validation-in-clean-architecture</link>
            <guid>https://ikenox.info/en/blog/validation-in-clean-architecture</guid>
            <pubDate>Sun, 24 Mar 2019 15:00:00 GMT</pubDate>
            <description><![CDATA[When building a web application with Clean Architecture, I often agonize over the question of which layer is responsible for validation. Let me consider that here....]]></description>
        </item>
        <item>
            <title><![CDATA[I built a Corne Keyboard]]></title>
            <link>https://ikenox.info/en/blog/corne-keyboard</link>
            <guid>https://ikenox.info/en/blog/corne-keyboard</guid>
            <pubDate>Sun, 20 Jan 2019 15:00:00 GMT</pubDate>
            <description><![CDATA[The Corne Keyboard is a DIY keyboard designed by @foostan.
The hashtag is #crkbd.
The design is open source and ...]]></description>
        </item>
        <item>
            <title><![CDATA[Dealing with the global variable called a database (Repository Pattern)]]></title>
            <link>https://ikenox.info/en/blog/repository-pattern</link>
            <guid>https://ikenox.info/en/blog/repository-pattern</guid>
            <pubDate>Fri, 11 Jan 2019 15:00:00 GMT</pubDate>
            <description><![CDATA[Global variables
A global variable is a variable that can be accessed from anywhere in a program, regardless of scope.
Because of this nature, it must be handled with care. Mishandling it can lead to problems such as "it becomes hard to grasp when and where the variable gets rewritten, which makes the program harder to reason about."...]]></description>
        </item>
        <item>
            <title><![CDATA[Choosing Between Inheritance and Delegation, and Why Interfaces Matter]]></title>
            <link>https://ikenox.info/en/blog/inheritance-delegation-interface</link>
            <guid>https://ikenox.info/en/blog/inheritance-delegation-interface</guid>
            <pubDate>Mon, 27 Aug 2018 15:00:00 GMT</pubDate>
            <description><![CDATA[This article is my attempt to put into words how I think about questions like "What are the qualitative differences between inheritance and delegation, and on what basis do I choose between them?" and "What's so great about interfaces, anyway?"...]]></description>
        </item>
        <item>
            <title><![CDATA[I migrated my blog to GatsbyJS]]></title>
            <link>https://ikenox.info/en/blog/replaced-blog-with-gatsbyjs</link>
            <guid>https://ikenox.info/en/blog/replaced-blog-with-gatsbyjs</guid>
            <pubDate>Fri, 03 Aug 2018 15:00:00 GMT</pubDate>
            <description><![CDATA[GatsbyJS
GatsbyJS
Until now I'd been generating my blog with Jekyll, but I tried migrating it to GatsbyJS....]]></description>
        </item>
        <item>
            <title><![CDATA[MouseX::Types::Enum - A module for writing Java-style enum (enumerated type) classes in Perl]]></title>
            <link>https://ikenox.info/en/blog/perl-mousex-types-enum</link>
            <guid>https://ikenox.info/en/blog/perl-mousex-types-enum</guid>
            <pubDate>Sat, 19 May 2018 15:00:00 GMT</pubDate>
            <description><![CDATA[MouseX::Types::Enum
I wanted to use enumerated types with fields and methods in Perl, just like Java's ...]]></description>
        </item>
        <item>
            <title><![CDATA[How to use and configure "IdeaVim", the Vim plugin for IntelliJ (Android Studio)]]></title>
            <link>https://ikenox.info/en/blog/ideavim-getting-started</link>
            <guid>https://ikenox.info/en/blog/ideavim-getting-started</guid>
            <pubDate>Sun, 24 Dec 2017 15:00:00 GMT</pubDate>
            <description><![CDATA[This post is for the final day of the JetBrains Advent Calendar 2017.
The slot had been empty up until the previous day, so I slid in at the last minute to take part!...]]></description>
        </item>
        <item>
            <title><![CDATA[first commit]]></title>
            <link>https://ikenox.info/en/blog/first-commit</link>
            <guid>https://ikenox.info/en/blog/first-commit</guid>
            <pubDate>Sat, 14 Oct 2017 15:00:00 GMT</pubDate>
            <description><![CDATA[I tried building a blog with Jekyll + GitHub Pages.

You can get a blog published in about 10 minutes, and it still leaves plenty of room for customization afterward...]]></description>
        </item>
    </channel>
</rss>