<?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/</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/index.xml" rel="self" type="application/rss+xml"/><item><title>opthash</title><link>https://aaron-ang.github.io/projects/opthash/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/opthash/</guid><description>&lt;p&gt;Rust implementations of &lt;strong&gt;Elastic Hashing&lt;/strong&gt; and &lt;strong&gt;Funnel Hashing&lt;/strong&gt; from &lt;em&gt;Optimal Bounds for Open Addressing Without Reordering&lt;/em&gt; (Farach-Colton, Krapivin, Kuszmaul, 2025) — open-addressing hash maps that achieve optimal expected probe complexity without reordering elements after insertion.&lt;/p&gt;
&lt;p&gt;Both maps share a single-arena allocation indexed by per-level descriptors, 7-bit fingerprint control bytes, SIMD control-byte scans for occupancy and lookup, and per-level salt re-randomization to decorrelate probe paths across levels. They differ in how they probe within a level. Published to &lt;a href="https://crates.io/crates/opthash"&gt;crates.io&lt;/a&gt; and &lt;a href="https://pypi.org/project/opthash"&gt;PyPI&lt;/a&gt; (via PyO3 bindings), with CI and continuous benchmarking.&lt;/p&gt;</description></item><item><title>Raft</title><link>https://aaron-ang.github.io/projects/raft/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/raft/</guid><description>&lt;p&gt;A complete implementation of the &lt;a href="https://raft.github.io/raft.pdf"&gt;Raft consensus algorithm&lt;/a&gt; in Go: leader election with randomized election timeouts and term management, log replication and consistency checks via AppendEntries RPCs, commitment of entries across the cluster, and state persistence for crash recovery.&lt;/p&gt;
&lt;p&gt;Tech stack: Go.&lt;/p&gt;</description></item><item><title>About</title><link>https://aaron-ang.github.io/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/about/</guid><description>&lt;h1 id="hi--im-aaron"&gt;Hi 👋 I’m Aaron!&lt;/h1&gt;
&lt;p&gt;I’m a Data Platform Engineer at &lt;a href="https://www.tradeweb.com"&gt;Tradeweb&lt;/a&gt;, where I work on the data infrastructure that powers the business. I’m drawn to systems under the hood — storage engines, query processing, and the trade-offs that make data fast and reliable at scale. Before Tradeweb, I worked at &lt;a href="https://www.arm.com"&gt;Arm&lt;/a&gt;, &lt;a href="https://www.redhat.com"&gt;Red Hat&lt;/a&gt;, and &lt;a href="https://www.sea.com/products/shopee"&gt;Shopee&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I earned my MS in Computer Science &amp;amp; Engineering at &lt;a href="https://cse.ucsd.edu/"&gt;UC San Diego&lt;/a&gt; and my BA in Computer Science &amp;amp; Economics at &lt;a href="https://www.bu.edu/cs/"&gt;Boston University&lt;/a&gt;, where I did database systems research at the &lt;a href="https://disc.bu.edu"&gt;DiSC Lab&lt;/a&gt; on log-structured storage. I’ve lived in &lt;a href="https://maps.app.goo.gl/7231HV3MooqW8DZj7"&gt;Singapore&lt;/a&gt; and the U.S., and I speak English and 中文.&lt;/p&gt;</description></item><item><title>CodeCrafters Builds</title><link>https://aaron-ang.github.io/projects/codecrafters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/codecrafters/</guid><description>&lt;p&gt;Built-from-scratch reimplementations of real systems, following &lt;a href="https://codecrafters.io"&gt;CodeCrafters&lt;/a&gt;’ “Build Your Own X” challenges — all in Rust. Each one meant working directly with a system’s wire format, on-disk format, or grammar: parsing protocols, byte layouts, B-trees, and event loops by hand.&lt;/p&gt;
&lt;p&gt;The ones I went deepest on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/aaron-ang/bittorrent-rs"&gt;BitTorrent&lt;/a&gt; — bencode parsing, tracker communication, the peer handshake, and downloading and verifying file pieces over TCP&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aaron-ang/redis-rs"&gt;Redis&lt;/a&gt; — a Redis server speaking the RESP protocol with core commands&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aaron-ang/shell-rs"&gt;Shell&lt;/a&gt; — a POSIX-style shell: a REPL with builtins, external command execution, quoting, redirection, and pipelines&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aaron-ang/interpreter-rs"&gt;Interpreter&lt;/a&gt; — a tree-walk interpreter for the &lt;a href="https://craftinginterpreters.com"&gt;Lox language&lt;/a&gt;: scanning, parsing to an AST, and evaluation with variables, control flow, and functions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also built: &lt;a href="https://github.com/aaron-ang/kafka-rs"&gt;Kafka&lt;/a&gt;, &lt;a href="https://github.com/aaron-ang/sqlite-rs"&gt;SQLite&lt;/a&gt;, &lt;a href="https://github.com/aaron-ang/git-rs"&gt;Git&lt;/a&gt;, &lt;a href="https://github.com/aaron-ang/dns-server-rs"&gt;DNS server&lt;/a&gt;, &lt;a href="https://github.com/aaron-ang/http-server-rs"&gt;HTTP server&lt;/a&gt;, and &lt;a href="https://github.com/aaron-ang/grep-rs"&gt;grep&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Unix File System</title><link>https://aaron-ang.github.io/projects/unix-file-system/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/unix-file-system/</guid><description>&lt;p&gt;A Unix-style file system built on inodes, implemented in C on top of a virtual disk (8,192 blocks × 4KB, stored as a single file). It lays out a superblock, directory table, inode and data bitmaps, and an inode table, then runs file and directory operations against that on-disk layout.&lt;/p&gt;
&lt;p&gt;Tech stack: C.&lt;/p&gt;</description></item><item><title>Threading Library</title><link>https://aaron-ang.github.io/projects/threading-library/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/threading-library/</guid><description>&lt;p&gt;A user-level threading library in C: a round-robin scheduler that preempts threads using &lt;code&gt;SIGALRM&lt;/code&gt;, a pthread-style API (&lt;code&gt;create&lt;/code&gt;/&lt;code&gt;exit&lt;/code&gt;/&lt;code&gt;join&lt;/code&gt;/&lt;code&gt;self&lt;/code&gt;), and synchronization primitives — signal-blocking critical sections and a mutex implementation.&lt;/p&gt;
&lt;p&gt;Tech stack: C.&lt;/p&gt;</description></item><item><title>PredicT</title><link>https://aaron-ang.github.io/projects/predict/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/predict/</guid><description>&lt;h3 id="mbta-congestion-predictor"&gt;MBTA congestion predictor&lt;/h3&gt;
&lt;p&gt;Nobody likes a crowded subway. PredicT estimates how busy Boston&amp;rsquo;s “T” will be from three inputs — date, time, and subway line — so you can plan around the crowds.&lt;/p&gt;
&lt;p&gt;We pulled publicly available MBTA tap-in and tap-out records from every station across the day, cleaned them, and trained &lt;a href="https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML_Basics"&gt;InterSystems IntegratedML&lt;/a&gt; on the result to predict passenger volume. A React front end queries those predictions through a Flask API.&lt;/p&gt;</description></item><item><title>Terrier Alert</title><link>https://aaron-ang.github.io/projects/terrier-alert/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/terrier-alert/</guid><description>&lt;h3 id="a-subscription-and-notifier-service-for-boston-universitys-undergraduate-courses"&gt;A subscription and notifier service for Boston University’s undergraduate courses.&lt;/h3&gt;
&lt;p&gt;Originally created as a personal web scraping tool for college courses, I decided to make the service publicly available by designing and implementing additional functionality over Winter 2022.&lt;/p&gt;
&lt;p&gt;Additional improvements were made in Spring 2023 to make the system more robust. Any feedback is welcome via the &lt;a href="https://t.me/BUClassBot"&gt;Telegram Bot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The service is free to use, running on &lt;a href="https://render.com/"&gt;Render&lt;/a&gt; and MongoDB Atlas&amp;rsquo;s free tier.&lt;/p&gt;</description></item><item><title>Letter Boxed</title><link>https://aaron-ang.github.io/projects/letter-boxed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/letter-boxed/</guid><description>&lt;h3 id="puzzle-solver-and-visualizer-for-nyts-letter-boxed"&gt;Puzzle solver and visualizer for NYT&amp;rsquo;s &lt;a href="https://www.nytimes.com/puzzles/letter-boxed"&gt;Letter Boxed&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It started as a Java project for &lt;a href="https://www.cs.bu.edu/courses/cs112/"&gt;CS 112&lt;/a&gt; in Spring 2022. That summer I rewrote the recursive backtracking solver in &lt;a href="https://www.typescriptlang.org"&gt;TypeScript&lt;/a&gt;, built a &lt;a href="https://react.dev"&gt;React&lt;/a&gt; frontend to visualize it, and deployed it to GitHub Pages.&lt;/p&gt;
&lt;p&gt;The solver did all its work on the client, and heavy puzzles would freeze the UI. I chased that problem for a while: first I moved the algorithm to a Google Cloud Function (which stopped the freezing but added network latency), then rewrote that function in &lt;a href="https://go.dev"&gt;Go&lt;/a&gt; to bring latency back down. Eventually I brought the solver home to the client for good — running it in a &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API"&gt;Web Worker&lt;/a&gt; so the heavy computation never blocks the interface.&lt;/p&gt;</description></item><item><title>Tidbits</title><link>https://aaron-ang.github.io/projects/tidbits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/tidbits/</guid><description>&lt;p&gt;Won &lt;strong&gt;1st Place&lt;/strong&gt; at &lt;a href="https://yhack-2024.devpost.com/"&gt;YHack 2024&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tidbits transforms any lecture (audio or visual) into fun, byte-sized shorts with a one-click upload. We leverage what students are already familiar with: short-form video series with a core scroll-based functionality popularized by TikTok. Our goal is to transform these traditionally “unhealthy” and ”unintentional” forms of entertainment into deliberate methods of active learning.&lt;/p&gt;
&lt;p&gt;Built alongside three other students in a span of 24 hours.&lt;/p&gt;
&lt;p&gt;Tech Stack: Figma, Next.js, Sass, &lt;a href="https://fastapi.tiangolo.com/"&gt;FastAPI&lt;/a&gt;, &lt;a href="https://supabase.com/"&gt;Supabase&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>ArcAid</title><link>https://aaron-ang.github.io/projects/arcaid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/arcaid/</guid><description>&lt;h3 id="zero-knowledge-financial-aid-application-tool"&gt;Zero-Knowledge Financial Aid Application Tool&lt;/h3&gt;
&lt;p&gt;Won &lt;strong&gt;Best Education Hack&lt;/strong&gt;, &lt;strong&gt;Best Use of Aleo, and Wolfram Award (top 8)&lt;/strong&gt; at &lt;a href="https://2023f.pennapps.com/"&gt;PenApps XXIV&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Every year, more than &lt;strong&gt;$200 billion&lt;/strong&gt; in federal student aid is disbursed through slow, cumbersome, and non-private channels. ArcAid uses &lt;strong&gt;Aleo&lt;/strong&gt;’s zk-SNARKs to make applying for financial aid to multiple schools secure, efficient, and private.&lt;/p&gt;
&lt;p&gt;We believe the benefits are two-fold. First, more deserving students will be encouraged to apply for financial aid. Second, institutions will be more willing to process applications since administrative overhead is significantly reduced.&lt;/p&gt;</description></item><item><title>AtlasAI</title><link>https://aaron-ang.github.io/projects/atlasai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/atlasai/</guid><description>&lt;p&gt;Won &lt;strong&gt;Best Use of Convex&lt;/strong&gt; at &lt;a href="https://cal-hacks-10.devpost.com/"&gt;Cal Hacks 10.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wearables have given us an abundance of health data, but most of us do little with it.&lt;/p&gt;
&lt;p&gt;AtlasAI bridges that gap. It analyzes each user’s long-term health data and daily schedule to suggest concrete adjustments — flagging the times of day you tend to be stressed, for instance, and recommending breaks. Over time, those prompts help users trace the root causes of their stress and act on them.&lt;/p&gt;</description></item><item><title>Marlin</title><link>https://aaron-ang.github.io/projects/marlin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/marlin/</guid><description>&lt;p&gt;Won &lt;strong&gt;3rd Place — Cybersecurity&lt;/strong&gt; at &lt;a href="https://cerebral-beach-hacks.devpost.com"&gt;Cerebral Beach Hacks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Marlin is a Chrome extension designed to combat the rising threat of business email compromise, which caused over &lt;strong&gt;$2.9B&lt;/strong&gt; in losses in 2023 according to FBI reports. By making email security analysis accessible and user-friendly, Marlin helps protect users from sophisticated phishing attempts that often bypass traditional security measures. The extension works by extracting and anonymizing email content, analyzing it using an open-source Mixtral model via Kindo AI, and presenting users with clear, actionable insights about potential security threats.&lt;/p&gt;</description></item><item><title>Tissue.ai</title><link>https://aaron-ang.github.io/projects/tissue-ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/tissue-ai/</guid><description>&lt;p&gt;Tissue.AI was built to help new developers overcome one of the biggest barriers to contributing to open-source projects: &lt;strong&gt;figuring out where to start&lt;/strong&gt;. Facing large, unfamiliar codebases can feel daunting, and current LLM agents are still limited in their ability to solve real-world coding problems. By providing context, structured guidance, and step-by-step directions, Tissue.AI empowers newcomers to tackle GitHub issues with confidence. Users simply paste the link to an issue, and the system leverages &lt;a href="https://www.letta.com"&gt;Letta&lt;/a&gt;’s MemGPT technology to analyze the repository, gather relevant information, and present it in an interactive and approachable way. This enables developers—especially beginners—to better understand codebases and use the structured output alongside agentic coding tools like Cursor or Copilot.&lt;/p&gt;</description></item><item><title>Surgical.AI</title><link>https://aaron-ang.github.io/projects/surgical-ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/surgical-ai/</guid><description>&lt;p&gt;Surgical.AI tackles a critical healthcare safety issue: the &lt;strong&gt;3,000&lt;/strong&gt; annual cases of surgical tools being left inside patients&amp;rsquo; bodies during operations. Inspired by a case where a tool &amp;ldquo;the size of a dinner plate&amp;rdquo; was discovered inside a patient 18 months after a c-section, this project aims to prevent such incidents through AI-powered tool tracking, even when traditional manual tracking by medical staff fails.&lt;/p&gt;
&lt;p&gt;Our system, named Surgi, uses real-time video streaming to track and segment surgical tools during operations, maintaining a constant inventory of their status (in place, out of place, or missing). Surgi features hands-free voice communication and the ability to instantly replay the last known location of any tool, making it seamless for surgical staff to use during procedures.&lt;/p&gt;</description></item><item><title>Numlingo</title><link>https://aaron-ang.github.io/projects/numlingo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/numlingo/</guid><description>&lt;h3 id="a-number-recall-game-for-language-learners"&gt;A number-recall game for language learners&lt;/h3&gt;
&lt;p&gt;Numlingo drills active recall of numbers in the language you&amp;rsquo;re learning: 60 seconds to translate as many randomly generated numbers as you can, as accurately as you can. Play solo, or join a multiplayer lobby for your language and race others.&lt;/p&gt;
&lt;p&gt;Real-time communication is powered by the Colyseus multiplayer framework which is a wrapper around Express.js. The client and server establish a web socket connection under the hood for communications.&lt;/p&gt;</description></item><item><title>StarGazer</title><link>https://aaron-ang.github.io/projects/stargazer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://aaron-ang.github.io/projects/stargazer/</guid><description>&lt;h3 id="marvel-at-celestial-bodies-from-anywhere"&gt;Marvel at celestial bodies from anywhere!&lt;/h3&gt;
&lt;p&gt;This portable kit, along with a basic telescope, offers a cheap and simple way to observe planets. Simply choose the planet you want to observe in our app. The app will calculate the necessary adjustments based on your current location and trigger the gears in the hardware to rotate. Once that&amp;rsquo;s done, align your telescope with the pivot and the planet swings into view.&lt;/p&gt;</description></item><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>