<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>c@d3, and shar3</title><description>A blog for sharing software infrastructure, algorithms, AI, Machine Learning and fun technology.</description><link>https://tcw165.github.io/blog/</link><item><title>Building an AI Product in Finance, Part 6: Deterministic Workflow using Skills</title><link>https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-6-deterministic-workflow/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-6-deterministic-workflow/</guid><description>An agent skill gets a generalist model most of the way. A long workflow is a DAG, so the skill writes a persisted plan and the current step.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate><category>AI</category></item><item><title>Building an AI Product in Finance, Part 5: Close-loop Automation</title><link>https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-5-close-loop/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-5-close-loop/</guid><description>One eval platform: an onion of checks, harness health at the core, and a weekly agent that turns a miss into a fixture PR.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>AI</category></item><item><title>Building an AI Product in Finance, Part 4: Eval Sandbox, No PI / PII</title><link>https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-4-eval-sandbox/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-4-eval-sandbox/</guid><description>Local eval without waiting for morning: mock the tools the agent actually sees, synthesize from persona and scenario fixtures, keep production patterns out of git.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>AI</category></item><item><title>Building an AI Product in Finance, Part 3: Daily Eval and Harness Health</title><link>https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-3-daily-eval/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-3-daily-eval/</guid><description>The morning job that tells me which commit helped or hurt: in-repo YAML cases, composable scorers, frozen time, and a CLI.</description><pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate><category>AI</category></item><item><title>Building an AI Product in Finance, Part 2: Agent Loop, Prompts, and Context</title><link>https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-2-agent-loop/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-2-agent-loop/</guid><description>How the in-house agent loop packs a turn: a short sys-prompt, skills in code, a workflow plan as a latch, and history that is not a tool dump.</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><category>AI</category></item><item><title>Building an AI Product in Finance, Part 1: Overview</title><link>https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-1-overview/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/building-an-ai-product-in-finance-1-overview/</guid><description>A map of an AI assistant at a consumer brokerage, and why the client uses turn-based SSE plus short poll.</description><pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate><category>AI</category></item><item><title>C++ 1min: Competitive Arithmetic Tricks</title><link>https://tcw165.github.io/blog/posts/cpp-competitive-arithmetic-tricks/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/cpp-competitive-arithmetic-tricks/</guid><description>There’re some tricks to make your program run much faster. Although in most cases, the performance boost isn’t noticeable for regular…</description><pubDate>Sun, 11 Dec 2022 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>N-threads Modify Non-Atomic Shared Variable</title><link>https://tcw165.github.io/blog/posts/n-threads-modify-non-atomic-shared-variable/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/n-threads-modify-non-atomic-shared-variable/</guid><description>I recently am asked with this pseduo code for concurrent programming problem:</description><pubDate>Wed, 30 Nov 2022 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>How to Reason About Weighted Matrices in Neural Network</title><link>https://tcw165.github.io/blog/posts/reason-about-weighted-matrices-in-neural-network/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/reason-about-weighted-matrices-in-neural-network/</guid><description>Weights matrix is a linear transformation that either squash space or expands space</description><pubDate>Sun, 11 Oct 2020 00:00:00 GMT</pubDate><category>Machine Learning</category></item><item><title>Heap’s Algorithm: Fun Observation</title><link>https://tcw165.github.io/blog/posts/heaps-algorithm-fun-observation/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/heaps-algorithm-fun-observation/</guid><description>Heap’s Algorithm is NOT heap sort, and instead, it’s an algorithm to generate permutations.</description><pubDate>Mon, 19 Aug 2019 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>RxJava: Handling Errors Like a Pro</title><link>https://tcw165.github.io/blog/posts/rxjava-handling-errors-like-a-pro/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/rxjava-handling-errors-like-a-pro/</guid><description>Why the error is the terminate event in RxJava? How to bring the reactive streams back to alive after it is terminated by an error?</description><pubDate>Sun, 21 Apr 2019 00:00:00 GMT</pubDate><category>Android</category></item><item><title>RxJava Pro-Tip: How flatMap and switchMap handle terminate events</title><link>https://tcw165.github.io/blog/posts/rxjava-flatmap-switchmap-terminate-events/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/rxjava-flatmap-switchmap-terminate-events/</guid><description>How does a flatMap or switchMap handle a terminate event such as Observable.empty() or Completable.complete()</description><pubDate>Tue, 04 Dec 2018 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Kotlin: Dive Into “inline”, Specifically With Byte-Code Level</title><link>https://tcw165.github.io/blog/posts/kotlin-dive-into-inline-byte-code-level/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/kotlin-dive-into-inline-byte-code-level/</guid><description>From the official document, we know the inline function is similar to C/C++ Macro, where the instruction of the function is…</description><pubDate>Sun, 04 Nov 2018 00:00:00 GMT</pubDate><category>Android</category></item><item><title>RecyclerView Pro Tips: Add Line Divider In XML</title><link>https://tcw165.github.io/blog/posts/recyclerview-add-line-divider-in-xml/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/recyclerview-add-line-divider-in-xml/</guid><description>The RecyclerView supports addItemDecoration method since 22.1.0 and many people use this method to add line divider, but programmatically…</description><pubDate>Thu, 11 Oct 2018 00:00:00 GMT</pubDate><category>Android</category></item><item><title>RxJava2: “TakeWhenObservable”</title><link>https://tcw165.github.io/blog/posts/rxjava2-takewhenobservable/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/rxjava2-takewhenobservable/</guid><description>Updated: Jun 28, 2018</description><pubDate>Fri, 22 Jun 2018 00:00:00 GMT</pubDate><category>Android</category></item><item><title>RxJava2: Reactive Destruction With Custom Observable &amp; Single</title><link>https://tcw165.github.io/blog/posts/rxjava2-reactive-destruction-with-custom-observable-single/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/rxjava2-reactive-destruction-with-custom-observable-single/</guid><description>The blog post refers to RxJava 2.1.13</description><pubDate>Mon, 30 Apr 2018 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Algorithm: Largest Rectangular Area In Histogram</title><link>https://tcw165.github.io/blog/posts/largest-rectangular-area-in-histogram/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/largest-rectangular-area-in-histogram/</guid><description>I found an interesting problem on LeetCode and GeeksForGeeks a while ago, “largest rectangular area in the histogram,” and a friend…</description><pubDate>Sun, 14 Jan 2018 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>RxJava: Handle Cancellation With “switchMap”</title><link>https://tcw165.github.io/blog/posts/rxjava-handle-cancellation-with-switchmap/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/rxjava-handle-cancellation-with-switchmap/</guid><description>2018/03.29 Updated: RxAndroid -&gt; RxJava in title.
2018/02/19 Updated: Add “try #3” with takeUntil.</description><pubDate>Tue, 26 Dec 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Something About “android:windowIsTranslucent”</title><link>https://tcw165.github.io/blog/posts/something-about-android-windowistranslucent/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/something-about-android-windowistranslucent/</guid><description>You could make an Activity float on the other Activities with a translucent window background, e.g. PicCollage app. That provides the end…</description><pubDate>Mon, 18 Dec 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Idea Of Doing Group Update With Only Long-Press And Single-Tap</title><link>https://tcw165.github.io/blog/posts/group-update-with-long-press-and-single-tap/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/group-update-with-long-press-and-single-tap/</guid><description>I’m always fascinated with building photos editor on the phone, and it’s always hard to do complicated photos/layers manipulation within…</description><pubDate>Fri, 06 Oct 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Show The Splash Screen Image Without Any Delay</title><link>https://tcw165.github.io/blog/posts/show-the-splash-screen-image-without-any-delay/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/show-the-splash-screen-image-without-any-delay/</guid><description>Many Android apps have splash screen. I used to create the splash screen as follow:</description><pubDate>Tue, 01 Aug 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Face Landmarks Detection In Your Android App — Part 3</title><link>https://tcw165.github.io/blog/posts/face-landmarks-detection-part-3/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/face-landmarks-detection-part-3/</guid><description>Related articles: Part 1, Part 2</description><pubDate>Sun, 14 May 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>How To Cross-Compile Google Protobuf-Lite For Android JNI</title><link>https://tcw165.github.io/blog/posts/cross-compile-google-protobuf-lite-for-android-jni/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/cross-compile-google-protobuf-lite-for-android-jni/</guid><description>If you have ever been integrating c/c++ library to your Android project, you probably will know how painful it is to pass complicated data…</description><pubDate>Wed, 26 Apr 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Face Landmarks Detection In Your Android App — Part 2</title><link>https://tcw165.github.io/blog/posts/face-landmarks-detection-part-2/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/face-landmarks-detection-part-2/</guid><description>Related articles: Part 1, Part 3</description><pubDate>Sun, 16 Apr 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Face Landmarks Detection In Your Android App — Part 1</title><link>https://tcw165.github.io/blog/posts/face-landmarks-detection-part-1/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/face-landmarks-detection-part-1/</guid><description>Related articles: Part 2, Part 3</description><pubDate>Sat, 15 Apr 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Build a CursorRecyclerViewAdapter</title><link>https://tcw165.github.io/blog/posts/build-a-cursorrecyclerviewadapter/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/build-a-cursorrecyclerviewadapter/</guid><description>There is no equivalence of CursorAdapter to the RecyclerViewAdapter family. However, I need a cursor version of the RecyclerViewAdapter to…</description><pubDate>Sun, 09 Apr 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>How To Fix: Ghost Image By Glide In the RecyclerView</title><link>https://tcw165.github.io/blog/posts/fix-ghost-image-by-glide-in-the-recyclerview/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/fix-ghost-image-by-glide-in-the-recyclerview/</guid><description>I use Glide library to load image in the RecyclerView and happen to meet this “ghost image” problem like following.</description><pubDate>Fri, 31 Mar 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Build Fun UI With CoordinatorLayout</title><link>https://tcw165.github.io/blog/posts/build-fun-ui-with-coordinatorlayout/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/build-fun-ui-with-coordinatorlayout/</guid><description>This is a blog post about exploring the idea behind the CoordinatorLayout and why it is created. So you won’t see the basic usage of the…</description><pubDate>Wed, 22 Mar 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Handling IAP Elegantly in Android</title><link>https://tcw165.github.io/blog/posts/handling-iap-elegantly-in-android/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/handling-iap-elegantly-in-android/</guid><description>Let’s assume that your app has many entries (Activity/Fragment/Service) to access the IAP(In-App-Purchase) and you might also handle the…</description><pubDate>Thu, 05 Jan 2017 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Crossplatform With JNI And Protobuf</title><link>https://tcw165.github.io/blog/posts/jni-and-protobuf/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/jni-and-protobuf/</guid><description>Android</description><pubDate>Sat, 15 Oct 2016 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Probability - Birthday Permutation</title><link>https://tcw165.github.io/blog/posts/birthday-permutations/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/birthday-permutations/</guid><description>Probability</description><pubDate>Sat, 06 Aug 2016 00:00:00 GMT</pubDate><category>Probability</category></item><item><title>Tips of Numpy</title><link>https://tcw165.github.io/blog/posts/tips-of-numpy/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/tips-of-numpy/</guid><description>Machine Learning</description><pubDate>Sat, 09 Jul 2016 00:00:00 GMT</pubDate><category>Machine Learning</category></item><item><title>Leetcode - Longest Increasing Path in a Matrix</title><link>https://tcw165.github.io/blog/posts/longest-increasing-path-in-a-matrix/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/longest-increasing-path-in-a-matrix/</guid><description>Algorithms</description><pubDate>Sun, 05 Jun 2016 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>Leetcode - Verify Preorder Serialization of a Binary Tree</title><link>https://tcw165.github.io/blog/posts/verify-preorder-serialization-of-a-binary-tree/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/verify-preorder-serialization-of-a-binary-tree/</guid><description>Algorithms</description><pubDate>Sun, 05 Jun 2016 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>Leetcode - Maximal Rectangle</title><link>https://tcw165.github.io/blog/posts/maximal-rectangle/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/maximal-rectangle/</guid><description>Algorithms</description><pubDate>Sun, 05 Jun 2016 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>Leetcode - Trapping Rain Water</title><link>https://tcw165.github.io/blog/posts/trapping-rain-water/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/trapping-rain-water/</guid><description>Algorithms</description><pubDate>Sat, 04 Jun 2016 00:00:00 GMT</pubDate><category>Algorithms</category></item><item><title>The Journey to Microsoft Build 2016 — Part 1</title><link>https://tcw165.github.io/blog/posts/microsoft-build-2016-part-1/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/microsoft-build-2016-part-1/</guid><description>Before we go further (Build 2016), you probably would be interested of taking the keynotes below first in order to come out your ideas…</description><pubDate>Wed, 06 Apr 2016 00:00:00 GMT</pubDate><category>Technology</category></item><item><title>Rx-Android Day 1</title><link>https://tcw165.github.io/blog/posts/rx-android-day-1/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/rx-android-day-1/</guid><description>Android</description><pubDate>Wed, 30 Mar 2016 00:00:00 GMT</pubDate><category>Android</category></item><item><title>Explanation of set/pre/post Methods of Android Matrix</title><link>https://tcw165.github.io/blog/posts/set-pre-post-android-matrix/</link><guid isPermaLink="true">https://tcw165.github.io/blog/posts/set-pre-post-android-matrix/</guid><description>Android</description><pubDate>Fri, 19 Feb 2016 00:00:00 GMT</pubDate><category>Android</category></item></channel></rss>