<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>aubsebian.net</title>
  <link>https://aubsebian.net</link>
  <description>aubsebian.net</description>
  <lastBuildDate>Tue, 21 Apr 2026 11:19:51 +0900</lastBuildDate>
  <atom:link href="https://aubsebian.net/feed.xml" rel="self" type="application/rss+xml"/>
  <item>
    <title>Thinkagram 1</title>
    <link>https://aubsebian.net/daily-posts/2026-04-09_thinkagram.html</link>
    <guid>https://aubsebian.net/daily-posts/2026-04-09_thinkagram.html</guid>
    <pubDate>Thu, 09 Apr 2026 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>It seems I had mistakenly deleted my previous post about my ThinkPad X61 (not
EXWM, but right after purchase). Here are some photos of it!
</p>
<figure class='figure'>
<img src='https://aubsebian.net/daily-posts/figs/2026-04-09_thinkagram/20260409_032535688.jpg' alt='email in Emacs (mu4e)' style='width:75%' />
<figcaption class='caption'>email in Emacs (mu4e)</figcaption>
</figure>
<figure class='figure'>
<img src='https://aubsebian.net/daily-posts/figs/2026-04-09_thinkagram/20260409_032652549.jpg' alt='.emacs and ThinkLight' style='width:75%' />
<figcaption class='caption'>.emacs and ThinkLight</figcaption>
</figure>]]></description>
  </item>
  <item>
    <title>Email client (mu4e) in Emacs</title>
    <link>https://aubsebian.net/technical-notes/email-in-emacs.html</link>
    <guid>https://aubsebian.net/technical-notes/email-in-emacs.html</guid>
    <pubDate>Wed, 08 Apr 2026 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 11 --><p class='noindent'>When I was running  <a href='https://en.wikipedia.org/wiki/Void_Linux'>Void Linux</a> on my ThinkPad X61, I had to install
minimal xfce4 for i3wm despite that I didn’t want any desktop environment
(DE) on it. Now, I switched to Debian 13 but it runs EXWM (see  <a href='https://aubsebian.net/daily-posts/2025-10-25_X61-with-EXWM'>this
post</a>) now. It still has to install minimal xfce4 tools, such as thunar if I want
to use Firefox, but there’s practically no appearance of any GUI thing in
Emacs.
</p><!-- l. 15 --><p class='noindent'>In i3wm I used to use Thunderbird client diectly, but now I can’t do that very
conveniently. I could install and open Thunderbird in an Emacs buffer, just like how I
open Firefox, but Emacs has good integration with <span class='ec-lmri-10'>basic </span>IMAP accounts. Although I
can’t use school email or other Gmail accounts, I don’t really mind because this
computer is my hobby machine anyways.
</p><!-- l. 19 --><p class='noindent'>For minimal setup, this was everything on Emacs side. Note that the default location
of Isync and msmtprc are in home directory, in my case it’s <code class='verb'>.config</code>. For Isync
it’s not specified in the Emacs config, but I might have set it somewhere
else.
</p>
<pre class='fancyvrb' id='fancyvrb1'><a id='x1-22r1'></a><span id='textcolor1'>(</span><span id='textcolor2'>use-package</span><span id='textcolor3'> </span><span id='textcolor4'>mu4e</span> 
<a id='x1-24r2'></a><span id='textcolor5'>  </span><span id='textcolor6'>:config</span> 
<a id='x1-26r3'></a><span id='textcolor7'>  </span><span id='textcolor8'>(</span><span id='textcolor9'>setq</span><span id='textcolor10'> </span><span id='textcolor11'>mu4e-maildir</span><span id='textcolor12'> </span><span id='textcolor13'>"~/.mail/personal/"</span> 
<a id='x1-28r4'></a><span id='textcolor14'>        </span><span id='textcolor15'>mu4e-get-mail-command</span><span id='textcolor16'> </span><span id='textcolor17'>"mbsync personal"</span> 
<a id='x1-30r5'></a><span id='textcolor18'>        </span><span id='textcolor19'>mu4e-update-interval</span><span id='textcolor20'> </span><span id='textcolor21'>300</span> 
<a id='x1-32r6'></a><span id='textcolor22'>        </span><span id='textcolor23'>mu4e-inbox-folder</span><span id='textcolor24'> </span><span id='textcolor25'>"/Inbox"</span> 
<a id='x1-34r7'></a><span id='textcolor26'>        </span><span id='textcolor27'>mu4e-sent-folder</span><span id='textcolor28'> </span><span id='textcolor29'>"/Sent"</span> 
<a id='x1-36r8'></a><span id='textcolor30'>        </span><span id='textcolor31'>mu4e-drafts-folder</span><span id='textcolor32'> </span><span id='textcolor33'>"/Draft"</span> 
<a id='x1-38r9'></a><span id='textcolor34'>        </span><span id='textcolor35'>mu4e-trash-folder</span><span id='textcolor36'> </span><span id='textcolor37'>"/Trash"</span> 
<a id='x1-40r10'></a><span id='textcolor38'>        </span><span id='textcolor39'>mu4e-refile-folder</span><span id='textcolor40'> </span><span id='textcolor41'>"/Junk"</span> 
<a id='x1-42r11'></a><span id='textcolor42'>        </span><span id='textcolor43'>mu4e-compose-signature-include-separator</span><span id='textcolor44'> </span><span id='textcolor45'>nil</span> 
<a id='x1-44r12'></a><span id='textcolor46'>        </span><span id='textcolor47'>mu4e-compose-signature</span><span id='textcolor48'> </span><span id='textcolor49'>"Makihiro"</span> 
<a id='x1-46r13'></a><span id='textcolor50'>        </span><span id='textcolor51'>user-mail-address</span><span id='textcolor52'> </span><span id='textcolor53'>"makigo@aubsebian.net"</span> 
<a id='x1-48r14'></a><span id='textcolor54'>        </span><span id='textcolor55'>user-full-name</span><span id='textcolor56'> </span><span id='textcolor57'>"Makihiro GO"</span><span id='textcolor58'>)</span> 
<a id='x1-50r15'></a><span id='textcolor59'>  </span><span id='textcolor60'>(</span><span id='textcolor61'>setq</span><span id='textcolor62'> </span><span id='textcolor63'>sendmail-program</span><span id='textcolor64'> </span><span id='textcolor65'>"msmtp"</span> 
<a id='x1-52r16'></a><span id='textcolor66'>        </span><span id='textcolor67'>send-mail-function</span><span id='textcolor68'> </span><span id='textcolor69'>#'</span><span id='textcolor70'>sendmail-send-it</span> 
<a id='x1-54r17'></a><span id='textcolor71'>        </span><span id='textcolor72'>message-sendmail-f-is-evil</span><span id='textcolor73'> </span><span id='textcolor74'>t</span> 
<a id='x1-56r18'></a><span id='textcolor75'>        </span><span id='textcolor76'>message-sendmail-extra-arguments</span><span id='textcolor77'> </span><span id='textcolor78'>(</span><span id='textcolor79'>list</span><span id='textcolor80'> </span><span id='textcolor81'>"--read-envelope-from"</span><span id='textcolor82'> </span><span id='textcolor83'>"-C"</span><span id='textcolor84'> </span><span id='textcolor85'>(</span><span id='textcolor86'>expand-file-name</span><span id='textcolor87'> </span><span id='textcolor88'>"~/.config/msmtprc"</span><span id='textcolor89'>)</span><span id='textcolor90'> </span><span id='textcolor91'>"-a"</span><span id='textcolor92'> </span><span id='textcolor93'>"personal"</span><span id='textcolor94'>)</span> 
<a id='x1-58r19'></a><span id='textcolor95'>        </span><span id='textcolor96'>message-send-mail-function</span><span id='textcolor97'> </span><span id='textcolor98'>#'</span><span id='textcolor99'>message-send-mail-with-sendmail</span><span id='textcolor100'>))</span></pre>
<!-- l. 45 --><p class='noindent'>In <code class='verb'>~/.config</code>, it needs one Isync config for incoming emails and one msmtp config for
outgoing emails. 
</p>
<pre class='fancyvrb' id='fancyvrb2'><a id='x1-85r1'></a># Isync 
<a id='x1-87r2'></a>IMAPAccount personal 
<a id='x1-89r3'></a>Host &lt;your-email-server&gt; 
<a id='x1-91r4'></a>User makigo@aubsebian.net 
<a id='x1-93r5'></a>PassCmd "gpg --quiet --for-your-eyes-only --no-tty --pinentry-mode loopback --passphrase &lt;your-passphrase&gt; --decrypt ~/.mailpass.gpg" 
<a id='x1-95r6'></a>TLSType IMAPS 
<a id='x1-97r7'></a>Port 993 
<a id='x1-99r8'></a>CertificateFile /etc/ssl/certs/ca-certificates.crt 
<a id='x1-101r9'></a> 
<a id='x1-103r10'></a>IMAPStore personal-remote 
<a id='x1-105r11'></a>Account personal 
<a id='x1-107r12'></a> 
<a id='x1-109r13'></a>MaildirStore personal-local 
<a id='x1-111r14'></a>Path ~/.mail/personal/ 
<a id='x1-113r15'></a>Inbox ~/.mail/personal/Inbox 
<a id='x1-115r16'></a>Subfolders Verbatim 
<a id='x1-117r17'></a> 
<a id='x1-119r18'></a>Channel personal 
<a id='x1-121r19'></a>Master :personal-remote: 
<a id='x1-123r20'></a>Slave :personal-local: 
<a id='x1-125r21'></a>Patterns * 
<a id='x1-127r22'></a>Create Both 
<a id='x1-129r23'></a>Expunge Both 
<a id='x1-131r24'></a>Sync All 
<a id='x1-133r25'></a>SyncState 1</pre>
<pre class='fancyvrb' id='fancyvrb3'><a id='x1-146r1'></a># msmtp 
<a id='x1-148r2'></a>account personal 
<a id='x1-150r3'></a>host &lt;your-email-server (smtp)&gt; 
<a id='x1-152r4'></a>port 465 
<a id='x1-154r5'></a>tls on 
<a id='x1-156r6'></a>tls_starttls off 
<a id='x1-158r7'></a>auth on 
<a id='x1-160r8'></a>user makigo@aubsebian.net 
<a id='x1-162r9'></a>passwordeval "gpg --quiet --for-your-eyes-only --no-tty --pinentry-mode loopback --passphrase &lt;your-passphrase&gt; --decrypt ~/.mailpass.gpg" 
<a id='x1-164r10'></a>from makigo@aubsebian.net 
<a id='x1-166r11'></a>account default : personal</pre>
<!-- l. 88 --><p class='noindent'>Oath2 does not work (or I just don’t know), but passwords do. There are multiple
ways to setup the password encryption. I use Gnupg: 
</p>
<pre class='fancyvrb' id='fancyvrb4'><a id='x1-171r1'></a>$<span id='textcolor101'> </span><span id='textcolor102'>printf</span><span id='textcolor103'> </span><span id='textcolor104'>'%s'</span><span id='textcolor105'> </span><span id='textcolor106'>'password'</span><span id='textcolor107'> </span>&gt;<span id='textcolor108'> </span>~/.mailpass 
<a id='x1-173r2'></a>$<span id='textcolor109'> </span>chmod<span id='textcolor110'> </span><span id='textcolor111'>600</span><span id='textcolor112'> </span>~/.mailpass 
<a id='x1-175r3'></a>$<span id='textcolor113'> </span>gpg<span id='textcolor114'> </span>--symmetric<span id='textcolor115'> </span>~/.mailpass</pre>
<!-- l. 97 --><p class='noindent'>If <code class='verb'>gpg --decrypt ~/.mailpass.gpg</code> successfully decrypts the passphrase,
it’s done but if you have a passphrase for it, you need to pass
<code class='verb'>--pinentry-mode loopback --passphrase &lt;your-passphrase&gt;</code> in <code class='verb'>PassCmd</code> and
<code class='verb'>passwordeval</code>.
</p>
<pre class='fancyvrb' id='fancyvrb5'><a id='x1-179r1'></a><span id='textcolor116'># PassCmd for Isync and passwordeval for msmtprc</span> 
<a id='x1-181r2'></a><span id='textcolor117'>"gpg --quiet --for-your-eyes-only --no-tty --pinentry-mode loopback --passphrase &lt;your-passphrase&gt; --decrypt ~/.mailpass.gpg"</span></pre>
                                                                  

                                                                  
<h4 class='subsectionHead' id='further-configurations'><a id='x1-1000'></a>Further Configurations</h4>
<ul class='itemize1'>     
<li class='itemize'> <a href='https://wiki.archlinux.org/title/Isync'>Isync</a>
</li>
<li class='itemize'> <a href='https://cachestocaches.com/2017/3/complete-guide-email-emacs-using-mu-and/'>A Complete Guide to Email in Emacs using Mu and Mu4e</a></li></ul>]]></description>
  </item>
  <item>
    <title>To become a researcher: engineering or ``science''?</title>
    <link>https://aubsebian.net/daily-posts/2026-03-09_engineering-diploma.html</link>
    <guid>https://aubsebian.net/daily-posts/2026-03-09_engineering-diploma.html</guid>
    <pubDate>Mon, 09 Mar 2026 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>This blog originates from a mythical supremacy of science degree coming from a
friend of mine.
</p><!-- l. 12 --><p class='noindent'>First of all, there is no doubt (at least to me) that science sounds cooler than
engineering just because of the amount of math and whatever is required to
study the natural sciences, which are usually not required to the same extent
for engineering because it also requires other skills such as application and
creativity.
</p><!-- l. 14 --><p class='noindent'>From this argument, clearly there’s no winner regarding which field is <span class='ec-lmri-10'>harder </span>since
both require different sets of disciplines. The illusion that engineering seems to be
easier is merely a byproduct of how broad the field is, with so many possibilities that
the more <span class='ec-lmri-10'>difficult </span>aspects get harder to notice.
</p><!-- l. 17 --><p class='noindent'>The statement that science is cooler than engineering now sounds no more convincing
than intellectual masturbation.
</p>]]></description>
  </item>
  <item>
    <title>/etc/hosts on Android</title>
    <link>https://aubsebian.net/technical-notes/etc-hosts-on-android.html</link>
    <guid>https://aubsebian.net/technical-notes/etc-hosts-on-android.html</guid>
    <pubDate>Thu, 06 Nov 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>Stock Android does not provide a way to edit /etc/hosts directly and rooting phone
always comes with some risks. Besides, newer models are usually not supported;
usually it takes about a year or two.
</p><!-- l. 13 --><p class='noindent'> <a href='https://www.zenz-solutions.de/personaldnsfilter-wp/'>personalDNSfilter</a> is a DNS filter proxy that allows you to block ads but also allows
you to set extra /etc/hosts. Since my note-taking appliaction is hosted on
my old laptop at home and my router does not support NAT loopback, I
can’t access to it with my phone within home Wi-Fi. Now it works like a
charm.
</p>]]></description>
  </item>
  <item>
    <title>New Phone: Sony Xperia 10 VI</title>
    <link>https://aubsebian.net/daily-posts/2025-11-06_new-phone.html</link>
    <guid>https://aubsebian.net/daily-posts/2025-11-06_new-phone.html</guid>
    <pubDate>Thu, 06 Nov 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>My Google Pixel 6a had been in use for around 3.5 years. Honestly, it was one of the
best phones I’ve ever owned/used. I did have some overheating issues, though not
serious, in the first couple months. Other than that, it basically does not heat up at
all; it has about 2 days of battery charge; the performance was perfectly smooth. The
only dissatisfaction I can needle-pick is that the camera was not great in long
distance. I had troubles taking photos of presentation/blackboard clearly afar, but for
scenery I don’t mind; I’m not a big fan of <span class='ec-lmri-10'>high-resolution </span>photography anyway.
Nonetheless, the biggest pro of Pixel phones is that they are supported by
GrapheneOS which ironically removes Google by default and provides extra security
features.
</p><!-- l. 18 --><p class='noindent'>Sadly, about a month ago the microphone started not working properly, which
ultimately led me to switch.
</p><!-- l. 20 --><p class='noindent'>My budget was 50k yen (282.21 EUR) or less, and I found four appealing
candidates.
</p>     
<ol class='enumerate1'>
<li class='enumerate' id='x1-3x1'> <a href='https://www.sony.jp/xperia/xperia/xperia10m6/'>Sony Xperia 10 VI</a> (about 53k)
</li>
<li class='enumerate' id='x1-5x2'>Nothing Phone 3a (about 54k)
</li>
<li class='enumerate' id='x1-7x3'>Nothing Phone 2a (about 39k)
</li>
<li class='enumerate' id='x1-9x4'>Motorola g64 5G (about 23k)</li></ol>
<!-- l. 29 --><p class='noindent'>Motorola was eliminated quickly after watching some review videos on YouTube; the
build quality just doesn’t make me believe using it for over 3 years, which is a
minimum requirement.
</p><!-- l. 31 --><p class='noindent'>Nothing Phones have very positive reviews (I also have Nothing earbuds). Both
models outperform other phones in the list which really makes it seem like a
no-brainer option. However, high performance (good numbers on the board) is not
my priority; aesthetics and longevity are. Although Nothing Phones are indeed
                                                                  

                                                                  
beautiful and they seem to last long, I found myself not able to look away from the
good old Xperia.
</p><!-- l. 36 --><p class='noindent'>In fact, I’m a long-time Xperia enthusiast. I own a Z3 Compact, a X Performance,
and a XZ1. While the design is sometimes questionable, the Xperia 10 line has a
special place for me.
</p><!-- l. 40 --><p class='noindent'>As for which Xperia 10, VII, released about two weeks ago, has a wider screen
(19.5:9) and is <span class='ec-lmbx-10'>very expensive</span>, so no. V, released in 2023 (one year after I bought
my Pixel 6a), is cheaper but not as good as VI in terms of performance and is
already 2 years old, so no. The winner is Xperia 10 VI!
</p><!-- l. 44 --><p class='noindent'>I purchased it on <span class='underline'>Oct 30</span>, one day before Halloween.
</p>
<h3 class='sectionHead' id='low-effort-review'><a id='x1-1000'></a>Low Effort Review</h3>
<!-- l. 48 --><p class='noindent'>Phone is beautiful, light, and compact.<br class='newline' />Works as expected.<br class='newline' />Battery life is as good as expected.
</p>]]></description>
  </item>
  <item>
    <title>New Mail Server for @aubsebian.net</title>
    <link>https://aubsebian.net/daily-posts/2025-11-02_new-mail-server.html</link>
    <guid>https://aubsebian.net/daily-posts/2025-11-02_new-mail-server.html</guid>
    <pubDate>Sun, 02 Nov 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>When I obtained this domain, Cloudflare provided free email forwarding
service which allows me to receive emails headed to @aubsebian.net from
other email servers. At the time, Gmail was the only option and frankly,
it was quite convenient to use both Gmail and aubsebian emails on one
platform.
</p><!-- l. 13 --><p class='noindent'>Allowing multiple email accounts on one host email account is called aliasing, and the
setup was fairly  <a href='https://support.google.com/accounts/answer/185833?hl=en'>easy</a>. The problems besides privacy are slow synchronization/fetching
(one time I had to wait over one minute) and potential useless personalized
ads.
</p><!-- l. 16 --><p class='noindent'>I reached out to the company where I currently work part-time, the company was
started with email magazine service, but they are going to terminate it. Also, it does
not even support TLS encryption, which is actually surprising to hear in
2025.
</p><!-- l. 19 --><p class='noindent'>I ultimately switched to  <a href='https://www.sakura.ad.jp/corporate/en/'>Sakura Internet</a> (or this  <a href='https://w.wiki/FuPf'>Japanese Wikipedia page</a>), which
is a Japanese cloud and hosting service significantly backed by the government.
Interestingly, the government also began using it as its internal cloud service since
2023.
</p><!-- l. 22 --><p class='noindent'>The fetching speed is like instant. By the way, I have PGP key available as well (see
homepage).
</p>]]></description>
  </item>
  <item>
    <title>X61 with EXWM (Emacs X Window Manager)</title>
    <link>https://aubsebian.net/daily-posts/2025-10-25_X61-with-EXWM.html</link>
    <guid>https://aubsebian.net/daily-posts/2025-10-25_X61-with-EXWM.html</guid>
    <pubDate>Sat, 25 Oct 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>My beloved ThinkPad X61 is going to have a “software” upgrade.
</p><!-- l. 12 --><p class='noindent'>For a long time it has been running  <a href='https://en.wikipedia.org/wiki/Void_Linux'>Void Linux</a> with  <a href='https://en.wikipedia.org/wiki/I3_(window_manager)'>i3wm</a>, then I switched to
Debian 12 with TTY by default. While the idea was to minimize the time
using any graphical interfaces, there are just too much demand on viewing
PDFs and browsing. Besides, rendering Japanese on TTY requires extra
work.
</p><!-- l. 16 --><p class='noindent'>So, I did some research and found  <a href='https://wiki.archlinux.org/title/EXWM'>EXWM (Emacs X Window Manager)</a>, which
makes Emacs THE window manager itself. Surprising, I have no complaints at all. It
works fantastic.
</p><!-- l. 20 --><p class='noindent'>I chose Debian 13 as the base system mostly for the stability. For newer software
compilation which requires newer build tools I will just temporarily use the unstable
branch.
</p><!-- l. 23 --><p class='noindent'>Fun fact: in EXWM, exiting Emacs (like exiting any Emacs) is basically logging out,
so it’s important to get used to debugging within Emacs without closing/opening like
a noob.
</p>]]></description>
  </item>
  <item>
    <title>Selfhost Notion</title>
    <link>https://aubsebian.net/daily-posts/2025-08-13_Selfhost-Notion.html</link>
    <guid>https://aubsebian.net/daily-posts/2025-08-13_Selfhost-Notion.html</guid>
    <pubDate>Wed, 13 Aug 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>As Notion is  <a href='https://notionmastery.com/security-and-privacy-concerns-in-notion/'>being aggressive with data collection</a>, I decided to switch to an
alternative that allows me to self-host.  <a href='https://www.getoutline.com/'>Outline</a> is something similar to Notion, with
lacks of some popular features such as calendar and database but fortunately I don’t
need them anyways.
</p><!-- l. 13 --><p class='noindent'>This website is hosted by Cloudflare, which is integrated with GitHub, while
subdomains, for example Outline in this case, are locally hosted. Since it is my first
time locally hosting a website, it did take some time to make it work. Mostly it was
nginx; configuring it was not so intuitive.
</p><!-- l. 17 --><p class='noindent'>I’m using it as my solution of note taking and documenting research progress.
</p>
<figure class='figure'>
<img src='https://aubsebian.net/daily-posts/figs/2025-08-13-1.png' alt='screenshot' style='width:75%' />
<figcaption class='caption'>screenshot</figcaption>
</figure>]]></description>
  </item>
  <item>
    <title>Focus a window on mouse hover without raising in Windows</title>
    <link>https://aubsebian.net/technical-notes/windows-focus-window-without-raising.html</link>
    <guid>https://aubsebian.net/technical-notes/windows-focus-window-without-raising.html</guid>
    <pubDate>Mon, 21 Apr 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>Reference:  <a href='https://superuser.com/questions/1540858/how-to-configure-windows-10-for-keyboard-focus-follows-mouse-without-clicking'>this link</a>.
</p><!-- l. 12 --><p class='noindent'>On Linux this is a standard feature, but on Windows you have to open the Registry Editor.
Open the Registry Editor, navigate to <code class='verb'>HKEY_CURRENT_USER\Control Panel\Desktop</code>,
and edit the <code class='verb'>UserPreferenceMask</code> value as follows: 
</p>
<pre class='fancyvrb' id='fancyvrb1'><a id='x1-4r1'></a>9F 3E 07 80 12 00 00 00</pre>
<!-- l. 19 --><p class='noindent'>Next, in the same location, edit the <code class='verb'>ActiveWndTrkTimeout</code> value as follows:

</p>
<pre class='fancyvrb' id='fancyvrb2'><a id='x1-7r1'></a>150 (set the base to decimal)</pre>
<!-- l. 25 --><p class='noindent'>Note that 150 here is the delay in milliseconds before focus kicks in, so set it to
whatever you like. Once you’re done, log out and log back in.
</p>
<h3 class='sectionHead' id='if-you-want-raiseonhover'><a id='x1-1000'></a>If you want <span class='ec-lmri-10'>raise</span>-on-hover</h3>
<!-- l. 30 --><p class='noindent'>If you want the window to come to the front when the cursor moves over it, go to
<code class='verb'>Control Panel\Ease of Access\Ease of Access Center\Make the mouse easier to use</code>
and check “Activate a window by hovering over it with the mouse”.
</p>]]></description>
  </item>
  <item>
    <title>Emacs Spell-Checking (Hunspell) in Windows</title>
    <link>https://aubsebian.net/technical-notes/emacs-spell-checking-in-windows.html</link>
    <guid>https://aubsebian.net/technical-notes/emacs-spell-checking-in-windows.html</guid>
    <pubDate>Mon, 14 Apr 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>Most GNU/Linux distributions ship with a Western-language spell checker like Ispell
out of the box. Of course, Windows doesn’t make such a convenient tool easy to
install.
</p><!-- l. 13 --><p class='noindent'>I use Ispell for English spell-checks in Emacs, but getting the same thing working on
Windows was not so easy, so I’m writing it down.
</p><!-- l. 15 --><p class='noindent'>First, it seems that on Windows Hunspell is more popular (or maybe easier to
install). I thought there could be no big difference between them so I chose to go with
Hunspell.
</p>
<h3 class='sectionHead' id='procedures'><a id='x1-1000'></a>Procedures</h3>
<!-- l. 20 --><p class='noindent'>Open PowerShell as administrator and run the following, one at a time:

</p>
<pre class='fancyvrb' id='fancyvrb1'><a id='x1-1004r1'></a>Set-ExecutionPolicy Bypass 
<a id='x1-1006r2'></a>Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('http://internal/odata/repo/ChocolateyInstall.ps1'))</pre>
<!-- l. 26 --><p class='noindent'>Next, install Hunspell via <code class='verb'>choco</code>. 
</p>
<pre class='fancyvrb' id='fancyvrb2'><a id='x1-1009r1'></a>choco install hunspell.portable</pre>
<!-- l. 31 --><p class='noindent'>Then download the English (or whichever language you want) dictionary from
<a href='https://extensions.libreoffice.org/en/extensions/show/english-dictionaries'>LibreOffice Extensions</a>. The downloaded file is an <code class='verb'>oxt</code>, but it’s basically a ZIP, so
extract it one way or another. Place the relevant dictionary files (<code class='verb'>.aff</code> and <code class='verb'>.dic</code>) into
a directory that is on Hunspell’s search path. You can find Hunspell’s path by
running 
</p>
<pre class='fancyvrb' id='fancyvrb3'><a id='x1-1012r1'></a>hunspell -D</pre>
<!-- l. 38 --><p class='noindent'>Then run 
</p>
<pre class='fancyvrb' id='fancyvrb4'><a id='x1-1015r1'></a>hunspell -D -d en_US NUL</pre>
<!-- l. 42 --><p class='noindent'>to install the dictionary. Replace <code class='verb'>en_US</code> with whichever language you want to
install.
                                                                  

                                                                  
</p><!-- l. 44 --><p class='noindent'>That’s the setup done. Now just tweak your <code class='verb'>.emacs</code> and you should be good. If you
installed Hunspell via <code class='verb'>choco</code>, it’s added to PATH automatically; otherwise, either
add it to PATH manually or put the full path on the third line. 
</p>
<pre class='fancyvrb' id='fancyvrb5'><a id='x1-1020r1'></a>(setenv "LANG" "en_US") 
<a id='x1-1022r2'></a>(setenv "DICTIONARY" "en_US") 
<a id='x1-1024r3'></a>(setq-default ispell-program-name "hunspell.exe")</pre>
<!-- l. 52 --><p class='noindent'>This might just work, but on newer versions of Emacs it sometimes doesn’t, for some
reason. The error looks like this: 
</p>
<pre class='fancyvrb' id='fancyvrb6'><a id='x1-1027r1'></a>ispell-phaf: No matching entry for en_US in ‘ispell-hunspell-dict-paths-alist’.</pre>
<!-- l. 56 --><p class='noindent'>According to  <a href='https://vxlabs.com/2023/11/14/fixing-hunspell-1.7.0-for-emacs-29-on-windows/'>this page</a>, the fix is to patch <code class='verb'>ispell.el</code>.
</p><!-- l. 58 --><p class='noindent'>At the moment that’s line 1127: 
</p>
<pre class='fancyvrb' id='fancyvrb7'><a id='x1-1031r1'></a>- (affix-file (concat dict ".aff"))) 
<a id='x1-1033r2'></a>+ (affix-file (concat (file-name-sans-extension dict) ".aff")))</pre>
<!-- l. 63 --><p class='noindent'>Apply the patch, then finally run <code class='verb'>M-x byte-compile-file path/to/ispell.el</code>, and
it should work.
</p>]]></description>
  </item>
  <item>
    <title>Understanding Distance-Based Instruction Set Architecture</title>
    <link>https://aubsebian.net/technical-notes/understanding-clockhand-distance-based-isa.html</link>
    <guid>https://aubsebian.net/technical-notes/understanding-clockhand-distance-based-isa.html</guid>
    <pubDate>Sun, 13 Apr 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>Article:  <a href='https://www.sigarch.org/distance-based-isa-for-efficient-register-management/'>Distance-Based ISA for Efficient Register Management</a>
</p>
<h3 class='sectionHead' id='challenges-in-current-register-management'><a id='x1-1000'></a>Challenges in current register management</h3>
<!-- l. 14 --><p class='noindent'>Despite the fact that modern processors’ insane capabilities of parallel instruction
executions and scheduling capabilities, they still face the problem of register
renaming process, a process that follows right after decoding process.
</p><!-- l. 16 --><p class='noindent'>
</p>
<h4 class='subsectionHead' id='what-does-register-renaming-do'><a id='x1-2000'></a>What does register renaming do?</h4>
<!-- l. 18 --><p class='noindent'>Register Renaming is a technique used in modern CPUs (1995 and later) to avoid
false data dependencies during instruction execution, especially in out-of-order
execution. Consider the following scenario: 
</p>
<pre class='fancyvrb' id='fancyvrb1'><a id='x1-2004r1'></a>R1 = R2 + R3 ; Instruction A 
<a id='x1-2006r2'></a>R2 = R4 + R5 ; Instruction B</pre>
<!-- l. 26 --><p class='noindent'>Here, instruction B writes <code class='verb'>R4 + R5</code> into <code class='verb'>R2</code>, which is read in instruction A. When
executing several instructions at once, such as parallel and superscalar execution,
WAR (Write After Read) hazard might happen to <code class='verb'>R2</code>, meaning that the
value of <code class='verb'>R2</code> can be written in instruction B before it is read in instruction
A.
</p><!-- l. 29 --><p class='noindent'>By reserving more physical registers than logical ones, <code class='verb'>R2</code> in instruction B can be
stored somewhere else to avoid WAR. For example: 
</p>
<pre class='fancyvrb' id='fancyvrb2'><a id='x1-2010r1'></a>P1 = P2 + P3 ; Instruction A: R1 → P1, R2 → P2, R3 → P3 
<a id='x1-2012r2'></a>P9 = P4 + P5 ; Instruction B: R2 → P9</pre>
<!-- l. 37 --><p class='noindent'>In summary, the main use of register renaming is for out-of-order execution to
maximize throughput. Remind that out-of-order instructions is different from
re-ordered instructions for pipelining, since the latter does not require additional
physical registers.
                                                                  

                                                                  
</p><!-- l. 40 --><p class='noindent'>
</p>
<h4 class='subsectionHead' id='the-challenges-of-register-renaming'><a id='x1-3000'></a>The challenges of register renaming</h4>
<!-- l. 42 --><p class='noindent'>Register renaming demands heavily multi-ported memory, which consumes
substantial chip area and power, making it difficult to scale the rename width
(number of instructions that can be renamed per cycle) easily. Additionally,
maintaining the mapping between logical and physical registers is inherently
complex. For instance, in an event of a branch misprediction, all renaming tied to the
mispredicted instructions must be reverted, requiring the mapping table to be
restored to its prior state. As the Re-order buffer (ROB) grows, these overheads
increase proportionally.
</p><!-- l. 47 --><p class='noindent'>
</p>
<h3 class='sectionHead' id='distancebased-instruction-set-architecture-in-a-nutshell'><a id='x1-4000'></a>Distance-based instruction set architecture in a nutshell</h3>
<!-- l. 49 --><p class='noindent'>Instead of reusing registers, distance-based instruction set architecture (ISA) uses a
sliding buffer to store the results of instructions. The result of each instruction is
stored in the sliding buffer (reserved physical registers) so that register renaming is
unnecessary. Consider the following example: 
</p>
<pre class='fancyvrb' id='fancyvrb3'><a id='x1-4003r1'></a>X = [2] + [3]</pre>
<!-- l. 57 --><p class='noindent'>where <code class='verb'>[2]</code> means “use the result of the instruction that is 2 instructions before me”.
The indecies are managed by a register pointer (RP), indicating the offset between
“current instruction” and “previous instructions”. Since there is a limited number
of physical registers. RP resets its value every time it reaches the buffer’s
capacity.
</p><!-- l. 61 --><p class='noindent'>This approach indeed eliminates the need for register-renaming hardware,
thereby resolving the bottlenecks associated with traditional register-based
architectures.
</p><!-- l. 63 --><p class='noindent'>Also, as shown in the article, there are other methods that implements this novel
ISA, such as Clockhands and TURBULENCE. Nevertheless, these methods all
relate to the author of STRAIGHT: Hidetsugu IRIE from The University of
Tokyo.
</p>]]></description>
  </item>
  <item>
    <title>Disabling IM (IBus, etc.) on Linux</title>
    <link>https://aubsebian.net/technical-notes/disable-im-emacs.html</link>
    <guid>https://aubsebian.net/technical-notes/disable-im-emacs.html</guid>
    <pubDate>Wed, 26 Feb 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>In Emacs, I can use <code class='verb'>mozc-emacs-helper</code> to type Japanese without triggering system
input method (IM). However since I don’t have “use different input method for each
window” enabled because it kinds of fucks my brain, system IM sometimes remains
active in Emacs. The fix is to edit the <code class='verb'>Exec</code> line in Emacs’ <code class='verb'>.desktop</code> file as
follows.
</p>
<pre class='fancyvrb' id='fancyvrb1'><a id='x1-4r1'></a>Exec=env XMODIFIERS=@im=none GTK_IM_MODULE=xim QT_IM_MODULE=xim /usr/bin/emacs %F</pre>
<!-- l. 18 --><p class='noindent'>This problem does not happen in xfcee though. Turning on system IM Mozc using its
keybind directly turns on Mozc inside of Emacs.
</p>]]></description>
  </item>
  <item>
    <title>Python Virtual Environment</title>
    <link>https://aubsebian.net/technical-notes/python-virtual-environment.html</link>
    <guid>https://aubsebian.net/technical-notes/python-virtual-environment.html</guid>
    <pubDate>Wed, 05 Feb 2025 00:00:00 +0900</pubDate>
    <description><![CDATA[<!-- l. 10 --><p class='noindent'>The default way of creating a Python virtual environment is through something like
the following command: 
</p>
<pre class='fancyvrb' id='fancyvrb1'><a id='x1-4r1'></a>python3 -m venv .virtual-env</pre>
<!-- l. 16 --><p class='noindent'>where you cannot effectively specifcy which version of Python for the specific virtual
environment. Conventionally, you can specify it by a README file, but this takes
extra steps.
</p><!-- l. 19 --><p class='noindent'> <a href='https://github.com/pyenv/pyenv'><code class='verb'>pyenv</code></a> is a tool which exactly solves this problem. Nevertheless, it is generally a
great tool for handling multiple versions of Python.
</p><!-- l. 22 --><p class='noindent'>For example if I want to create a virtualenv with a specific Python version, I can
achieve this by doing: 
</p>
<pre class='fancyvrb' id='fancyvrb2'><a id='x1-7r1'></a>pyenv virtualenv 3.12.8 virtualenv-test</pre>
<!-- l. 28 --><p class='noindent'>Then, activate it whatever directory I am at in the shell: 
</p>
<pre class='fancyvrb' id='fancyvrb3'><a id='x1-10r1'></a>pyenv activate virtualenv-test</pre>
<!-- l. 35 --><p class='noindent'>Read more about  <a href='https://github.com/pyenv/pyenv-virtualenv'>virtualenv</a> here.
</p>]]></description>
  </item>
</channel>
</rss>
