<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Aaron Ang</title><link>https://aaron-ang.github.io/blog/</link><description>Recent content in Blog on Aaron Ang</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 27 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://aaron-ang.github.io/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>There Is No Reward Function for Meaning</title><link>https://aaron-ang.github.io/there-is-no-reward-function-for-meaning/</link><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/there-is-no-reward-function-for-meaning/</guid><description>&lt;h3 id="we-only-celebrate-progress-once"&gt;&lt;strong&gt;We Only Celebrate Progress Once&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A century ago, sending word to another continent meant waiting weeks for a ship to cross the ocean. Today, we complain when a video call lags for half a second. For some reason, we celebrate a breakthrough once, then it quietly becomes the baseline.&lt;/p&gt;
&lt;p&gt;Smartphones condensed cameras, maps, encyclopedias, music players, and libraries into devices that fit in our pockets, yet we&amp;rsquo;re quicker to notice a low battery than to appreciate all other aspects of convenience they bring to our lives. Once something remarkable becomes routine, we stop noticing it at all.&lt;/p&gt;</description></item><item><title>Building an On-Device Automobile Assistant</title><link>https://aaron-ang.github.io/building-an-on-device-automobile-assistant/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/building-an-on-device-automobile-assistant/</guid><description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; I wrote my first blog post two years ago, proud to have done it without any help from LLMs. This time, I have fully embraced them to speed up and sharpen my writing. That said, most LLM-generated text tends to share the same stylistic tone, so copy-pasting isn’t ideal. For technical posts like this, the challenge is balancing clarity with brevity. The core ideas still have to come from the writer, but LLMs provide the vocabulary and structure that make those ideas easier to read. I don’t expect that dynamic to change. Creative work, whether writing or coding, remains an iterative process, where each step refines the alignment between prose and concept.&lt;/p&gt;</description></item><item><title>Building an End-to-End Contract Discovery System</title><link>https://aaron-ang.github.io/building-an-end-to-end-contract-discovery-system/</link><pubDate>Fri, 02 Aug 2024 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/building-an-end-to-end-contract-discovery-system/</guid><description>&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;Red Hat&amp;rsquo;s Sales and Deal Management team recently faced a significant challenge: migrating &lt;strong&gt;hundreds of thousands&lt;/strong&gt; of documents from our legacy &lt;a href="https://www.salesforce.com/crm/"&gt;Salesforce CRM&lt;/a&gt; to the new &lt;a href="https://www.salesforce.com/sales/"&gt;Sales Cloud&lt;/a&gt; system. This migration is necessary to maintain efficient access to historical contract data, which is crucial for generating new contracts with existing clients and partners. The sheer volume of documents made manual migration impractical, risking millions in potential revenue and increased operational costs due to inefficient contract analysis.&lt;/p&gt;</description></item><item><title>Intro to LSM Tree</title><link>https://aaron-ang.github.io/intro-to-lsm-tree/</link><pubDate>Thu, 31 Aug 2023 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/intro-to-lsm-tree/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Log-Structured Merge-Tree (LSM-Tree)&lt;/strong&gt; is an &lt;strong&gt;append-only, key-value&lt;/strong&gt; data structure that provides &lt;strong&gt;high write throughput&lt;/strong&gt;. Write throughput is the amount of data that can be written to a storage system over a period of time. LSM Tree is used by various databases including &lt;a href="https://cassandra.apache.org/_/index.html"&gt;Apache Cassandra&lt;/a&gt;, &lt;a href="https://dbdb.io/db/leveldb"&gt;LevelDB&lt;/a&gt;, and &lt;a href="https://rocksdb.org"&gt;RocksDB&lt;/a&gt; just to name a few.&lt;/p&gt;
&lt;p&gt;On a high level, LSM appends all incoming data then uses merge sort to handle deduplication and deletions. Underlying LSM are a few in-memory and on-disk data structures which will be explained in the following sections.&lt;/p&gt;</description></item><item><title>Tinkering with Spark</title><link>https://aaron-ang.github.io/tinkering-with-spark/</link><pubDate>Wed, 19 Jul 2023 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/tinkering-with-spark/</guid><description>&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;In the summer of 2022, I interned at &lt;a href="https://shopee.com/"&gt;Shopee&lt;/a&gt; as a product analyst on the Search and Recommendation (SnR) data team. My primary responsibility was to deliver reliable and actionable analytics for product managers. Because we frequently ran large-scale queries throughout the day, any job delays or failures directly impacted reporting timelines and slowed progress toward feature improvements or releases.&lt;/p&gt;
&lt;p&gt;Our main tools for data processing and querying were &lt;a href="https://prestodb.io/"&gt;Presto&lt;/a&gt; and &lt;a href="https://spark.apache.org/"&gt;Apache Spark&lt;/a&gt;, supplemented by internal tools that abstracted away much of the underlying engineering complexity.&lt;/p&gt;</description></item><item><title>My Thoughts on “Dashboards Are Dead: 3 Years Later”</title><link>https://aaron-ang.github.io/my-thoughts-on-dashboards-are-dead-3-years-later/</link><pubDate>Mon, 03 Jul 2023 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/my-thoughts-on-dashboards-are-dead-3-years-later/</guid><description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Excluding the TL;DR section, this article was written &lt;strong&gt;without&lt;/strong&gt; any assistance from LLMs such as ChatGPT. While ChatGPT will probably write a better article than I do, my motivation is to express some candid thoughts and share my experiences. Writing this took way longer than it should have, but it’s always a nice feeling to pen down my reflections and have a finished product to show.&lt;/p&gt;
&lt;h2 id="tldr-with-the-help-of-chatgpt-"&gt;TL;DR (with the help of ChatGPT 🤖)&lt;/h2&gt;
&lt;p&gt;Responding to a Medium article that I chanced upon, I discuss the evolving role of dashboards in data teams. While dashboards are not dying, the focus has shifted towards delivering information in the best way possible. Drawing from my personal experiences interning at fintech and e-commerce companies, I share insights on the varying needs for data presentation and the challenges faced in managing dashboards. I also explore the potential impact of AI on data teams and suggest that embracing AI can enhance workflows and create new opportunities for data practitioners. I conclude by expressing optimism about the future of technology roles and the value we can find in working with AI.&lt;/p&gt;</description></item></channel></rss>