<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://chuacw.ath.cx/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Chee Wee's discoveries and tech blog</title><link>https://chuacw.ath.cx/Development/b/chuacw/default.aspx</link><description>Changing the world one line of code at a time...</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.582.12810 (Build: 5.6.582.12810)</generator><item><title>Delphi Observers Part 5: Validation in Action: TCheckBox</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/04/01/delphi-observers-part-5-validation-in-action-tcheckbox.aspx</link><pubDate>Wed, 01 Apr 2026 05:45:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9153</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/04/01/delphi-observers-part-5-validation-in-action-tcheckbox.aspx#comments</comments><description>In Part 4 , we saw how TEdit and TMemo &amp;#39;s ancestor: TCustomEdit uses observers to manage passive states like ReadOnly . However, TCustomCheckBox and...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2026/04/01/delphi-observers-part-5-validation-in-action-tcheckbox.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9153" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TObservers/default.aspx">TObservers</category></item><item><title>Delphi Observers Part 4: Active Interception - TCustomEdit</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/03/23/delphi-observers-part-4-active-interception-tcustomedit.aspx</link><pubDate>Mon, 23 Mar 2026 09:11:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9152</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/03/23/delphi-observers-part-4-active-interception-tcustomedit.aspx#comments</comments><description>In the previous articles, we established how the observer engine is initialized. Now, let&amp;rsquo;s look at how a professional-grade component like TEdit...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2026/03/23/delphi-observers-part-4-active-interception-tcustomedit.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9152" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TObservers/default.aspx">TObservers</category></item><item><title>Delphi Observers Part 3: The Component Gatekeeper</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/03/23/delphi-observers-part-3-the-component-gatekeeper.aspx</link><pubDate>Mon, 23 Mar 2026 08:54:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9151</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/03/23/delphi-observers-part-3-the-component-gatekeeper.aspx#comments</comments><description>In the previous article, we saw how TComponent initializes the observer engine. However, simply having an engine doesn&amp;#39;t mean a component knows how...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2026/03/23/delphi-observers-part-3-the-component-gatekeeper.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9151" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TObservers/default.aspx">TObservers</category></item><item><title>Delphi Observers Part 2: Lifecycle: From Lazy-Init to Destroy</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/02/02/delphi-observers-part-2-lifecycle-from-lazy_2D00_init-to-destroy.aspx</link><pubDate>Mon, 02 Feb 2026 06:34:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9150</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/02/02/delphi-observers-part-2-lifecycle-from-lazy_2D00_init-to-destroy.aspx#comments</comments><description>In Part 1 , we looked at the interfaces that define the Observer pattern in Delphi. But how do these observers actually get created and managed within...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2026/02/02/delphi-observers-part-2-lifecycle-from-lazy_2D00_init-to-destroy.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9150" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TObservers/default.aspx">TObservers</category></item><item><title>Delphi Observers Part 1: The Foundation (2017–2026)</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/01/05/delphi-observers-part-1-the-foundation-2017-2026.aspx</link><pubDate>Mon, 05 Jan 2026 05:18:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9149</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2026/01/05/delphi-observers-part-1-the-foundation-2017-2026.aspx#comments</comments><description>&lt;p&gt;In 2017, with the release of &lt;strong&gt;&lt;a href="https://docwiki.embarcadero.com/Libraries/Tokyo/en/Main_Page"&gt;Delphi 10.2 Tokyo&lt;/a&gt;&lt;/strong&gt;, Embarcadero introduced a specialized implementation of the Observer pattern into the &lt;code&gt;&lt;a href="https://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes"&gt;System.Classes&lt;/a&gt;&lt;/code&gt;
 unit. While it has been in the wild for 9 years, it remains a &amp;quot;hidden&amp;quot; 
architecture for many, primarily because it serves as the invisible 
engine behind &lt;strong&gt;&lt;a href="https://docwiki.embarcadero.com/RADStudio/en/LiveBindings_in_RAD_Studio"&gt;LiveBindings&lt;/a&gt;&lt;/strong&gt;.
 Other than live bindings, you can also use the Observer pattern as a 
way to update component settings to the Windows registry, an .ini file, 
or persist it elsewhere.&lt;/p&gt;...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2026/01/05/delphi-observers-part-1-the-foundation-2017-2026.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9149" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TObservers/default.aspx">TObservers</category></item><item><title>Why the RAD Studio IDE doesn't implement the "Follow" feature </title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/12/11/why-the-rad-studio-ide-doesn-t-implement-the-quot-follow-quot-feature.aspx</link><pubDate>Thu, 11 Dec 2025 11:13:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9107</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/12/11/why-the-rad-studio-ide-doesn-t-implement-the-quot-follow-quot-feature.aspx#comments</comments><description>In the RAD Studio IDE, when you switch to assembly, and your [R]IP is on a call or a branch instruction, the IDE provides a &amp;quot;Follow&amp;quot; feature...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/12/11/why-the-rad-studio-ide-doesn-t-implement-the-quot-follow-quot-feature.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9107" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Debugging+in+Delphi/default.aspx">Debugging in Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Converting TDateTime to TValue</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/11/30/converting-tdatetime-to-tvalue.aspx</link><pubDate>Sun, 30 Nov 2025 06:58:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9098</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/11/30/converting-tdatetime-to-tvalue.aspx#comments</comments><description>Previously, I talked about how the TDateTime triumvirate caused issues in runtime packages. Today, I&amp;#39;ll discuss why using implicit operators with TValue...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/11/30/converting-tdatetime-to-tvalue.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9098" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TDate/default.aspx">TDate</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TTime/default.aspx">TTime</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TDateTime/default.aspx">TDateTime</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/runtime+packages/default.aspx">runtime packages</category></item><item><title>Delphi: an inconsistent and illogical language</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/10/24/delphi-an-inconsistent-and-illogical-language.aspx</link><pubDate>Fri, 24 Oct 2025 13:05:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9080</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/10/24/delphi-an-inconsistent-and-illogical-language.aspx#comments</comments><description>The more Delphi is being used, the more you&amp;#39;ll find that it is an inconsistent and illogical language. Over the years, Delphi has started becoming...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/10/24/delphi-an-inconsistent-and-illogical-language.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9080" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Solana lessons &amp; resources</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/09/08/solana-lessons-amp-resources.aspx</link><pubDate>Mon, 08 Sep 2025 14:51:48 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9058</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/09/08/solana-lessons-amp-resources.aspx#comments</comments><description>A clearance list of Solana lessons &amp;amp; resources I&amp;#39;ve picked up recently. Intro to Solana and Blockchain Lesson video - https://youtu.be/vrO6cjdPUOs...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/09/08/solana-lessons-amp-resources.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9058" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Anchor/default.aspx">Anchor</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Solana/default.aspx">Solana</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Debugging/default.aspx">Debugging</category></item><item><title>The history of TDateTime, TDate &amp; TTime and why they cause issues in packages and libraries</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/08/01/the-history-of-tdatetime-tdate-amp-ttime-and-why-they-cause-issues-in-packages-and-libraries.aspx</link><pubDate>Fri, 01 Aug 2025 00:30:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9041</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/08/01/the-history-of-tdatetime-tdate-amp-ttime-and-why-they-cause-issues-in-packages-and-libraries.aspx#comments</comments><description>Last time, I talked about the $OBJTYPENAME directive . This post has a little something to do with it. There are issues with using TDateTime, TDate and...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/08/01/the-history-of-tdatetime-tdate-amp-ttime-and-why-they-cause-issues-in-packages-and-libraries.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9041" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Undocumented parameters for $OBJTYPENAME</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/07/17/undocumented-parameters-for-objtypename.aspx</link><pubDate>Thu, 17 Jul 2025 08:20:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9031</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/07/17/undocumented-parameters-for-objtypename.aspx#comments</comments><description>Currently, the documentation for $OBJTYPENAME is located at Embarcadero&amp;#39;s docwiki: OBJTYPENAME directive (Delphi) . But if you look at System.pas in...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/07/17/undocumented-parameters-for-objtypename.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9031" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Undocumented/default.aspx">Undocumented</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/compiler+directives/default.aspx">compiler directives</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/directives/default.aspx">directives</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Embarcadero announces RAD Studio 13 beta</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/06/28/embarcadero-announces-rad-studio-13-beta.aspx</link><pubDate>Fri, 27 Jun 2025 18:04:56 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9020</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/06/28/embarcadero-announces-rad-studio-13-beta.aspx#comments</comments><description>Embarcadero has announced the RAD Studio 13 beta and invites customers to join it! Codenamed Ganymede, RAD Studio 13 will be named Florence. Only customers...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/06/28/embarcadero-announces-rad-studio-13-beta.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9020" width="1" height="1"&gt;</description></item><item><title>UInt64 bugs in the Delphi RTL</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/05/13/uint64-bugs-in-the-delphi-rtl.aspx</link><pubDate>Tue, 13 May 2025 05:54:25 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9004</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/05/13/uint64-bugs-in-the-delphi-rtl.aspx#comments</comments><description>I&amp;#39;ve been working on the JSON RPC framework, which was previously public , but has gone private . During its development, I&amp;#39;ve discovered at least...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/05/13/uint64-bugs-in-the-delphi-rtl.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9004" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/JSON+RPC/default.aspx">JSON RPC</category></item><item><title>How I fixed this blog to stop spam</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/04/25/how-i-fixed-this-blog-to-stop-spam.aspx</link><pubDate>Fri, 25 Apr 2025 06:45:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:9002</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/04/25/how-i-fixed-this-blog-to-stop-spam.aspx#comments</comments><description>Over 4 months ago, I&amp;#39;ve enabled comments for blogs site-wide, and I wasn&amp;#39;t aware at that time, but spam started coming in. Yesterday, I started...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/04/25/how-i-fixed-this-blog-to-stop-spam.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=9002" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Reverse engineering bundled Javascript code</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/03/24/reverse-engineering-bundled-javascript-code.aspx</link><pubDate>Mon, 24 Mar 2025 11:02:53 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:8690</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/03/24/reverse-engineering-bundled-javascript-code.aspx#comments</comments><description>One of the ways to reverse engineer Javascript code that&amp;#39;s bundled is to use an applet known as Shuji . Shuji is an applet that, in its owner&amp;#39;s...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/03/24/reverse-engineering-bundled-javascript-code.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=8690" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Reverse+Engineer/default.aspx">Reverse Engineer</category></item><item><title>The undocumented Delphi signature directive</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/03/24/the-undocumented-delphi-signature-directive.aspx</link><pubDate>Mon, 24 Mar 2025 10:51:24 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:8687</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2025/03/24/the-undocumented-delphi-signature-directive.aspx#comments</comments><description>I&amp;#39;ve accidentally stumbled upon the --no-compiler-signature directive that you can use to make your generated Delphi executable slightly smaller. Add...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2025/03/24/the-undocumented-delphi-signature-directive.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=8687" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi+for+Win32/default.aspx">Delphi for Win32</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Undocumented/default.aspx">Undocumented</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>How to resolve a stucked "file:" dependency in npm</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2024/10/02/how-to-resolve-a-stucked-quot-file-quot-dependency-in-npm.aspx</link><pubDate>Wed, 02 Oct 2024 13:09:40 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7490</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2024/10/02/how-to-resolve-a-stucked-quot-file-quot-dependency-in-npm.aspx#comments</comments><description>In npm, after running the npm link command to enable your package to be linkable, it&amp;#39;s possible to get stuck in a dependency hell, where in the dependency...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2024/10/02/how-to-resolve-a-stucked-quot-file-quot-dependency-in-npm.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7490" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Node-js/default.aspx">Node.js</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/npm/default.aspx">npm</category></item><item><title>Repairing snap on Ubuntu 24.04 LTS</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2024/06/03/repairing-snap-on-ubuntu-24-04-lts.aspx</link><pubDate>Mon, 03 Jun 2024 14:08:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7488</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2024/06/03/repairing-snap-on-ubuntu-24-04-lts.aspx#comments</comments><description>sudo apt install snapd sudo snap install snap-store sudo snap refresh --beta core22 sudo snap refresh --stable core22 sudo snap remove core24 sudo snap...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2024/06/03/repairing-snap-on-ubuntu-24-04-lts.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7488" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Unix+_2F00_+Linux/default.aspx">Unix / Linux</category></item><item><title>The anatomy of a Firefox add-on</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/12/07/the-anatomy-of-a-firefox-add-on.aspx</link><pubDate>Wed, 06 Dec 2023 16:31:21 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7485</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/12/07/the-anatomy-of-a-firefox-add-on.aspx#comments</comments><description>This month, I&amp;#39;ve learnt how to build a Firefox add-on, and learnt that if one desires to do so, there&amp;#39;s practically no difference between a Firefox...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/12/07/the-anatomy-of-a-firefox-add-on.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7485" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Browser+add_2D00_ons/default.aspx">Browser add-ons</category></item><item><title>Building the foundation to access blockchains in Delphi</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/11/18/building-the-foundation-to-access-blockchains-in-delphi.aspx</link><pubDate>Fri, 17 Nov 2023 23:46:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7484</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/11/18/building-the-foundation-to-access-blockchains-in-delphi.aspx#comments</comments><description>Since late June, I&amp;#39;ve been building a framework to access any JSON RPC technologies in Delphi. I&amp;#39;m pleased to announce that the JSON RPC framework...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/11/18/building-the-foundation-to-access-blockchains-in-delphi.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7484" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Github/default.aspx">Github</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/JSON+RPC/default.aspx">JSON RPC</category></item><item><title>Preparing for writing Move contracts</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/04/22/preparing-for-writing-move-contracts.aspx</link><pubDate>Fri, 21 Apr 2023 17:14:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7482</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/04/22/preparing-for-writing-move-contracts.aspx#comments</comments><description>Since early April, I&amp;#39;ve discovered 2 new blockchains, Sui and Aptos. Both Sui and Aptos uses the Move language ( Sui variant ), and both of which uses...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/04/22/preparing-for-writing-move-contracts.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7482" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Move/default.aspx">Move</category></item><item><title>RAD Studio plugin: WelcomePage Favourites Editor</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/03/02/rad-studio-plugin-welcomepage-favourites-editor.aspx</link><pubDate>Thu, 02 Mar 2023 15:22:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7477</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/03/02/rad-studio-plugin-welcomepage-favourites-editor.aspx#comments</comments><description>The WelcomePage Favourites Editor is an integrated plugin that you can add to the WelcomePage. After installation of the WelcomePage Favourites Editor...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/03/02/rad-studio-plugin-welcomepage-favourites-editor.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7477" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Debugging+in+Delphi/default.aspx">Debugging in Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ToolsAPI/default.aspx">ToolsAPI</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Plugins/default.aspx">Plugins</category></item><item><title>RAD Studio plugin: Android Log Viewer</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/28/rad-studio-plugin-android-log-viewer.aspx</link><pubDate>Tue, 28 Feb 2023 11:31:22 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7476</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/28/rad-studio-plugin-android-log-viewer.aspx#comments</comments><description>The Android Log Viewer is an integrated plugin that launches automatically when it has detected that you&amp;#39;ve launched a debugging session. After installation...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/28/rad-studio-plugin-android-log-viewer.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7476" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Debugging+in+Delphi/default.aspx">Debugging in Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ToolsAPI/default.aspx">ToolsAPI</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Plugins/default.aspx">Plugins</category></item><item><title>A Plugin Common RTL for Delphi and many plugins built on it...</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/27/a-plugin-common-rtl-for-delphi-and-many-plugins-built-on-it.aspx</link><pubDate>Mon, 27 Feb 2023 12:55:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7475</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/27/a-plugin-common-rtl-for-delphi-and-many-plugins-built-on-it.aspx#comments</comments><description>Over the past few years, I&amp;#39;ve been building a RTL for building plugins in RAD Studio, with many classes and functionality. With the latest RAD Studio...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/27/a-plugin-common-rtl-for-delphi-and-many-plugins-built-on-it.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7475" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ToolsAPI/default.aspx">ToolsAPI</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/RAD+Studio/default.aspx">RAD Studio</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Using MSBuild to compile disables debugging</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/23/using-msbuild-to-compile-disables-debugging.aspx</link><pubDate>Thu, 23 Feb 2023 09:11:07 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7474</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/23/using-msbuild-to-compile-disables-debugging.aspx#comments</comments><description>In RAD Studio, checking the &amp;quot;Use MSBuild externally to compile&amp;quot; causes debugging to go into assembly mode, instead of the source. In order to...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/02/23/using-msbuild-to-compile-disables-debugging.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7474" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Debugging+in+Delphi/default.aspx">Debugging in Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Tips/default.aspx">Tips</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/RAD+Studio/default.aspx">RAD Studio</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Undocumented procedural type compatibility</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/01/19/undocumented-procedural-type-compatibility.aspx</link><pubDate>Thu, 19 Jan 2023 08:34:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7473</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2023/01/19/undocumented-procedural-type-compatibility.aspx#comments</comments><description>Recently, I stumbled upon a new undocumented procedural type compatibility in Delphi. Since Delphi 10.3, &amp;quot;reference to procedure&amp;quot; is compatible...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2023/01/19/undocumented-procedural-type-compatibility.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7473" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Undocumented/default.aspx">Undocumented</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Language/default.aspx">Language</category></item><item><title>Notes on how to handle Ctrl+Click in the RAD Studio IDE</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/12/22/notes-on-how-to-handle-ctrl-click-in-the-rad-studio-ide.aspx</link><pubDate>Wed, 21 Dec 2022 23:15:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7472</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/12/22/notes-on-how-to-handle-ctrl-click-in-the-rad-studio-ide.aspx#comments</comments><description>The OTA provides a way for an IOTACodeInsightManager100 to handle GotoDefinition. Before Denali, the IDE would use the Syntax Highlight information for...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2022/12/22/notes-on-how-to-handle-ctrl-click-in-the-rad-studio-ide.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7472" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/OTA/default.aspx">OTA</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ToolsAPI/default.aspx">ToolsAPI</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/RAD+Studio/default.aspx">RAD Studio</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>How to make Windows Terminal the default terminal on Windows 10/2022</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/11/17/how-to-make-windows-terminal-the-default-terminal-on-windows-10-2022.aspx</link><pubDate>Wed, 16 Nov 2022 17:11:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7467</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/11/17/how-to-make-windows-terminal-the-default-terminal-on-windows-10-2022.aspx#comments</comments><description>Open up regedit, and go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths Create a new key named cmd.exe and set its default value...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2022/11/17/how-to-make-windows-terminal-the-default-terminal-on-windows-10-2022.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7467" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Windows/default.aspx">Windows</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Hacking/default.aspx">Hacking</category></item><item><title>Why use an Assertion Function in TypeScript</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/10/31/why-use-an-assertion-function-in-typescript.aspx</link><pubDate>Mon, 31 Oct 2022 09:51:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7466</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/10/31/why-use-an-assertion-function-in-typescript.aspx#comments</comments><description>Recently, I was working on a developing a server that responds to JSON RPC calls using TypeScript. Many of the methods in the RPC server follows this template...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2022/10/31/why-use-an-assertion-function-in-typescript.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7466" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Tips/default.aspx">Tips</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TypeScript/default.aspx">TypeScript</category></item><item><title>Delphi RTL for TypeScript</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/07/13/delphi-rtl-for-typescript.aspx</link><pubDate>Wed, 13 Jul 2022 10:48:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7465</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/07/13/delphi-rtl-for-typescript.aspx#comments</comments><description>Since early 2019, when I&amp;#39;ve started working on TypeScript, I&amp;#39;ve missed some routines from the Delphi RTL. While TypeScript, which transpiles to...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2022/07/13/delphi-rtl-for-typescript.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7465" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TypeScript/default.aspx">TypeScript</category></item><item><title>How to force a configuration variable to be false/true</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/04/12/how-to-force-a-configuration-variable-to-be-false-true.aspx</link><pubDate>Tue, 12 Apr 2022 02:24:40 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7462</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/04/12/how-to-force-a-configuration-variable-to-be-false-true.aspx#comments</comments><description>require(&amp;quot;dotenv&amp;quot;).config(); const FORCEUPDATE = String(process.env.UPDATESILENCE_FORCEUPDATE) == &amp;quot;true&amp;quot; The dotenv module makes the...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2022/04/12/how-to-force-a-configuration-variable-to-be-false-true.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7462" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TypeScript/default.aspx">TypeScript</category></item><item><title>Tip of the day for Grafana</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/03/08/tip-of-the-day-for-grafana.aspx</link><pubDate>Mon, 07 Mar 2022 16:03:14 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7459</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2022/03/08/tip-of-the-day-for-grafana.aspx#comments</comments><description>💡Regular expressions in Grafana for silencing alerts have to match the entire value of the field for it to work. A partial match wouldn&amp;rsquo;t work....(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2022/03/08/tip-of-the-day-for-grafana.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7459" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Notes of a discussion over usage of PowerShell vs Bash</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/11/05/notes-of-a-discussion-over-usage-of-powershell-vs-bash.aspx</link><pubDate>Fri, 05 Nov 2021 00:09:26 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7455</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/11/05/notes-of-a-discussion-over-usage-of-powershell-vs-bash.aspx#comments</comments><description>For me, I&amp;rsquo;ll choose the best tool to use, and in this case, for me, it is PowerShell. I&amp;rsquo;ve used bash over many years, and PowerShell only less...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/11/05/notes-of-a-discussion-over-usage-of-powershell-vs-bash.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7455" width="1" height="1"&gt;</description></item><item><title>A self-contained TypeScript library demo</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/10/17/a-self-contained-typescript-library-demo.aspx</link><pubDate>Sun, 17 Oct 2021 11:28:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7454</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/10/17/a-self-contained-typescript-library-demo.aspx#comments</comments><description>In case I forget, I&amp;#39;ve created a self-contained TypeScript library demo on my Github repo. It&amp;#39;s a simple TypeScript project, and very minimal....(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/10/17/a-self-contained-typescript-library-demo.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7454" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TypeScript/default.aspx">TypeScript</category></item><item><title>Calling functions dynamically in TypeScript and JavaScript</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/10/03/calling-functions-dynamically-in-typescript-and-javascript.aspx</link><pubDate>Sun, 03 Oct 2021 07:05:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7452</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/10/03/calling-functions-dynamically-in-typescript-and-javascript.aspx#comments</comments><description>TypeScript functions to determine if a Javascript method exists, and call it via its name, together with the arguments. function functionExists ( funcName...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/10/03/calling-functions-dynamically-in-typescript-and-javascript.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7452" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TypeScript/default.aspx">TypeScript</category></item><item><title>Setting up a TypeScript project and debugging it in VSCode</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/09/27/setting-up-a-typescript-project-and-debugging-it-in-vscode.aspx</link><pubDate>Mon, 27 Sep 2021 01:33:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7451</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/09/27/setting-up-a-typescript-project-and-debugging-it-in-vscode.aspx#comments</comments><description>One of the things I keep forgetting is how to set up a TypeScript project and debugging it in VSCode. This blog post will remind me how to do so. In a...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/09/27/setting-up-a-typescript-project-and-debugging-it-in-vscode.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7451" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TypeScript/default.aspx">TypeScript</category></item><item><title>Updating PowerShell help</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/08/28/updating-powershell-help.aspx</link><pubDate>Sat, 28 Aug 2021 05:09:37 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7450</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/08/28/updating-powershell-help.aspx#comments</comments><description>Normally, when you need to update PowerShell&amp;#39;s help, you just run the command Update-Help. However, since PowerShell v7, an error has crept in when...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/08/28/updating-powershell-help.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7450" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Querying Bitquery for calls to a smart contract from a specific address</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/07/31/querying-bitquery-for-calls-to-a-smart-contract-from-a-specific-address.aspx</link><pubDate>Sat, 31 Jul 2021 12:24:01 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7448</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/07/31/querying-bitquery-for-calls-to-a-smart-contract-from-a-specific-address.aspx#comments</comments><description>Some time ago, I learnt GraphQL, for use on Bitquery , as a way of querying the blockchain for specific transactions that I&amp;#39;ve initiated to a particular...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/07/31/querying-bitquery-for-calls-to-a-smart-contract-from-a-specific-address.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7448" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Bitquery/default.aspx">Bitquery</category></item><item><title>Embarcadero releases RAD Studio 10.4.2 patch</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/05/04/embarcadero-releases-rad-studio-10-4-2-patch.aspx</link><pubDate>Tue, 04 May 2021 10:44:56 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7445</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/05/04/embarcadero-releases-rad-studio-10-4-2-patch.aspx#comments</comments><description>Embarcadero has released patches for the RAD Studio 10.4 product . The patches consist of a compiler patch, a general patch and a RTL patch. These patches...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/05/04/embarcadero-releases-rad-studio-10-4-2-patch.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7445" width="1" height="1"&gt;</description></item><item><title>How to integrate Node.js with IIS</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/03/25/how-to-integrate-node-js-with-iis.aspx</link><pubDate>Thu, 25 Mar 2021 08:15:33 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7443</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/03/25/how-to-integrate-node-js-with-iis.aspx#comments</comments><description>I had the opportunity to work with many Node.js applications in the past, and those applications were generally launched in the general manner. Node appname...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/03/25/how-to-integrate-node-js-with-iis.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7443" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Windows/default.aspx">Windows</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Nodejs/default.aspx">Nodejs</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/IISnode/default.aspx">IISnode</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Node-js/default.aspx">Node.js</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Random notes on TypeScript</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/16/random-notes-on-typescript.aspx</link><pubDate>Tue, 16 Feb 2021 15:24:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7442</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/16/random-notes-on-typescript.aspx#comments</comments><description>How to add properties to existing objects in TypeScript declare global { interface Window { MyNamespace: any; } } window.MyNamespace = window.MyNamespace...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/16/random-notes-on-typescript.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7442" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/TypeScript/default.aspx">TypeScript</category></item><item><title>Javascript IIFE and Delphi IIFE</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/08/javascript-iife-and-delphi-iife.aspx</link><pubDate>Mon, 08 Feb 2021 03:31:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7441</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/08/javascript-iife-and-delphi-iife.aspx#comments</comments><description>In Javascript, you can define an anonymous function that can be executed immediately. It is called an Immediate Invocation Function Expression, aka IIFE...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/08/javascript-iife-and-delphi-iife.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7441" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Examples of known blockchain attacks #3: Parity Wallet hack</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/04/examples-of-known-blockchain-attacks-3-parity-wallet-hack.aspx</link><pubDate>Thu, 04 Feb 2021 13:29:44 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7439</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/04/examples-of-known-blockchain-attacks-3-parity-wallet-hack.aspx#comments</comments><description>The Parity Wallet hack was an attack performed on 19 Jul 2017, on the 2 Ethereum smart contracts deployed by Parity Techologies . The first Parity smart...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/02/04/examples-of-known-blockchain-attacks-3-parity-wallet-hack.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7439" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ethereum/default.aspx">ethereum</category></item><item><title>Examples of known blockchain attacks #2: The DAO re-entrancy hack</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/01/03/examples-of-known-blockchain-attacks-2-the-dao-re-entrancy-hack.aspx</link><pubDate>Sun, 03 Jan 2021 11:47:28 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7438</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2021/01/03/examples-of-known-blockchain-attacks-2-the-dao-re-entrancy-hack.aspx#comments</comments><description>The Decentralised Autonomous Organisation (DAO) was a smart contract deployed on the Ethereum blockchain network designed to fund blockchain projects and...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2021/01/03/examples-of-known-blockchain-attacks-2-the-dao-re-entrancy-hack.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7438" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ethereum/default.aspx">ethereum</category></item><item><title>Examples of known blockchain attacks #1: Double-spend attack</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/12/30/examples-of-known-blockchain-attacks-1.aspx</link><pubDate>Wed, 30 Dec 2020 14:00:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7437</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/12/30/examples-of-known-blockchain-attacks-1.aspx#comments</comments><description>Inherent to the design of the blockchain is the principle of democracy, that all honest nodes agree upon the longest chain to be the source of truth. As...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/12/30/examples-of-known-blockchain-attacks-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7437" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ethereum/default.aspx">ethereum</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ethereum+classic/default.aspx">ethereum classic</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/blockchains/default.aspx">blockchains</category></item><item><title>Building the Delphi RTL on mac OSX</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/11/19/building-the-delphi-rtl-on-mac-osx.aspx</link><pubDate>Thu, 19 Nov 2020 01:03:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7436</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/11/19/building-the-delphi-rtl-on-mac-osx.aspx#comments</comments><description>Release: %BDS%\bin\dccosx64.exe -$C- -$D0 -$L- -CG -H -M -Q -V- -W^ -Z -- no -config -JPHN -W-UNSUPPORTED_CONSTRUCT -W-UNIT_DEPRECATED -W-SYMBOL_DEPRECATED...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/11/19/building-the-delphi-rtl-on-mac-osx.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7436" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Extending enumerated types with new members...</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/11/09/extending-enumerated-types-with-new-members.aspx</link><pubDate>Mon, 09 Nov 2020 11:00:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7435</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/11/09/extending-enumerated-types-with-new-members.aspx#comments</comments><description>Delphi has an enumerated type since the beginning. I&amp;#39;m sure some of us have from time to time, wonder how to extend an enumerated type, like this developer...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/11/09/extending-enumerated-types-with-new-members.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7435" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Reading the properties of a PNG image</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/10/07/reading-the-properties-of-a-png-image.aspx</link><pubDate>Wed, 07 Oct 2020 04:31:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7434</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/10/07/reading-the-properties-of-a-png-image.aspx#comments</comments><description>How do you read and write to the properties of a PNG image? Let the following image show you how....(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/10/07/reading-the-properties-of-a-png-image.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7434" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Free more space by redirecting the Linux SDKs for your RAD Studio</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/09/03/free-more-space-by-redirecting-the-linux-sdks-for-your-rad-studio.aspx</link><pubDate>Thu, 03 Sep 2020 09:54:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7432</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/09/03/free-more-space-by-redirecting-the-linux-sdks-for-your-rad-studio.aspx#comments</comments><description>&lt;p&gt;How to free more space on your home drive by redirecting the location for SDKs in RAD Studio&lt;/p&gt;...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/09/03/free-more-space-by-redirecting-the-linux-sdks-for-your-rad-studio.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7432" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/RAD+Studio/default.aspx">RAD Studio</category></item><item><title>Command line used to compile System.pas in Delphi</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/09/03/command-line-used-to-compile-system-pas-in-delphi.aspx</link><pubDate>Thu, 03 Sep 2020 09:49:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7431</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/09/03/command-line-used-to-compile-system-pas-in-delphi.aspx#comments</comments><description>&lt;p&gt;Learn the command line used to compile System.pas in Delphi&lt;/p&gt;...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/09/03/command-line-used-to-compile-system-pas-in-delphi.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7431" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/RAD+Studio/default.aspx">RAD Studio</category></item><item><title>Aligning a record or a native type declared on the stack/heap with Delphi</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/08/06/aligning-a-record-or-a-native-type-with-delphi.aspx</link><pubDate>Thu, 06 Aug 2020 01:54:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7413</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/08/06/aligning-a-record-or-a-native-type-with-delphi.aspx#comments</comments><description>&lt;p&gt;A method to design records so that they&amp;#39;re allocated on a specific byte boundary, such as 16 bytes, 512 bytes, 4096 bytes, etc.&lt;/p&gt;...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/08/06/aligning-a-record-or-a-native-type-with-delphi.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7413" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Generics/default.aspx">Generics</category></item><item><title>A cool thing about Go map</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/07/17/a-cool-thing-about-go-map.aspx</link><pubDate>Fri, 17 Jul 2020 09:24:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7400</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/07/17/a-cool-thing-about-go-map.aspx#comments</comments><description>&lt;p&gt;Learn why the map is cool in Go!&lt;/p&gt;...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/07/17/a-cool-thing-about-go-map.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7400" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Go/default.aspx">Go</category></item><item><title>Speed up your browsing with Firefox!</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/15/speed-up-your-browsing-with-firefox.aspx</link><pubDate>Mon, 15 Jun 2020 14:59:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7383</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/15/speed-up-your-browsing-with-firefox.aspx#comments</comments><description>Firefox now has HTTP3! Enable it by setting network.http.http3.enabled to true!...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/15/speed-up-your-browsing-with-firefox.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7383" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/General/default.aspx">General</category></item><item><title>NotifyModuleUnload</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/06/notifymoduleunload.aspx</link><pubDate>Fri, 05 Jun 2020 23:00:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7381</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/06/notifymoduleunload.aspx#comments</comments><description>Since Delphi 3, NotifyModuleUnload in the System unit has been written the way it is now. procedure NotifyModuleUnload(HInstance: THandle); var P: PModuleUnloadRec;...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/06/notifymoduleunload.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7381" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>New plug-ins for RAD Studio Rio 10.3.3 and Sydney 10.4!</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/05/new-plug-ins-for-rad-studio-rio-10-3-3-and-sydney-10-4.aspx</link><pubDate>Thu, 04 Jun 2020 23:16:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7380</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/05/new-plug-ins-for-rad-studio-rio-10-3-3-and-sydney-10-4.aspx#comments</comments><description>Over time, I&amp;#39;ve been building a ToolsAPI library that exposes functionality to making writing RAD Studio plug-ins even easier, since my first plug...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/05/new-plug-ins-for-rad-studio-rio-10-3-3-and-sydney-10-4.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7380" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/ToolsAPI/default.aspx">ToolsAPI</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Plugins/default.aspx">Plugins</category></item><item><title>Blocking an IP for 23 hours</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/03/blocking-a-specific-internet-ip-for-23-hours.aspx</link><pubDate>Wed, 03 Jun 2020 05:06:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7379</guid><dc:creator>chuacw</dc:creator><slash:comments>2</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/03/blocking-a-specific-internet-ip-for-23-hours.aspx#comments</comments><description>One of the issues I have, running a blog site I own, is that there are certain automated entities on the Internet that likes to poll my website every half...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/06/03/blocking-a-specific-internet-ip-for-23-hours.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7379" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Network/default.aspx">Network</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/OpenWRT/default.aspx">OpenWRT</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/firewall/default.aspx">firewall</category></item><item><title>The genesis for FixAndroidLogger: fixing a RAD Studio mistake.</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/05/29/the-genesis-for-fixandroidlogger.aspx</link><pubDate>Fri, 29 May 2020 09:11:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7378</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/05/29/the-genesis-for-fixandroidlogger.aspx#comments</comments><description>When FireMonkey became available for Android, one of the things I looked at was how logging was done. The API to Android logging are located in Androidapi...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/05/29/the-genesis-for-fixandroidlogger.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7378" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Android/default.aspx">Android</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Lessons learnt from software development management failures...</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/05/28/lessons-learnt-from-software-development-management-failures.aspx</link><pubDate>Thu, 28 May 2020 04:04:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7377</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/05/28/lessons-learnt-from-software-development-management-failures.aspx#comments</comments><description>There&amp;#39;s a lot of lessons to be learnt from observing how product management and development teams fail to manage software products properly. One of...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/05/28/lessons-learnt-from-software-development-management-failures.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7377" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Lessons/default.aspx">Lessons</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Software+Development/default.aspx">Software Development</category></item><item><title>When I called you last night from Glasgow...</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/03/31/when-i-called-you-last-night-from-glasgow.aspx</link><pubDate>Tue, 31 Mar 2020 08:40:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7373</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/03/31/when-i-called-you-last-night-from-glasgow.aspx#comments</comments><description>One of the more useful techniques I&amp;#39;ve developed over the years is detecting what module the caller for a method came from. In an application with...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/03/31/when-i-called-you-last-night-from-glasgow.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7373" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Deleting old SQL backup files</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/01/06/deleting-old-sql-backup-files.aspx</link><pubDate>Mon, 06 Jan 2020 10:00:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7367</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2020/01/06/deleting-old-sql-backup-files.aspx#comments</comments><description>I recently noticed that my SQL backup files were not getting deleted, and after some research, found the commands to delete old backup files. Xp_delete_file...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2020/01/06/deleting-old-sql-backup-files.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7367" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Maintenance/default.aspx">Maintenance</category></item><item><title>Issues encountered while developing the Packer Builder for the Tencent  Cloud</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/12/10/issues-encountered-while-developing-the-packer-builder-for-the-tencent-cloud.aspx</link><pubDate>Tue, 10 Dec 2019 10:41:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7366</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/12/10/issues-encountered-while-developing-the-packer-builder-for-the-tencent-cloud.aspx#comments</comments><description>These are notes that I&amp;#39;ve written when I was working on building a Hashicorp Packer Builder plugin in Go. The issue with the development of this Packer...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/12/10/issues-encountered-while-developing-the-packer-builder-for-the-tencent-cloud.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7366" width="1" height="1"&gt;</description></item><item><title>RAD Studio 10.3.3 is released, a visible UI bug and a fix.</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/12/03/rad-studio-10-3-3-is-released-a-visible-ui-bug-and-a-fix.aspx</link><pubDate>Tue, 03 Dec 2019 14:48:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7365</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/12/03/rad-studio-10-3-3-is-released-a-visible-ui-bug-and-a-fix.aspx#comments</comments><description>RAD Studio 10.3.3 has been released about 2 weeks ago. I won&amp;#39;t go through all the new features, since all these has been covered elsewhere. When you&amp;#39;re...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/12/03/rad-studio-10-3-3-is-released-a-visible-ui-bug-and-a-fix.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7365" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Hacking/default.aspx">Hacking</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Scheduling a button press in Javascript</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/09/04/scheduling-a-button-press-in-javascript.aspx</link><pubDate>Wed, 04 Sep 2019 03:57:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7364</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/09/04/scheduling-a-button-press-in-javascript.aspx#comments</comments><description>Sometimes, if you&amp;#39;re away, or out of touch, and you need to click a button on a web page around or after a specific time, you just have no choice but...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/09/04/scheduling-a-button-press-in-javascript.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7364" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Hacking/default.aspx">Hacking</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Undocumented class operators in Delphi 10.2</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/18/undocumented-class-operators-in-delphi-10-2.aspx</link><pubDate>Sat, 18 May 2019 07:03:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7360</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/18/undocumented-class-operators-in-delphi-10-2.aspx#comments</comments><description>Today, I&amp;#39;ve discovered new undocumented class operators in the Delphi 10.2 compiler. Since class operators apply on records, these currently apply...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/18/undocumented-class-operators-in-delphi-10-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7360" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Experiments/default.aspx">Experiments</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>How any multithreaded FireMonkey Android app can crash</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/15/how-any-multithreaded-firemonkey-android-app-can-crash.aspx</link><pubDate>Wed, 15 May 2019 00:00:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7358</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/15/how-any-multithreaded-firemonkey-android-app-can-crash.aspx#comments</comments><description>Recently, I found out that any multithreaded Android application written with the FireMonkey framework can crash, if you use the CallInUIThread routine...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/15/how-any-multithreaded-firemonkey-android-app-can-crash.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7358" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Experiments/default.aspx">Experiments</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Android/default.aspx">Android</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Visual Studio Code on Linux</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/14/visual-studio-code-on-linux.aspx</link><pubDate>Tue, 14 May 2019 15:07:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7359</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/14/visual-studio-code-on-linux.aspx#comments</comments><description>Nearly 2 years ago, on 14 Sep 2017, I discovered Visual Studio Code, and tried it out. Some time in 2008, I started using it actively to develop code in...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/14/visual-studio-code-on-linux.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7359" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Unix+_2F00_+Linux/default.aspx">Unix / Linux</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Linux/default.aspx">Linux</category></item><item><title>Detecting the FireMonkey and VCL framework within your code</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/14/detecting-the-firemonkey-and-vcl-framework-within-your-code.aspx</link><pubDate>Tue, 14 May 2019 09:43:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7357</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/14/detecting-the-firemonkey-and-vcl-framework-within-your-code.aspx#comments</comments><description>If you&amp;#39;re writing common code that&amp;#39;s supposed to work on the FireMonkey and the VCL framework, occasionally, it might be useful to detect whether...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/14/detecting-the-firemonkey-and-vcl-framework-within-your-code.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7357" width="1" height="1"&gt;</description></item><item><title>Firefox extensions/addons got disabled, and how to fix it</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/04/firefox-extensions-addons-got-disabled-and-how-to-fix-it.aspx</link><pubDate>Sat, 04 May 2019 09:16:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7355</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/04/firefox-extensions-addons-got-disabled-and-how-to-fix-it.aspx#comments</comments><description>Today, nearly every extension and addon in Mozilla Firefox got disabled due to an expired certificate that was used to sign these extensions / addons....(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/04/firefox-extensions-addons-got-disabled-and-how-to-fix-it.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7355" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/General/default.aspx">General</category></item><item><title>Enabling even more privacy in your web browsing experience using Encrypted Server Name Indication and DNS over HTTPS</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/01/enabling-even-more-privacy-in-your-web-browsing-experience.aspx</link><pubDate>Wed, 01 May 2019 07:40:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7354</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/01/enabling-even-more-privacy-in-your-web-browsing-experience.aspx#comments</comments><description>For those of us who always wanted to ensure privacy and security in our browsing experience, we always choose to browse web sites which can provide SSL...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/05/01/enabling-even-more-privacy-in-your-web-browsing-experience.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7354" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Security/default.aspx">Security</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Experiments/default.aspx">Experiments</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Network/default.aspx">Network</category></item><item><title>Fixing the Android Logging mechanism</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/04/28/fixing-the-android-logging-mechanism.aspx</link><pubDate>Sun, 28 Apr 2019 05:46:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7362</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/04/28/fixing-the-android-logging-mechanism.aspx#comments</comments><description>There&amp;#39;s an issue with the logging mechanism in FireMonkey I don&amp;#39;t like, and that&amp;#39;s the tag that was used when you make a call to the Log method...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/04/28/fixing-the-android-logging-mechanism.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7362" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Android/default.aspx">Android</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>A THTTPClient issue with HTTP proxies, and a workaround</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/02/21/a-json-rpc-framework-for-delphi.aspx</link><pubDate>Thu, 21 Feb 2019 09:48:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7350</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/02/21/a-json-rpc-framework-for-delphi.aspx#comments</comments><description>The development of the JSON RPC framework started on 10th Feb. I was inspired by the QP report that I&amp;#39;ve filed last year, and developed the JSON RPC...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/02/21/a-json-rpc-framework-for-delphi.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7350" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Hacking/default.aspx">Hacking</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Experiments/default.aspx">Experiments</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>How the SCP protocol works</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/02/04/how-the-scp-protocol-works.aspx</link><pubDate>Mon, 04 Feb 2019 03:16:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7349</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/02/04/how-the-scp-protocol-works.aspx#comments</comments><description>Have you ever wondered how the scp and rcp commands worked? The first time I did I haven&amp;#39;t found any documentation on the subject. There is no RFC...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/02/04/how-the-scp-protocol-works.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7349" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Unix+_2F00_+Linux/default.aspx">Unix / Linux</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Network/default.aspx">Network</category></item><item><title>Dumping field names and offset</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/01/27/dumping-field-names-and-offset.aspx</link><pubDate>Sun, 27 Jan 2019 13:59:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7348</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/01/27/dumping-field-names-and-offset.aspx#comments</comments><description>Given there&amp;#39;s a single type declaration, THDItem and that I wanted to see the field offsets as well as calculate the total size of the record, using...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/01/27/dumping-field-names-and-offset.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7348" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Experiments/default.aspx">Experiments</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>A custom built Terraform File System Provider</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/01/20/a-custom-built-terraform-file-system-provider.aspx</link><pubDate>Sun, 20 Jan 2019 04:02:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7345</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2019/01/20/a-custom-built-terraform-file-system-provider.aspx#comments</comments><description>While working on building blockchain node infrastructure, one of the tools I used is Terraform . The built-in providers in Terraform didn&amp;#39;t allow me...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2019/01/20/a-custom-built-terraform-file-system-provider.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7345" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Terraform/default.aspx">Terraform</category></item><item><title>Achievement 2018!</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/12/15/achievement-2018.aspx</link><pubDate>Sat, 15 Dec 2018 03:44:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7342</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/12/15/achievement-2018.aspx#comments</comments><description>I&amp;#39;ve never placed much emphasis on achievements, so much so that whenever I was asked about my achievements during job interviews, I tend to be unable...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/12/15/achievement-2018.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7342" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Accomplishments/default.aspx">Accomplishments</category></item><item><title>A technical description of AWS Lambda</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/30/a-technical-description-of-aws-lambda.aspx</link><pubDate>Tue, 30 Oct 2018 01:58:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7338</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/30/a-technical-description-of-aws-lambda.aspx#comments</comments><description>An AWS Lambda is a function that runs on servers. It can be configured either to run inside the VPC, or on AWS servers. No matter what, the server on which...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/30/a-technical-description-of-aws-lambda.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7338" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Terraform/default.aspx">Terraform</category></item><item><title>Importing and deleting Terraform resources</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/08/importing-and-deleting-terraform-resources.aspx</link><pubDate>Mon, 08 Oct 2018 09:37:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7334</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/08/importing-and-deleting-terraform-resources.aspx#comments</comments><description>After changing the Terraform files by hand, I realized that I have Terraform resources created on AWS. But I can&amp;#39;t do a terraform destroy -auto-approve...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/08/importing-and-deleting-terraform-resources.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7334" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Terraform/default.aspx">Terraform</category></item><item><title>The Journey so far...</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/07/the-journey-so-far.aspx</link><pubDate>Sun, 07 Oct 2018 02:55:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7333</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/07/the-journey-so-far.aspx#comments</comments><description>This year, I&amp;#39;ve done some very interesting consulting work. Here&amp;#39;s what was done: Fixed memory leaks and made improvements to a commercial Delphi...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/10/07/the-journey-so-far.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7333" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Go/default.aspx">Go</category></item><item><title>Flashing OpenWRT 18.06.1 using both Windows and a macOS</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/08/24/flashing-openwrt-18-06-1-using-both-windows-and-a-macos.aspx</link><pubDate>Fri, 24 Aug 2018 00:12:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7332</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/08/24/flashing-openwrt-18-06-1-using-both-windows-and-a-macos.aspx#comments</comments><description>OpenWRT 18.06.1 was released recently, and I took the opportunity to upgrade my router. Gotcha: Flashing from the LuCI page: Uncheck the &amp;quot;Keep settings&amp;quot;...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/08/24/flashing-openwrt-18-06-1-using-both-windows-and-a-macos.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7332" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/OpenWRT/default.aspx">OpenWRT</category></item><item><title>Odd application termination issue, and an unlikely fix</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/08/13/odd-application-termination-issue-and-an-unlikely-fix.aspx</link><pubDate>Mon, 13 Aug 2018 13:09:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7330</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/08/13/odd-application-termination-issue-and-an-unlikely-fix.aspx#comments</comments><description>One of the rarest moments I have with regards to applications are the fact that Mercury, the SMTP application, and another application I shall not name...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/08/13/odd-application-termination-issue-and-an-unlikely-fix.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7330" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Windows/default.aspx">Windows</category></item><item><title>Upgrading all OpenWRT packages in one line</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/25/upgrading-all-openwrt-packages-in-one-line.aspx</link><pubDate>Thu, 24 May 2018 16:46:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7324</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/25/upgrading-all-openwrt-packages-in-one-line.aspx#comments</comments><description>Here&amp;#39;s how to check and upgrade all your OpenWRT packages in one line opkg update &amp;amp;&amp;amp; opkg upgrade `opkg list-upgradable | awk &amp;#39;{print ...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/25/upgrading-all-openwrt-packages-in-one-line.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7324" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/OpenWRT/default.aspx">OpenWRT</category></item><item><title>Initializing structs in Go</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/24/initializing-structs-in-go.aspx</link><pubDate>Wed, 23 May 2018 16:51:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7323</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/24/initializing-structs-in-go.aspx#comments</comments><description>In Go, there are a few ways to initialize a new struct. You can do this: varStruct := &amp;amp;StructName{} varStruct := StructName{} varStruct := StructName...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/24/initializing-structs-in-go.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7323" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Language/default.aspx">Language</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Go/default.aspx">Go</category></item><item><title>Declaring and assigning variables in Go</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/14/declaring-and-assigning-variables-in-go.aspx</link><pubDate>Mon, 14 May 2018 06:10:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7322</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/14/declaring-and-assigning-variables-in-go.aspx#comments</comments><description>There&amp;#39;s multiple ways of declaring a variable in Go. You can do this: var VarName TypeName So, for example, var s string declares a variable s with...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/14/declaring-and-assigning-variables-in-go.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7322" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Language/default.aspx">Language</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Go/default.aspx">Go</category></item><item><title>Multithreading in C# and Delphi</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/12/multithreading-in-c-and-delphi.aspx</link><pubDate>Sat, 12 May 2018 05:59:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7321</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/12/multithreading-in-c-and-delphi.aspx#comments</comments><description>Even when you think you understand multithreading well enough, there&amp;#39;s some games you&amp;#39;ll find interesting. The Deadlock Empire are games in C#...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/05/12/multithreading-in-c-and-delphi.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7321" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/C_2300_/default.aspx">C#</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/C_2300_+vs+Delphi/default.aspx">C# vs Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Language/default.aspx">Language</category></item><item><title>Learning Golang, aka Go</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/30/learning-golang-aka-go.aspx</link><pubDate>Mon, 30 Apr 2018 07:18:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7320</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/30/learning-golang-aka-go.aspx#comments</comments><description>I&amp;#39;ve been learning a new language, Golang, created by Google, also known as Go. I got fascinated by the language some time ago, and when I saw dnscrypt...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/30/learning-golang-aka-go.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7320" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Language/default.aspx">Language</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Go/default.aspx">Go</category></item><item><title>Making your DNS queries private for your entire network</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/19/making-your-dns-queries-private-for-your-entire-network.aspx</link><pubDate>Thu, 19 Apr 2018 03:15:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7319</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/19/making-your-dns-queries-private-for-your-entire-network.aspx#comments</comments><description>In my previous post, &amp;quot; Making your web browsing experience even more private! &amp;quot;, I shared how to encrypt your DNS queries on the browser level...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/19/making-your-dns-queries-private-for-your-entire-network.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7319" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Network/default.aspx">Network</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/OpenWRT/default.aspx">OpenWRT</category></item><item><title>Site transition to SSL is completed!</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/12/site-transition-to-ssl-is-completed.aspx</link><pubDate>Thu, 12 Apr 2018 14:05:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7317</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>Over two and a half years ago, when Let&amp;#39;s Encrypt launched their free SSL certificate services, I signed up to them, generating a SSL certificate for...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/12/site-transition-to-ssl-is-completed.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7317" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/C_2300_/default.aspx">C#</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Security/default.aspx">Security</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Network/default.aspx">Network</category></item><item><title>Making your web browsing experience even more private!</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/03/making-your-web-browsing-experience-even-more-private.aspx</link><pubDate>Tue, 03 Apr 2018 13:30:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7315</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>Cloudflare recently launched a faster way of looking up domain names , much faster than Google. In partnership with Cloudflare, Firefox added a new way...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/04/03/making-your-web-browsing-experience-even-more-private.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7315" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Security/default.aspx">Security</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Network/default.aspx">Network</category></item><item><title>Reverse engineering the Web3 API</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/03/03/reverse-engineering-the-web3-api.aspx</link><pubDate>Sat, 03 Mar 2018 13:45:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7262</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>I&amp;#39;ve been working on the Web3 API for quite a while now. The JSON RPC protocol is documented here and the Web3 API is documented here , however, there...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/03/03/reverse-engineering-the-web3-api.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7262" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category></item><item><title>Automatically renewing Let's Encrypt™ SSL and binding it to a web site</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/02/20/automatically-renewing-let-s-encrypt-ssl-and-binding-ito-a-web-site.aspx</link><pubDate>Tue, 20 Feb 2018 14:10:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7256</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>Let&amp;#39;s Encrypt &amp;trade; is a SSL certificate issuing authority that started around Jun 2015. It went into beta sometime around the last quarter of 2015...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/02/20/automatically-renewing-let-s-encrypt-ssl-and-binding-ito-a-web-site.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7256" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Security/default.aspx">Security</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Network/default.aspx">Network</category></item><item><title>The mechanics of an ICO - how to do a crowdsale</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/02/19/the-mechanics-of-an-ico-how-to-do-a-crowdsale.aspx</link><pubDate>Mon, 19 Feb 2018 06:31:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7254</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><comments>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/02/19/the-mechanics-of-an-ico-how-to-do-a-crowdsale.aspx#comments</comments><description>How do you do a crowdsale, or raise an ICO? Get your whitepaper written and reviewed by a legal entity, such as the Blockchain Advisory Council , or the...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/02/19/the-mechanics-of-an-ico-how-to-do-a-crowdsale.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7254" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category></item><item><title>Something to ponder: using interfaces with class type variables</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/02/13/something-to-ponder-using-interfaces-with-class-type-variables.aspx</link><pubDate>Tue, 13 Feb 2018 03:28:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7251</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>One of the issues I&amp;#39;ve encountered recently is code like this: type ISomeIntf = interface procedure SomeMethod; end; TSomeClass = class(TInterfacedObject...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/02/13/something-to-ponder-using-interfaces-with-class-type-variables.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7251" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>How to write Truffle scripts to test your Solidity contracts automatically</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/01/31/how-to-write-truffle-scripts-to-test-your-solidity-contracts-automatically.aspx</link><pubDate>Wed, 31 Jan 2018 12:01:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7237</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>Every Truffle script is a Javascript app. So, if you&amp;#39;re familiar with writing Javascript, you already know how to write a Truffle script. How do you...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/01/31/how-to-write-truffle-scripts-to-test-your-solidity-contracts-automatically.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7237" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Retrieving blocked attachments from Google with Delphi</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2018/01/01/retrieving-blocked-attachments-from-google-with-delphi.aspx</link><pubDate>Mon, 01 Jan 2018 15:30:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7230</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>So, I was looking at an old email, and there was an attachment. Unfortunately, Google&amp;#39;s Gmail had blocked the attachment, thinking it had a virus attached...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2018/01/01/retrieving-blocked-attachments-from-google-with-delphi.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7230" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Experiments/default.aspx">Experiments</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Automated clicking on HTML elements</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2017/12/15/automated-clicking-on-html-elements.aspx</link><pubDate>Fri, 15 Dec 2017 01:36:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7220</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>On a HTML page, elements can be retrieved either by using the getElementsByClassName or the getElementById method. The getElementById method returns just...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2017/12/15/automated-clicking-on-html-elements.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7220" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Hacking/default.aspx">Hacking</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Persisting enumeration and sets to JSON</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2017/12/11/persisting-enumeration-and-sets-to-json.aspx</link><pubDate>Mon, 11 Dec 2017 08:01:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7218</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>I&amp;#39;ve created a demo on persisting enumeration and sets to JSON format. The default Delphi RTL persists enumeration as their names. The improvement...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2017/12/11/persisting-enumeration-and-sets-to-json.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7218" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>Why you need to make your string parameter a const</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2017/12/08/why-you-need-to-make-your-string-parameter-a-const.aspx</link><pubDate>Fri, 08 Dec 2017 01:40:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7217</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>I have often wanted to point this out, but didn&amp;#39;t really feel the need to, until today, when I was debugging into the RTL. When you have a string parameter...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2017/12/08/why-you-need-to-make-your-string-parameter-a-const.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7217" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Hacking/default.aspx">Hacking</category><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Delphi/default.aspx">Delphi</category></item><item><title>How to install Ganache</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2017/11/16/how-to-install-ganache.aspx</link><pubDate>Thu, 16 Nov 2017 07:56:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7210</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>The latest Ethereum tool, is Ganache, an one-click Blockchain. It&amp;#39;s distributed in appx format, which apparently, is only supported by Windows 10....(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2017/11/16/how-to-install-ganache.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7210" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category></item><item><title>Removing custom contracts and tokens</title><link>https://chuacw.ath.cx/Development/b/chuacw/archive/2017/11/13/removing-custom-contracts-and-tokens.aspx</link><pubDate>Mon, 13 Nov 2017 13:55:00 GMT</pubDate><guid isPermaLink="false">31dc546e-5479-4e3a-b092-fef70a55f082:7208</guid><dc:creator>chuacw</dc:creator><slash:comments>0</slash:comments><description>Here&amp;#39;s how to remove custom contracts and tokens in Ethereum Wallet / Mist Open up the Wallet UI For tokens: run this command in the console: Tokens...(&lt;a href="https://chuacw.ath.cx/Development/b/chuacw/archive/2017/11/13/removing-custom-contracts-and-tokens.aspx"&gt;read more&lt;/a&gt;)&lt;img src="https://chuacw.ath.cx/aggbug.aspx?PostID=7208" width="1" height="1"&gt;</description><category domain="https://chuacw.ath.cx/Development/b/chuacw/archive/tags/Blockchain/default.aspx">Blockchain</category></item></channel></rss>