<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>keitaito</title>
    <description>Keita Ito&apos;s website.
</description>
    <link>https://keitaito.github.io/</link>
    <atom:link href="https://keitaito.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Wed, 08 Apr 2026 06:40:38 +0000</pubDate>
    <lastBuildDate>Wed, 08 Apr 2026 06:40:38 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Swift Algorithms Reductions APIs</title>
        <description>&lt;p&gt;TIL &lt;a href=&quot;https://swiftpackageindex.com/apple/swift-algorithms/1.2.1/documentation/algorithms/reductions&quot;&gt;swift-algorithms has Reductions APIs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Two primary ones:&lt;/p&gt;
&lt;div class=&quot;language-swift highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// https://swiftpackageindex.com/apple/swift-algorithms/1.2.1/documentation/algorithms/swift/sequence/reductions(_:)&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;reductions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;Self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;throws&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;Self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Element&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;rethrows&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// https://swiftpackageindex.com/apple/swift-algorithms/1.2.1/documentation/algorithms/swift/sequence/reductions(_:_:)&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;reductions&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;initial&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; 
    &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;Self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;throws&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Result&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;rethrows&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Examples:&lt;/p&gt;
&lt;div class=&quot;language-swift highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;exclusiveRunningTotal&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reductions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;exclusiveRunningTotal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;// prints [0, 1, 3, 6, 10, 15]&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;inclusiveRunningTotal&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reductions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;inclusiveRunningTotal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;// prints [1, 3, 6, 10, 15]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;These are useful when creating a prefix sum array for solving some algorithm problems.&lt;/p&gt;
</description>
        <pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2025/12/31/Swift-Algorithms-Reductions-APIs.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2025/12/31/Swift-Algorithms-Reductions-APIs.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Supporting HTTPS for your custom domain with GitHub Pages</title>
        <description>&lt;p&gt;Last time, I updated my blog after ages. Versions of GitHub Pages and Jekyll were updated at the time, but there was one thing left to update. It’s supporting HTTPS on my blog. My blog is configured with my domain keitaito.com. And, it is hosted with GitHub Pages. When it was set up, supporting HTTPS were a little bit more tedious. You need to buy a SSL certificate on your own, and installed it where your website was placed, in my case it should be my remote repo on GitHub. Things have changed since about a year ago.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.blog/2018-05-01-github-pages-custom-domains-https/&quot;&gt;Custom domains on GitHub Pages gain support for HTTPS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub started providing HTTPS support for GitHub Pages! With partnership with &lt;a href=&quot;https://letsencrypt.org/&quot;&gt;Let’s Encrypt&lt;/a&gt;, it seems SSL support is automatically applied by GitHub. So, I updated my blog to support HTTPS using this feature.&lt;/p&gt;

&lt;p&gt;What I needed to do for this update was described on GitHub Help pages.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://help.github.com/en/articles/securing-your-github-pages-site-with-https&quot;&gt;Securing your GitHub Pages site with HTTPS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://help.github.com/en/articles/setting-up-an-apex-domain#configuring-a-records-with-your-dns-provider&quot;&gt;Configuring A records with your DNS provider&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://help.github.com/en/articles/securing-your-github-pages-site-with-https#enforcing-https-for-your-github-pages-site&quot;&gt;Enforcing HTTPS for your GitHub Pages site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My custom domain is maintained by &lt;a href=&quot;https://www.hover.com&quot;&gt;Hover&lt;/a&gt;. Apparently, Hover doesn’t support Apex domains. Instead, ANAME records need to be configured in my case. GitHub Help page says it is a little bit more tedious to set up ANAME records, but it was not really. What I needed to do was pretty much just creating new A records on DNS settings page on Hover. The following IP addresses need to be pointed to my custom domain on Hover.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;185.199.108.153&lt;/li&gt;
  &lt;li&gt;185.199.109.153&lt;/li&gt;
  &lt;li&gt;185.199.110.153&lt;/li&gt;
  &lt;li&gt;185.199.111.153&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can confirm if your configuration is done correctly with the following command.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ dig +noall +answer yourCustomDomain.com
yourCustomDomain.com.   3600  IN  A 185.199.108.153
yourCustomDomain.com.   3600  IN  A 185.199.109.153
yourCustomDomain.com.   3600  IN  A 185.199.110.153
yourCustomDomain.com.   3600  IN  A 185.199.111.153
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;On DNS settings page on your DNS provider dashboard (Hover in my case), you should see 4 A records and 1 CNAME record (pointing your domain to your GitHub Pages repo). I verified these settings by checking with &lt;a href=&quot;https://dev.to/nickymarino/pointing-a-github-pages-repo-to-a-hover-domain-105e&quot;&gt;the screenshots on this web page written by Nicky Marino&lt;/a&gt;. Thanks Nicky 😄&lt;/p&gt;

&lt;p&gt;DNS provider takes about 24 hours to update the DNS settings. After that, you might need to remove and re-add your custom domain setting on your GitHub Pages repo’s settings page. See for more details to learn how to do it: &lt;a href=&quot;https://help.github.com/en/articles/adding-or-removing-a-custom-domain-for-your-github-pages-site&quot;&gt;Adding or removing a custom domain for your GitHub Pages site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After all these configurations, you will see the cool lock icon next to your domain on the browser 😎&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2019-04-14/Screen Shot 2019-04-14 at 12.27.18 PM.png&quot; alt=&quot;photo&quot; /&gt;&lt;/p&gt;

</description>
        <pubDate>Sun, 14 Apr 2019 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2019/04/14/Supporting-HTTPS-for-your-custom-domain-with-GitHub-Pages.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2019/04/14/Supporting-HTTPS-for-your-custom-domain-with-GitHub-Pages.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Updating GitHub Pages and Jekyll</title>
        <description>&lt;p&gt;This is the first blog post after a year and 11 months since the last time 😛&lt;/p&gt;

&lt;p&gt;I had some gotchas when I was working on my project, and I thought it would be good to write a blog post about it. My blog is hosted with GitHub Pages and Jekyll, so I went check it out on GitHub, and saw these alerts.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2019-03-31/Screen Shot 2019-03-31 at 1.02.43 AM.png&quot; alt=&quot;photo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Oops. OK, gotta fix them first!&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Ruby 2.3.2 was still used for the blog. &lt;a href=&quot;https://jekyllrb.com/docs/upgrading/3-to-4/&quot;&gt;In the near future when Jekyll 4 is officially released, it seems Jekyll requires Ruby 2.4.0 or later.&lt;/a&gt; I wanted to install Ruby 2.6.2 for that. Before that, I upgraded rbenv from 1.0.0 to 1.1.2. Then, installed Ruby 2.6.2 with it. And, added &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ruby-version&lt;/code&gt; file to the blog repo.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It looks like Bundler is pre-installed with the recent Ruby. Nice. Just in case (or more like for my curiosity), I also installed Bundler 2.0.1. &lt;a href=&quot;https://bundler.io/guides/bundler_2_upgrade.html&quot;&gt;According to this Bundler’s guide page&lt;/a&gt;, Depending on the declaration in your Gemfile.lock, Bundler version is automatically switched when it runs. Cool.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;OK, time to update gems finally. Initially, I just ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle update jekyll&lt;/code&gt;, as &lt;a href=&quot;https://jekyllrb.com/docs/upgrading/&quot;&gt;suggested here&lt;/a&gt;. But, I got something like the following error (Forgot to keep the log ¯\_(ツ)_/¯).&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; json-1.8.3 Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;In Gemfile.lock, json gem was pointed to 1.8.3. Ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle update json&lt;/code&gt; and it is updated to 1.8.6. Good.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Tried again to update jekyll gem. There was no error. Looks good… except Jekyll itself was not updated ¯\_(ツ)_/¯ Hmm…&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I didn’t check Gemfile.lock well, but I retrospectively guess it was because github-pages gem was pointed to 113 in Gemfile.lock. Jekyll is a dependency of the gem.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Finally, ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle update github-pages&lt;/code&gt;. All dependencies were updated from top to bottom (or inversely? idk). github-pages is version 197, jekyll is 3.7.4, and json dependency are gone (idk why) now!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Made a commit for these changes, and pushed it to the remote on GitHub. Checked Alerts page again, and ta-da, all alerts are gone 🎉&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2019-03-31/Screen Shot 2019-03-31 at 1.05.06 AM.png&quot; alt=&quot;photo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, that’s pretty much all. And, I haven’t written about something I wanted to blog it yet ¯\_(ツ)_/¯ Well, now I remember how to write a blog post, so all good.&lt;/p&gt;

&lt;p&gt;What’s next? Actually, I wanted to update this blog by supporting HTTPS for my own domain. &lt;a href=&quot;https://github.blog/2018-05-01-github-pages-custom-domains-https/&quot;&gt;GitHub started supporting it last year&lt;/a&gt;. I’ve been wanting to do it. So, it would be the next action item 🔨&lt;/p&gt;

</description>
        <pubDate>Sun, 31 Mar 2019 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2019/03/31/Updating-GitHub-Pages-and-Jekyll.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2019/03/31/Updating-GitHub-Pages-and-Jekyll.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Swift Talk Episode 32 Note</title>
        <description>&lt;p&gt;I watched &lt;a href=&quot;https://talk.objc.io/episodes/S01E47-view-models-at-kickstarter&quot;&gt;Swift Talk episode 32, View Models at Kickstarter&lt;/a&gt;. The video demonstrates how to create View Model. The View Model is very well defined. Simple example, and very clear explanation!&lt;/p&gt;

&lt;p&gt;The following is my note for it.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Array&lt;/code&gt; vs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ArraySlice&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;split(batchSize:)&lt;/code&gt; function.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Swift.min()&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Use startIndex and endIndex.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ArraySlice&lt;/code&gt; is not guaranteed that it starts from index 0.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stride()&lt;/code&gt; function requires that index is integer type, meaning type should be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Strideable&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Collection&lt;/code&gt; protocol doesn’t have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Element&lt;/code&gt; type. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Iterator.Element&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Collection&lt;/code&gt;’s subscript return &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Subsequence&lt;/code&gt; type.&lt;/li&gt;
  &lt;li&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;IndexDistance&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Int&lt;/code&gt; for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;split(batchSize:)&lt;/code&gt; parameter.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dump()&lt;/code&gt; function.&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sun, 30 Apr 2017 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2017/04/30/Swift-Talk-Episode-32-Note.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2017/04/30/Swift-Talk-Episode-32-Note.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Looking for a book for bookclub to learn computer system</title>
        <description>&lt;p&gt;I’m looking for a book for my bookclub that I can learn how computer system works from. I’m currently reading &lt;a href=&quot;https://www.amazon.com/Algorithms-Unlocked-Press-Thomas-Cormen-ebook/dp/B00DDTJ1EG/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1491621803&amp;amp;sr=1-1&amp;amp;keywords=Algorithm+Unlocked&quot;&gt;Algorithm Unlocked&lt;/a&gt; with my friends on my bookclub. We will finish reading it soon, and we are talking about what book we will read next. One of my current interest topic is how computer system works, especially from a programmer perspective. As an iOS Developer, I know how to program an iOS app, and how to run it, it’s like a high level. But I still don’t have good understanding of how those programs work under the hood, it’s like a low level. I would like to know how the system runs my program. When I talked with one of my friends, he recommended me a book called &lt;a href=&quot;https://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X&quot;&gt;Computer Systems: A Programmer’s Perspective&lt;/a&gt;. I checked its &lt;a href=&quot;https://www.pearsonhighered.com/program/Bryant-Computer-Systems-A-Programmer-s-Perspective-2nd-Edition/PGM222962.html&quot;&gt;table of contents&lt;/a&gt; page, and it looks like this is a kind of book I’m exactly looking for. But here is one drawback: it might be a too long book for bookclub (also expensive, at least to me). It has 1000 page. It would be definitely a good book to learn the system though. So, I’m still looking for a good book that explains similar things, and that is about 200 - 400 pages. Please let me know if you have any recommendation on this kind of thing.&lt;/p&gt;

&lt;p&gt;At last, I leave some keywords related to the topic here (these are chapter titles of the book Computer Systems: A Programmer’s Perspective):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Representing and Manipulating Information&lt;/li&gt;
  &lt;li&gt;Machine-Level Representation of Programs&lt;/li&gt;
  &lt;li&gt;Processor Architecture&lt;/li&gt;
  &lt;li&gt;Optimizing Program Performance&lt;/li&gt;
  &lt;li&gt;The Memory Hierarchy&lt;/li&gt;
  &lt;li&gt;Linking&lt;/li&gt;
  &lt;li&gt;Exceptional Control Flow&lt;/li&gt;
  &lt;li&gt;Virtual Memory&lt;/li&gt;
  &lt;li&gt;System-Level I/O&lt;/li&gt;
  &lt;li&gt;Network Programming&lt;/li&gt;
  &lt;li&gt;Concurrent Programming&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Fri, 07 Apr 2017 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2017/04/07/Looking-for-a-book-to-learn-computer-system.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2017/04/07/Looking-for-a-book-to-learn-computer-system.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Job Hunt February 2017</title>
        <description>&lt;p&gt;February 2017 will be over in 20 minutes. I’m doing job hunting right now. I had a couple of phone calls today. I have received some coding challenges as well. I should apply for companies more. I need to practice algorithm coding challenges as well as iOS development… So much to do!&lt;/p&gt;
</description>
        <pubDate>Tue, 28 Feb 2017 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2017/02/28/job-hunt-February-2017.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2017/02/28/job-hunt-February-2017.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>iOS Peer Lab Meetup on Feb 26</title>
        <description>&lt;p&gt;I organized an iOS Peer Lab Meetup today on Feb 26. Thank you for coming Noble and Jeff!&lt;/p&gt;
</description>
        <pubDate>Sun, 26 Feb 2017 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2017/02/26/iOS-Peer-Lab-Meetup.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2017/02/26/iOS-Peer-Lab-Meetup.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>PlaygroundPageNeedsIndefiniteExecutionDidChangeNotification</title>
        <description>&lt;p&gt;I watched &lt;a href=&quot;https://talk.objc.io/episodes/S01E27-typed-notifications-part-1&quot;&gt;objc.io Swit Talk Episode 27, Typed Notification Part 1&lt;/a&gt;. I just learned there is a notification for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PlaygroundPage.current.needsIndefiniteExecution&lt;/code&gt; change. It is called &lt;a href=&quot;https://github.com/apple/swift-xcode-playground-support/blob/master/PlaygroundSupport/PlaygroundSupport/PlaygroundPage.swift#L53&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;PlaygroundPageNeedsIndefiniteExecutionDidChangeNotification&quot;&lt;/code&gt;&lt;/a&gt;. It’s super duper long. I think I can’t type it correctly without typo!!! This Swift Talk is about how to wrap these notifications to use them with type safety. Cool technique!&lt;/p&gt;

</description>
        <pubDate>Wed, 22 Feb 2017 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2017/02/22/PlaygroundPageNeedsIndefiniteExecutionDidChangeNotification.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2017/02/22/PlaygroundPageNeedsIndefiniteExecutionDidChangeNotification.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Strange Swift Error Handling Problem</title>
        <description>&lt;p&gt;🚧 This post is under construction. 🚧
Error about catch is not exhaustive.&lt;/p&gt;
</description>
        <pubDate>Sun, 19 Feb 2017 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2017/02/19/Strange-Swift-Error-Handling-Problem.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2017/02/19/Strange-Swift-Error-Handling-Problem.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Bug Fix: Slow ViewController Push Animation</title>
        <description>&lt;h4 id=&quot;update-1&quot;&gt;Update 1&lt;/h4&gt;

&lt;p&gt;I was playing around with UIViewController object in Storyboard and code-only UIViewController. What I found so far:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;UIViewController object in Storyboard has the default color that is set to white color.&lt;/li&gt;
  &lt;li&gt;Code-only UIViewController does not have the default color. Thus, it is nil.&lt;/li&gt;
  &lt;li&gt;When UIViewController instantiated with Storyboard, let’s say fooVC, is the rootViewController, and if it pushes the next UIViewController that is code-only UIViewController, the choppy animation happens due to the lack of backgroundColor. The interesting point is what is shown after push animation is the empty black color screen. Thus, Even fooVC has the white backgroundColor, it does NOT mean the UIWindow object’s backgroundColor is white color as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;original-post&quot;&gt;Original Post&lt;/h4&gt;

&lt;p&gt;I had a weird issue, and fixed it just now with a weird solution. I was trying to push my DetailsViewController, which is pretty new and contains nothing, from MyTableViewController that is in UINavigationController. So I did like this:&lt;/p&gt;

&lt;div class=&quot;language-swift highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;navigationController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;pushViewController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;detailsViewController&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;animated&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But, the push animation for this did not move smoothly. It was a bit slow and choppy. Weird.&lt;/p&gt;

&lt;p&gt;The solution was &lt;a href=&quot;http://stackoverflow.com/a/19129932/3391537&quot;&gt;to set view’s backgroundColor&lt;/a&gt; in DetailsViewController. It seems an emptyViewController was the cause. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;¯\_(ツ)_/¯&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-swift highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// In DetailsViewController&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;backgroundColor&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;white&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I’m making this app without Storyboard. I feel I’m spoiled too much by Storyboard. Making everything programmatically is another challenge.&lt;/p&gt;

</description>
        <pubDate>Fri, 17 Feb 2017 00:00:00 +0000</pubDate>
        <link>https://keitaito.github.io/blog/2017/02/17/bug-fix-slow-viewcontroller-push-animation.html</link>
        <guid isPermaLink="true">https://keitaito.github.io/blog/2017/02/17/bug-fix-slow-viewcontroller-push-animation.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
  </channel>
</rss>
