<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title/><link>https://eson-dev.github.io/</link><atom:link href="https://eson-dev.github.io/index.xml" rel="self" type="application/rss+xml"/><description/><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sat, 24 Jan 2026 00:00:00 +0000</lastBuildDate><image><url>https://eson-dev.github.io/media/icon_hu_51b0eba646ebd5b3.png</url><title/><link>https://eson-dev.github.io/</link></image><item><title>Investment Accounts for Newcomers to Canada</title><link>https://eson-dev.github.io/blog/canadian-investing/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/canadian-investing/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This article is strongly opinionated based on personal research and experience.
I am not a certified professional who can provide financial advice.
Please do your own research and due diligence as your mileage may vary.
I am not affiliated with any financial institutions. Any referral links I share here
are generally available to all clients of the service provider.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;TFSA, RRSP, FHSA&amp;hellip; you&amp;rsquo;ve probably been seeing these acronyms for the various registered account in Canada.
In this post, I&amp;rsquo;ll tell you what I know about these accounts, so you can decide which one you should open first.&lt;/p&gt;
&lt;p&gt;But first, as a newcomer you should understand the &lt;strong&gt;progressive tax system&lt;/strong&gt; in Canada.
Some high income earners say &lt;em&gt;&amp;ldquo;I pay 40% of my income as taxes&amp;rdquo;&lt;/em&gt; which is not &lt;em&gt;exactly&lt;/em&gt; true -
You only pay the 40% for your &lt;strong&gt;next dollar earned&lt;/strong&gt; after reaching a certain income bracket.&lt;/p&gt;
&lt;p&gt;Watch the video from this YouTuber for a good explanation with examples:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GShKBkv2xY8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;(
has a nice tax rates &amp;amp; tax brackets table)&lt;/p&gt;
&lt;p&gt;You should also note that, beside your employment income, bank interests, dividends
and capital gains are all taxed differently.&lt;/p&gt;
&lt;p&gt;Once you understand how taxes work, the question become:
how can you &lt;em&gt;legally&lt;/em&gt; minimize or pay no investment taxes with
all the various registered accounts? The following order would be a good start.&lt;/p&gt;
&lt;h2 id="tax-free-savings-account-tfsa"&gt;Tax-Free Savings Account (TFSA)&lt;/h2&gt;
&lt;p&gt;There is a common misunderstanding that, because of the word &amp;ldquo;Savings&amp;rdquo;,
a
is meant to be &lt;em&gt;just&lt;/em&gt; for saving cash to earn bank interest.
What&amp;rsquo;s worse is to treat it as a &amp;ldquo;bank account&amp;rdquo; and move money in and out regularly.&lt;/p&gt;
&lt;p&gt;The truth is, TFSA allows you to put after-tax money in for investing, and all your gains are completely tax free.
You could turn $10,000 into a million and pay absolutely zero taxes! 💰&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s best for newcomers is you can open TFSA right after you become a tax resident of Canada,
i.e. when you get your Social Insurance Number (SIN) from Service Canada.
However, as most YouTube videos won&amp;rsquo;t mention, you only start accumulating TFSA contribution room
on the year you become a tax resident, &lt;em&gt;not&lt;/em&gt; from 2009 or the year you turn 18!
So if you moved to Canada in 2025 when you&amp;rsquo;re 30, in 2026 you&amp;rsquo;ll only have $7000 (2025) + $7000 (2026) =
$14,000 of total room.&lt;/p&gt;
&lt;p&gt;TFSA gives you the flexibility to withdraw money any time (by selling your investments),
but note that you&amp;rsquo;ll only gain back the room in &lt;strong&gt;January of the following year&lt;/strong&gt;.
This is very important and is often a rookie mistake that result in penalties from CRA.&lt;/p&gt;
&lt;p&gt;Example: In January 2025, you put $7,000 into TFSA (maximum allowed for 2025).
You had an emergency in June and had to withdraw $2,000.
If you put the $2,000 back in July, you would be treated as having contributed
&lt;strong&gt;$7,000 (Jan) + $2,000 (Jul) = $9,000&lt;/strong&gt; !
CRA will tax you 1% for the extra $2,000 every month until you withdraw it back down.
Therefore, you must wait until January 2026 to put back the $2,000.&lt;/p&gt;
&lt;h2 id="registered-retirement-savings-plan-rrsp"&gt;Registered Retirement Savings Plan (RRSP)&lt;/h2&gt;
&lt;p&gt;You can only open a
account after filing your first year&amp;rsquo;s income tax and
receiving your notice of assessment, which tells you how much contribution room you have.&lt;/p&gt;
&lt;p&gt;In a nutshell, RRSP allows you to reduce your taxable income during high earning years, and only withdrawing
the fund when your retire and have lower income, essentially deferring the taxes.
There are lots of YouTube videos on RRSP so I will not elaborate further here.&lt;/p&gt;
&lt;p&gt;Whether to start using a RRSP often depends on your income level, but it&amp;rsquo;s generally advisable once you&amp;rsquo;re
above the 30% tax bracket (~$60K). Using a $100,000 gross income example in Quebec, you can see that even
though your take-home pay reduced, your &lt;strong&gt;total wealth still increased&lt;/strong&gt; because of RRSP
(&lt;em&gt;numbers are approximate and not accurate calculation&lt;/em&gt;):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Scenario A: No RRSP Contribution&lt;/th&gt;
&lt;th&gt;Scenario B: $10,000 RRSP Contribution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gross Salary&lt;/td&gt;
&lt;td&gt;$100,000&lt;/td&gt;
&lt;td&gt;$100,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RRSP Contribution&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-$10,000&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Taxable Income&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$100,000&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$90,000&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QPP, EI, and QPIP&lt;/td&gt;
&lt;td&gt;-$6,300&lt;/td&gt;
&lt;td&gt;-$6,300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimated Income Tax&lt;/td&gt;
&lt;td&gt;-$25,000&lt;/td&gt;
&lt;td&gt;-$21,300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Take-home Pay&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$68,700&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$62,400&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Money in RRSP&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$10,000&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Take-home Pay + RRSP Savings&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$68,700&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$72,400&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If your company offers a Group RRSP with employer matching, you should always take it as it&amp;rsquo;s essentially
&lt;strong&gt;free money from your employer&lt;/strong&gt;. 🤑
But note that the employer matching also count towards your contribution room,
so you should watch out and don&amp;rsquo;t over contribute.&lt;/p&gt;
&lt;p&gt;A question new immigrants usually have:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;What if I don&amp;rsquo;t retire in Canada? But this is a &amp;lsquo;retirement&amp;rsquo; plan!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, the good news is RRSP is &lt;strong&gt;not a locked-in pension plan&lt;/strong&gt;.
The money is always yours to withdraw, &lt;strong&gt;even before retirement age&lt;/strong&gt;,
you just have to pay taxes for the withdrawn amount, treating them as your &amp;ldquo;earned income&amp;rdquo; (salary).
You can always wait until you become a non-resident (NR) and withdraw it with a lower tax rate
than when you were at &amp;gt; 40% marginal tax rate.
A professional financial planner will be able to work out the withdrawal strategy for you.&lt;/p&gt;
&lt;h3 id="using-rrsp-for-home-purchase-"&gt;Using RRSP for Home Purchase 🏠&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;re buying your first home, you can withdraw up to $60,000 from RRSP &lt;strong&gt;tax-free&lt;/strong&gt;,
and pay them back &lt;strong&gt;interest-free&lt;/strong&gt; over 15 years!
Refer to the
website for more information.&lt;/p&gt;
&lt;h2 id="first-home-savings-account-fhsa"&gt;First Home Savings Account (FHSA)&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Note: I&amp;rsquo;ve never owned an FHSA since it was only introduced after I bought my first home,&lt;/em&gt;
&lt;em&gt;so I&amp;rsquo;m not writing this with first-hand experience.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The
,
introduced in 2023, allows you to combine the &amp;ldquo;best of both worlds&amp;rdquo; of RRSP and TFSA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contributions are tax-deductible (like RRSP)&lt;/li&gt;
&lt;li&gt;Qualifying withdrawals are tax-free (like TFSA)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you plan to buy a home in Canada, it&amp;rsquo;s a no-brainer to open an FHSA.
It can stay open for up to 15 years, and even if you don&amp;rsquo;t end up buying a home,
you can still transfer it to your RRSP.&lt;/p&gt;
&lt;h2 id="registered-education-savings-plan-resp"&gt;Registered Education Savings Plan (RESP)&lt;/h2&gt;
&lt;p&gt;If you have children, you should definitely take advantage of RESP to save for their education.
For each child, there&amp;rsquo;s a maximum lifetime contribution limit of $50,000.&lt;/p&gt;
&lt;p&gt;Each year, the government will match your contribution with incentives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Canada Education Savings Grant (CESG)&lt;/strong&gt; - 20% match, up to $500&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quebec Education Savings Incentive (QESI)&lt;/strong&gt; - 10% match, up to $250 (QC resident only)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Therefore, if you contribute at least $2,500 each year to the RESP,
you'll receive the maximum incentive ($500 + $250 = $750) allowed for the year (free money! 💵).&lt;/p&gt;
&lt;p&gt;Your contribution plus the grant money can be invested and grow tax-deferred.
When you finally withdraw from the RESP for your child&amp;rsquo;s tertiary education,
it&amp;rsquo;ll be taxed under their income level, which should be minimal to none.&lt;/p&gt;
&lt;h2 id="non-registered-account"&gt;Non-Registered Account&lt;/h2&gt;
&lt;p&gt;Once you&amp;rsquo;ve maxed out contribution to all the registered accounts above, and still have
extra savings to invest, then you can use a non-registered (taxable) account.
As you can expect, interests, dividends and capital gains in non-registered account
are taxable, so this is usually the last one in your list to use.&lt;/p&gt;
&lt;h3 id="note-on-capital-gains-and-losses"&gt;Note on Capital Gains and Losses&lt;/h3&gt;
&lt;p&gt;As the time of writing this (April 2026), first $250,000 of capital gains are subject to
50% inclusion rate. So if you realized a $10,000 capital gain, only $5,000 is included
in your taxable income, and you don't pay taxes for the other $5,000.
This makes capital gain taxes the &lt;em&gt;&amp;ldquo;best&amp;rdquo;&lt;/em&gt; type of taxes to pay.
Furthermore, if you incurred capital losses, you can use it to offset capital gains
from the past 3 years, or carry it forward indefinitely to offset future capital gains.&lt;/p&gt;
&lt;p&gt;However, &lt;strong&gt;capital losses realized in registered accounts are lost forever&lt;/strong&gt;.
So if you buy high risk assets in a TFSA or RRSP and lose all your money,
you don&amp;rsquo;t get to claim the losses or gain back any contribution room.
Therefore, it&amp;rsquo;s better to make those high risk trades in a non-registered account.&lt;/p&gt;
&lt;h2 id="referral-code"&gt;Referral Code&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re ready to invest, and would like to open an account, please feel free to use
my referral links or codes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
- Referral code &lt;code&gt;SVRETW&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
- Referral code &lt;code&gt;376129710438386&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Personal Banking 101 for Newcomers to Canada</title><link>https://eson-dev.github.io/blog/canadian-banking-101/</link><pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/canadian-banking-101/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This article is strongly opinionated based on personal experience.
I am not a certified professional who can provide financial advice.
Please do your own research and due diligence as your mileage may vary.
I am not affiliated with any financial institutions. Any referral links I share here
are generally available to all clients of the service provider.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;When I first moved to Montreal, I had no idea about the financial systems in Canada.
I randomly picked one of the big banks and opened an account with them as soon as I got my Social Insurance Number (SIN).
It turned out to be quite a mistake, which fortunately didn&amp;rsquo;t cost much, and I was able to move things around
and optimize my personal finance setup over the years. I hope this post will help you if you are new to Canada. 🍁&lt;/p&gt;
&lt;h3 id="-your-first-bank-accounts"&gt;🏦 Your First Bank Accounts&lt;/h3&gt;
&lt;p&gt;Unlike in Singapore, where most people use a &lt;strong&gt;savings account&lt;/strong&gt; for everything, there is a big difference
between &lt;strong&gt;chequing&lt;/strong&gt; and &lt;strong&gt;savings&lt;/strong&gt; accounts in Canada:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;💵 &lt;strong&gt;Chequing account&lt;/strong&gt;: Day-to-day transactions, e.g. salary deposit, pre-authorized bill payments,
sending money (Interac e-Transfer) etc.
Comes with a cheque book (might not be free). Negligible interest.&lt;/li&gt;
&lt;li&gt;💰 &lt;strong&gt;Savings account&lt;/strong&gt;: Higher interest rate but limited usage. Transactions are usually charged with a fee, thus unsuitable for daily transactions.
Transferring fund to chequing account on the same bank is free.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Almost all banks charge a &lt;strong&gt;monthly account fee&lt;/strong&gt; 💸, but you can get it waived if you maintain enough &lt;strong&gt;daily&lt;/strong&gt; balance.&lt;/p&gt;
&lt;p&gt;Based on personal experience, here is what I would do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start with one of the
,
avoid credit unions or local/provincial institutions. It&amp;rsquo;ll make your life easier if you move somewhere else.&lt;/li&gt;
&lt;li&gt;Review all available chequing accounts of the banks to understand their &lt;strong&gt;fees and benefits&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Banks are competing for customers, so be sure to take advantage of their &lt;strong&gt;newcomer offer / bonus&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If you have enough cash to maintain a high enough daily balance, pick a &lt;strong&gt;high tier chequing account&lt;/strong&gt; to
combine with a &lt;strong&gt;decent credit card&lt;/strong&gt; 💳 and get the annual fee waived (more on credit cards below).
&lt;ul&gt;
&lt;li&gt;Example 1:
&lt;/li&gt;
&lt;li&gt;Example 2:
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;You don&amp;rsquo;t really get much interest from their &amp;ldquo;high interest&amp;rdquo; savings account, but you can open one for free anyway.
There are better ways to earn more interest, which I will elaborate later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-credit-cards-and-borrowing"&gt;💳 Credit Cards and Borrowing&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Personal Finance 101: You should only use credit cards if you can &lt;strong&gt;pay them fully&lt;/strong&gt; each month!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When you first arrive in Canada, you have no
.
Building your credit history is very important as it is how financial institutions assess your ability to repay loans.
Without one, you won&amp;rsquo;t even be able to take a mortgage to buy your first home.
Getting your first credit card is usually the first step to get your file opened with the credit bureaus
(
and
).
After that, you should use your card(s) regularly (and pay them off, of course) to start building your credit score.&lt;/p&gt;
&lt;p&gt;As you have no credit history, you&amp;rsquo;ll have to use your job offer to proof to the bank that you have the means to pay your credit card bills.
Banks can also look at household income, so the accompanying spouse should also get &lt;strong&gt;their own card&lt;/strong&gt; even without a job,
in order to start building their own credit history too.
It is worth noting that supplementary cards have no affect on the spouse&amp;rsquo;s credit history, they need to have
at least one card &lt;em&gt;under their own name&lt;/em&gt; to get the credit file rolling.&lt;/p&gt;
&lt;p&gt;You can easily start with a no-fee credit card but the benefits are usually minimal. If you have a high tier chequing account,
like I mentioned above, and meet the income requirement, you can then take advantage of a better card from the same bank.
Shopping and dining in Canada is mostly cashless, so if I&amp;rsquo;m going to pay, I might as well pay it with a credit
(not debit) card and rack up some rewards (cashback or points).&lt;/p&gt;
&lt;p&gt;Furthermore, banks often run special offers on credit cards too, like the screenshot below.
This is essentially &amp;ldquo;free money&amp;rdquo; as you no doubt have a lot to spend on when you first arrive in Canada
(furniture, appliances etc.), as long as you can qualify for the card and pay the bill off later.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="./credit-card-offer.png" alt="Credit card special offer" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Here are some of my favourite cards for daily spending:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
(Note: Amex isn&amp;rsquo;t accepted everywhere)&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Depending on your life style and needs, you can get another card that is more for traveling with free insurance coverage etc.
However, I would focus on getting rewards from basic needs first (groceries, restaurants, utility bills etc.).&lt;/p&gt;
&lt;h3 id="-getting-the-best-bang-for-the-buck"&gt;🪙 Getting the Best Bang for the Buck&lt;/h3&gt;
&lt;p&gt;By now, hopefully you&amp;rsquo;ve settled down and have your accounts and credit cards with a brick-and-mortar bank.
Most likely, you&amp;rsquo;ve also seen ads on some of the &lt;em&gt;online-only&lt;/em&gt; banks, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
(Link contains referral code: &lt;code&gt;SVRETW&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
(Referral code: &lt;code&gt;52277300S1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They can be a good alternative to &lt;strong&gt;earn higher interest&lt;/strong&gt; for your savings, and sometimes you can also get
another credit card from them. The downside is you can only get customer support via phone, online chat or email,
and some banks like Tangerine doesn&amp;rsquo;t support international wire transfers (SWIFT/BIC).
Because of this, I would not use them as my &lt;em&gt;one and only&lt;/em&gt; bank.
Please do your own research to analyze if a secondary account on these online banks is ideal for you.
Personally, I don&amp;rsquo;t mind managing more accounts to take advantages of the benefits,
but there are others who want to keep the number of accounts minimal for simplicity and peace of mind.&lt;/p&gt;
&lt;h3 id="-investments"&gt;📈 Investments&lt;/h3&gt;
&lt;p&gt;Once you have enough savings accumulated, it&amp;rsquo;s time to think about investment for retirement.&lt;/p&gt;
&lt;p&gt;I will write about investments in a separate post as there are many different types of accounts involved.
But to get started, you can look into
to see if it is right for you.
As a newcomer, you normally &lt;em&gt;should not&lt;/em&gt; start with a non-registered (taxable) investment account.&lt;/p&gt;
&lt;h3 id="-more-resources"&gt;🌐 More resources&lt;/h3&gt;
&lt;p&gt;I hope this post has been helpful to you. You can find a lot of guides online, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
(YouTube channel focusing on personal finance)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>WARLOCK</title><link>https://eson-dev.github.io/projects/warlock/</link><pubDate>Thu, 11 Dec 2025 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/projects/warlock/</guid><description>&lt;p&gt;My current project at Invoke Studios has finally been revealed during The Game Awards 2025:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/fVrHLZyoKxQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;In WARLOCK, you take on the role of Kaatri, a veteran warrior, in a new third-person action-adventure set in a dark fantasy open world inspired by Dungeons &amp;amp; Dragons. Make a pact to wield forbidden magic to overcome a wide range of challenges. In exploration, every spell is a key that unlocks mysteries in a beautiful yet unsettling world. When facing enemies, magic and melee combine for a combat experience that is both tactical and visceral.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Follow us on social media &lt;code&gt;@warlockthegame&lt;/code&gt; to receive updates!&lt;/p&gt;</description></item><item><title>Fundraising for my son</title><link>https://eson-dev.github.io/blog/support-raphael/</link><pubDate>Tue, 05 Aug 2025 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/support-raphael/</guid><description>&lt;p&gt;My 2-year old son was recently diagnosed with Autism Spectrum Disorder (ASD).&lt;/p&gt;
&lt;p&gt;My wife and I have created a
to support his journey with autism:&lt;/p&gt;
&lt;div class="gfm-embed" data-url="https://www.gofundme.com/f/raphael-autism/widget/large?sharesheet=undefined&amp;attribution_id=sl:85b9c450-89d2-45d9-b2e4-d6a920690715"&gt;&lt;/div&gt;
&lt;script defer src="https://www.gofundme.com/static/js/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Of course, there is absolutely no obligation to donate. Please only give what you can.
Even just sharing this with your friends and family would mean a lot to us. &amp;#x1f64f;&lt;/p&gt;</description></item><item><title>Joining Invoke Studios as Principal Online Programmer</title><link>https://eson-dev.github.io/blog/invoke-job/</link><pubDate>Fri, 27 Sep 2024 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/invoke-job/</guid><description>&lt;p&gt;After 3 eventful years at Haven, I&amp;rsquo;ve decided to take on an opportunity to advance as a Principal Online Programmer at
.&lt;/p&gt;
&lt;p&gt;Invoke is one of the game studios under the
(WotC) family, a subsidiary of
. WotC owns popular brands such as &lt;em&gt;Magic: The Gathering&lt;/em&gt; and &lt;em&gt;Dungeons &amp;amp; Dragons&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m joining a group of talented people working on an unannounced project, and will be developing its online tech stack for the years to come. I&amp;rsquo;ll be taking on more responsibilities compared to my previous jobs and I&amp;rsquo;m excited for the challenges ahead!&lt;/p&gt;
&lt;p&gt;It was very kind of Invoke to welcome me with a special video clip on their social media platforms (posts:
/
):&lt;/p&gt;
&lt;video autoplay loop &gt;
&lt;source src="https://eson-dev.github.io/blog/invoke-job/invoke-eson-intro.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;p&gt;Hopefully in the near future we&amp;rsquo;ll unveil the game we&amp;rsquo;re working on. Stay tuned!&lt;/p&gt;</description></item><item><title>Fairgame$</title><link>https://eson-dev.github.io/projects/fairgames/</link><pubDate>Wed, 24 May 2023 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/projects/fairgames/</guid><description>&lt;p&gt;Fairgame$ is a competitive multiplayer heist game coming to PS5 and PC.
The game was revealed during State of Play on May 24th, 2023.
Here is the CGI trailer:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/l1Jp4K02L1I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Read the reveal
to find out more.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: I worked on this game during my time with Haven Interactive studios (2021-2024).&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Starting a New Job at Haven Studios</title><link>https://eson-dev.github.io/blog/haven-job/</link><pubDate>Thu, 02 Dec 2021 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/haven-job/</guid><description>&lt;p&gt;I have officially joined
in November 2021 as a senior online software engineer.&lt;/p&gt;
&lt;p&gt;Haven was founded in March 2021 as an independent studio working on an unannounced new IP for PlayStation. You can read about
.&lt;/p&gt;
&lt;p&gt;For obvious reasons, I will not be able to share what I&amp;rsquo;m currently working on here. &amp;#x1f910; Stay tuned for official announcements.&lt;/p&gt;
&lt;p&gt;To know more about the studio, you can watch the Fireside Chat our CEO Jade Raymond had with GamesIndustry.biz in October 2021:
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/7v2DdXySBzM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>Rainbow Six Siege</title><link>https://eson-dev.github.io/projects/rainbow-six-siege/</link><pubDate>Sun, 31 Oct 2021 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/projects/rainbow-six-siege/</guid><description>&lt;p&gt;I worked in the online team of Rainbow Six Siege during my time with Ubisoft Montreal (2017-2021).&lt;/p&gt;</description></item><item><title>Improving WFH Setup with OBS Virtual Camera</title><link>https://eson-dev.github.io/blog/obs-virtual-camera/</link><pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/obs-virtual-camera/</guid><description>&lt;p&gt;Working from home has become the &lt;em&gt;new normal&lt;/em&gt; as the global COVID-19 pandemic situation continues. Apart from work, we are also using video calls more and more to stay in touch with friends and family.&lt;/p&gt;
&lt;p&gt;Joining work meetings with webcam on is becoming normal and it certainly helps with communication - facial expression, body language, nodding and other visual cues are helpful apart from voice. It is also pleasing to see the faces of co-workers whom we haven&amp;rsquo;t met in person for a long time.&lt;/p&gt;
&lt;p&gt;However, not everyone has a nice background and we also want to protect the privacy of our family members at home. Most video call applications (such as Microsoft Teams or Zoom) provide virtual backgrounds, or the ability to blur your background. Depending on your webcam and the actual environment, the effect might or might not be satisfactory.&lt;/p&gt;
&lt;p&gt;I decided to buy a
(green screen) so that I can &lt;em&gt;play&lt;/em&gt; with OBS Virtual Camera and still be able to store the green screen to save space.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Collapsible green screen"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_eec9530f07262230.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_a36807b2253c0a65.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_bbb4dc6e4e756949.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_eec9530f07262230.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;To improve video quality, I&amp;rsquo;ve also upgraded to a
, and I&amp;rsquo;m very happy with the image quality. (It also comes with an attachable privacy shutter)&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Logitech Brio"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_89a639a04d349746.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_6a2aeeb3c27698e1.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_e450c767acdd6f50.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_89a639a04d349746.webp"
width="760"
height="613"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Furthermore, this is also one of the few webcams which support Windows Hello Face sign in. See how it works:&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9YjiZjWttWQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br/&gt;
To make use of the green screen, I use OBS Virtual Camera like most people. You can find a lot of tutorials online with details. I&amp;rsquo;ll do a quick run-down here with my personal setup.&lt;/p&gt;
&lt;p&gt;First of all, with the webcam already added as a &amp;ldquo;Video Capture Device&amp;rdquo; in OBS, simply add a &amp;ldquo;Chroma Key&amp;rdquo; filter to the camera. The green screen is visible when the filter is hidden.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Green screen visible when OBS filter is hidden"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_1d1f7565f5d3d3ee.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_328f4dd4ed7ca208.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_9842354f57eb34aa.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_1d1f7565f5d3d3ee.webp"
width="760"
height="667"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;br/&gt;
Next, add an image or media source (video) to the scene in OBS and they will be displayed within the chromakey area.
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="OBS Scene with Image and Media"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_cfc34c7154ed3697.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_4daea5a2bc1051ac.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_5a4f6ee5189ca25d.webp 675w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_cfc34c7154ed3697.webp"
width="675"
height="169"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;How it looks with a static image (of Singapore &amp;#x1f1f8;&amp;#x1f1ec;):
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="OBS Screenshot"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_26d895a0ba7eda5d.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_f3808bc55f94cb3b.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_10b6bca2357c50aa.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_26d895a0ba7eda5d.webp"
width="760"
height="412"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;For some extra fun, download a loopable short video online and let it play in loop:&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZGKM1rALlVg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br/&gt;
With everything setup, simply click Start Virtual Camera under the Controls.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Start Virtual Camera"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/start-virtual-camera_hu_ecdaf4843311a58f.webp 283w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/start-virtual-camera_hu_ecdaf4843311a58f.webp"
width="283"
height="171"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Back in the video call application (Teams in this example), select &amp;ldquo;OBS Virutal Camera&amp;rdquo; instead of Logitech Brio:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Select OBS Virtual Camera"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/select-camera_hu_193ac7063bbe9209.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/select-camera_hu_1befa49166e02ffa.webp 415w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/select-camera_hu_193ac7063bbe9209.webp"
width="415"
height="179"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>My Work From Home Setup</title><link>https://eson-dev.github.io/blog/wfh-setup/</link><pubDate>Sat, 20 Jun 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/wfh-setup/</guid><description>&lt;p&gt;Like many others, I have been working from home since March 18&lt;sup&gt;th&lt;/sup&gt; due to the COVID-19 pandemic. Fortunately, as a software developer, all my work can be done on a computer, remoting into the workstation in office. In the past, I had also worked from home occassionally so my VPN is already setup way ahead.&lt;/p&gt;
&lt;p&gt;I thank my past self for building a good desktop PC (mostly for gaming though &amp;#x1f606;) which make the transition to fully &lt;em&gt;WFH&lt;/em&gt; a lot more comfortable.&lt;/p&gt;
&lt;p&gt;Most of my &amp;ldquo;gears&amp;rdquo; were shipped from Singapore when I moved to Montreal in 2017. I self-built this PC back in 2011, it&amp;rsquo;s almost 10 years old. Over the years, I have upgraded/replaced many components except the CPU and motherboard.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel Core i5-2400 CPU (Sandy Bridge)&lt;/li&gt;
&lt;li&gt;24 GB DDR3 RAM&lt;/li&gt;
&lt;li&gt;Zotac GeForce RTX 2060 6GB GDDR6 Graphic Card&lt;/li&gt;
&lt;li&gt;Total 700 GB SSD&lt;/li&gt;
&lt;li&gt;Total 7 TB HDD&lt;/li&gt;
&lt;li&gt;EVGA 650W fully modular PSU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the displays, I have two Dell monitors with a
pairing with an older 23&amp;quot; U2311H. Both are the &lt;em&gt;UltraSharp&lt;/em&gt; series from Dell, using In-plane Switching (IPS) panels which make the color looks really great. I also prefer this type of stands which allow height adjustment.
&lt;/p&gt;
&lt;p&gt;&amp;#x1f4a1; Tip: Workspace ergonomics suggests that the main monitor should be placed at the center with about an arm&amp;rsquo;s length away from the body, instead of a &lt;code&gt;/\&lt;/code&gt; shape.&lt;/p&gt;
&lt;p&gt;&amp;#x1f4a1; Tip: You can use both screens for Remote Desktop by checking the &amp;ldquo;Use all my monitors for the remote session&amp;rdquo; box.
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Remote Desktop Use all monitors"
srcset="https://eson-dev.github.io/blog/wfh-setup/rdp-all-monitors_hu_277f47c69d62fdf6.webp 320w, https://eson-dev.github.io/blog/wfh-setup/rdp-all-monitors_hu_e5d7d4035448bd98.webp 407w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/wfh-setup/rdp-all-monitors_hu_277f47c69d62fdf6.webp"
width="407"
height="282"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;To maximize space, I bought two
which not only allow me to set the monitors on eye level, but also to slot in the keyboard and mouse under it whenever I need more space.&lt;/p&gt;
&lt;p&gt;For typing, I am using the
. Its simple design takes away the unnecessary gaming function keys and gets the job done. It is using Cherry MX Blue mechanical switches so there is the unavoidable clicking sound during typing. (My Logitech G710+ keyboard with less noisy MX Brown switches is still stuck in the office, unfortunately &amp;#x1f613;)&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Cougar 600K Mechanical Gaming Keyboard"
srcset="https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_b63bdd9f62ee7004.webp 320w, https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_48b5067d6ca91075.webp 480w, https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_103a75b236122cfb.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_b63bdd9f62ee7004.webp"
width="760"
height="485"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The mouse and headphones are two new additions to my setup, bought during this WFH period, to replace their predecessors which were not as comfortable.&lt;/p&gt;
&lt;p&gt;The
has a simple design and works comfortably for my hand size. The side buttons are always a &lt;em&gt;must&lt;/em&gt; to me because they allow me to easily navigate back and forward (in browser, explorer, IDE etc.). It also has a light that changes color (configurable).
&lt;/p&gt;
&lt;p&gt;The
has a noise-canceling microphone that is 360° adjustable. It allows me to speak much clearly during calls. As a plus point, it can also be plugged into a PS4 controller.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t usually turn on video during work calls but I do have an
sitting on top of the Dell U2311H monitor, ready to serve when needed. It also has a built-in microphone.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Last but not least, a very comfortable chair - the
. Mine is the 2016 series bought in Singapore. It is made by a company founded in Singapore, and now they have expanded to Europe and North America.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t need my all-in-one Canon MX727 (seen in picture above) for work, but it is always useful when I need to scan and print documents.&lt;/p&gt;
&lt;p&gt;WFH is going be the &amp;ldquo;new normal&amp;rdquo; for developers like us, and I am ready.&lt;/p&gt;
&lt;p&gt;Now I just need a hair cut. &amp;#x1f487;&amp;zwj;&amp;#x2642;&amp;#xfe0f;&lt;/p&gt;</description></item><item><title>ConFoo Montreal 2020</title><link>https://eson-dev.github.io/blog/confoo-2020/</link><pubDate>Sat, 29 Feb 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/confoo-2020/</guid><description>&lt;p&gt;I&amp;rsquo;ve had the opportunity to attend
at Hotel Bonaventure Montréal this week.
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="View from Hotel Bonaventure Montreal"
srcset="https://eson-dev.github.io/blog/confoo-2020/hotel_hu_13f4770b0315dce7.webp 320w, https://eson-dev.github.io/blog/confoo-2020/hotel_hu_466b1f28f7cbc67a.webp 480w, https://eson-dev.github.io/blog/confoo-2020/hotel_hu_23a2c39ad908bc51.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/hotel_hu_13f4770b0315dce7.webp"
width="760"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="what-is-confoo"&gt;What is ConFoo?&lt;/h3&gt;
&lt;p&gt;
is a nonprofit organization founded by
. In 18 years, the event has evolved from a PHP conference to include all web technologies and related topics.&lt;/p&gt;
&lt;p&gt;All the topics this year are listed
and the presentation slides were uploaded by the organizer at this Github repository:
&amp;#x1f60d;&lt;/p&gt;
&lt;h3 id="the-presentations"&gt;The Presentations&lt;/h3&gt;
&lt;p&gt;The presentation on Go and Kubernetes were most related to my current job, and they were super popular with the rooms fully packed. Sadly there was only one single session on Go.&lt;/p&gt;
&lt;p&gt;It was also nice to see some cool things in Python 3 since I&amp;rsquo;ve been coding using Python 2.7 for the past 3 years. Even though the chance of me switching to Python 3 at work remains low.&lt;/p&gt;
&lt;p&gt;For historical reason, the conference is mostly on web technologies with a lot of them on PHP (which I didn&amp;rsquo;t attend any). Besides those, there were many talks on various JavaScript topics. It&amp;rsquo;s interesting to know that we now have browser API to get battery status and connect to Bluetooth devices; you can also build an indie platformer game (like
) running at 60fps and publish on Steam.&lt;/p&gt;
&lt;p&gt;
from Google looks promising and I am eager to try it out. It looks like an attempt from Google to promote
.&lt;/p&gt;
&lt;h3 id="the-swag-stuff-we-all-get"&gt;The Swag (Stuff We All Get)&lt;/h3&gt;
&lt;p&gt;Every participant get a goodie bag with some stickers and magnets in it.
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="SWAGs from ConFoo 2020"
srcset="https://eson-dev.github.io/blog/confoo-2020/swag_hu_60b967c999be8d1f.webp 320w, https://eson-dev.github.io/blog/confoo-2020/swag_hu_c101119b62a5de20.webp 480w, https://eson-dev.github.io/blog/confoo-2020/swag_hu_bb1ea55b962756ca.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/swag_hu_60b967c999be8d1f.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Of course, food, drinks and lots of coffee &amp;#x2615; to keep us awake&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="One of the main course"
srcset="https://eson-dev.github.io/blog/confoo-2020/food_hu_5723281f0e91fd6e.webp 320w, https://eson-dev.github.io/blog/confoo-2020/food_hu_b197f1d611006a4.webp 480w, https://eson-dev.github.io/blog/confoo-2020/food_hu_52c3a41dbc3997a4.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/food_hu_5723281f0e91fd6e.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;hellip; plus community cocktail &amp;#x1f37b; with retro games &amp;#x1f3ae; after a long day.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Party"
srcset="https://eson-dev.github.io/blog/confoo-2020/party_hu_a4ac348ce69536b2.webp 320w, https://eson-dev.github.io/blog/confoo-2020/party_hu_a1c16e933dd43a.webp 480w, https://eson-dev.github.io/blog/confoo-2020/party_hu_2f4d8d3342277177.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/party_hu_a4ac348ce69536b2.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Thank you Confoo, the event sponsors, and my employer for sending me to attend. Until next time!&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="ConFoo Montreal 2020 Event Sponsors"
srcset="https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_6f920a7c371c2ce.webp 320w, https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_c95b840034357484.webp 480w, https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_265215fb97f4d822.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_6f920a7c371c2ce.webp"
width="760"
height="428"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>For Honor</title><link>https://eson-dev.github.io/projects/for-honor/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/projects/for-honor/</guid><description>&lt;p&gt;Together with a small team in Ubisoft Singapore, we developed the end-to-end solution
for the in-game shop of For Honor, from the game client shop UI to the back-office tool
to manage the offers and layouts.&lt;/p&gt;</description></item><item><title>Ghost Recon Phantoms</title><link>https://eson-dev.github.io/projects/ghost-recon-phantoms/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/projects/ghost-recon-phantoms/</guid><description>&lt;p&gt;Ghost Recon Phantoms was Ubisoft Singapore&amp;rsquo;s first online game project.&lt;/p&gt;</description></item><item><title>Why and How I Built This Website</title><link>https://eson-dev.github.io/blog/this-site/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/this-site/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update 2026-01-25&lt;/strong&gt;: This was originally written in February 2020.
As of January 2026, Academic theme for Hugo is no longer available.
This website has since been rebuilt with
.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Hello and welcome! You probably found this website from my
or other social media profiles.&lt;/p&gt;
&lt;h3 id="why-esondev"&gt;Why eson.dev?&lt;/h3&gt;
&lt;p&gt;For years, I have always wanted to own a personal website. Back when I was living in Singapore, I even reserved the hostname &lt;code&gt;eson.sg&lt;/code&gt; for many years without hosting anything &amp;#x1f605;. I was still building up my career and LinkedIn is the best place to display my skills and experience.&lt;/p&gt;
&lt;p&gt;In 2019, I found that &lt;code&gt;.dev&lt;/code&gt; has become a top-level domain, as
. A quick search showed that &lt;code&gt;eson.dev&lt;/code&gt; is still available and I purchased the domain in no time. I wanted to use it as an alternative to my LinkedIn profile and give it a more personal touch, to showcase my experience and game projects, and maybe write some articles to share some tips and tricks.&lt;/p&gt;
&lt;h3 id="deciding-the-tech-to-use"&gt;Deciding the tech to use&lt;/h3&gt;
&lt;p&gt;After owning the domain name, it was time to decide on the technology to build the site on. A long time ago, I learnt website building with just HTML and JavaScript using
(it was also a period when
was prominent) &amp;#x1f602;. Of course, we are living in 2020 now and there are so many ways to create your own website without even writing a single line of HTML.&lt;/p&gt;
&lt;p&gt;I tried out with the GitHub&amp;rsquo;s own
project. It uses
as the site generator. For some reasons, I didn&amp;rsquo;t really like Jekyll. Soon after that I discovered
as an alternative (it&amp;rsquo;s also written in Go and I use Go every day at work) and decided to give it a try, and it fits my needs. While searching for a theme on Hugo, I found Academic (&lt;em&gt;link no longer available&lt;/em&gt; ❌) and it looks fantastic!&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Academic"
srcset="https://eson-dev.github.io/blog/this-site/academic_hu_c13c87dbd13d2b02.webp 320w, https://eson-dev.github.io/blog/this-site/academic_hu_cfbef7c8857112ab.webp 480w, https://eson-dev.github.io/blog/this-site/academic_hu_ff2748a7d156ea02.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/this-site/academic_hu_c13c87dbd13d2b02.webp"
width="760"
height="241"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;By following Academic&amp;rsquo;s installation guide, I was able to setup
to automatically build and deploy my changes, and the first version of my website was published in less than 10 minutes! The best of all is that I am able to use the Starter (free) tier of Netlify to host my website and tie it to my custom domain
.&lt;/p&gt;
&lt;h3 id="keeping-it-updated"&gt;Keeping it updated&lt;/h3&gt;
&lt;p&gt;Now that the Netlify pipeline has been setup, I simply have to push my changes to the Github repository, and everything will be &lt;em&gt;automagically&lt;/em&gt; built and deployed live by Netlify in less than a minute. Sweet! &amp;#x1f389;&lt;/p&gt;</description></item></channel></rss>