<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Banghao&#39;s Blog</title>
    <link>https://biboyqg.github.io/blog/</link>
    <description>Recent content on Banghao&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 06 Jun 2026 03:59:00 -0500</lastBuildDate>
    <atom:link href="https://biboyqg.github.io/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Spreadsheet-RL: Training Spreadsheet Agents with Real Excel and Reinforcement Learning</title>
      <link>https://biboyqg.github.io/blog/blog/spreadsheet-rl/</link>
      <pubDate>Sat, 06 Jun 2026 03:59:00 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/spreadsheet-rl/</guid>
      <description>Paper / Project page / Code / Dataset / Model
Spreadsheet software is one of the most ordinary, durable, and quietly difficult interfaces in computing. A spreadsheet can be a small personal budget, a messy monthly close workbook, an investment-banking model, a sales report, a supply-chain planning sheet, or a hand-built database that has survived for years because it works just well enough. That makes spreadsheets a natural target for AI agents: many people would like to say what they want, let the system edit the workbook, and receive a correct final file.</description>
    </item>
    <item>
      <title>My macOS Development Environment: A Comprehensive Dotfiles Guide</title>
      <link>https://biboyqg.github.io/blog/blog/macos-config/</link>
      <pubDate>Sun, 17 Aug 2025 16:53:11 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/macos-config/</guid>
      <description>After countless hours of tweaking and optimizing, I&amp;rsquo;ve finally crafted a macOS development environment that perfectly suits my workflow. This blog post takes you through my complete dotfiles setup, explaining each component and how they work together to create a productive, efficient development experience.
🎯 Philosophy My dotfiles are built around three core principles:
Efficiency: Everything should be accessible with minimal keystrokes Aesthetics: A beautiful terminal environment that inspires creativity Automation: Reduce repetitive tasks through smart automation 🛠️ Core Tools Overview Here&amp;rsquo;s the complete arsenal of tools that power my development environment:</description>
    </item>
    <item>
      <title>LLMarking: Adaptive Automatic Short-Answer Grading Using Large Language Models</title>
      <link>https://biboyqg.github.io/blog/blog/llmarking/</link>
      <pubDate>Wed, 12 Jun 2024 19:24:12 +0800</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/llmarking/</guid>
      <description>This is the official repo for Automatic Short Answer Grading (ASAG) project, named LLMarking, from Xi&amp;rsquo;an Jiaotong Liverpool University (XJTLU).
Using vLLM as the Large Language Model (LLM) inference framework and FastAPI as the HTTP service framework, this project can achieve high throughput of both LLM tokens delivered and request handling.
Feature This project aims to achieve high concurrency automatic short answer grading (ASAG) system and implement the construction of service.</description>
    </item>
    <item>
      <title>Let&#39;s build GPT from scratch with BPE!</title>
      <link>https://biboyqg.github.io/blog/blog/bpe/</link>
      <pubDate>Wed, 08 May 2024 14:15:07 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/bpe/</guid>
      <description>1. Workshop Description Quick question: Have you ever thought about a string being transformed into a word vector so that it can be further fed into a machine learning algorithm?
In this workshop, we are going to dive into the fascinating world of Natural Language Processing (NLP) with our focus on Byte Pair Encoding (BPE) algorithm. We will discover how this powerful technique segments text into subword units, enabling efficient representation of words as vectors.</description>
    </item>
    <item>
      <title>IoT-Enabled Home Security Camera</title>
      <link>https://biboyqg.github.io/blog/blog/iot-camera/</link>
      <pubDate>Sun, 05 May 2024 16:18:51 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/iot-camera/</guid>
      <description>Video GitHub
1. Motivation Facial recognition technology has become prevalent in all areas of life. Whether you work in security, law enforcement, or manufacture personal devices, the presence of facial recognition for various purposes is evident. Our project seeks to dive into this increasingly common technology and apply it to a place that needs upgrades, such as banks. Many banks are on old applications or using outdated technology, limiting the effectiveness of their work.</description>
    </item>
    <item>
      <title>Quantization on CenterPoint</title>
      <link>https://biboyqg.github.io/blog/blog/quantization-on-centerpoint/</link>
      <pubDate>Mon, 01 Apr 2024 16:32:18 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/quantization-on-centerpoint/</guid>
      <description>Take mmdetection as an example First find the Runner class: This is the place where the build of the model is completed:
class Runner: def __init__(...): ... ... self.model = self.build_model(model) # wrap model self.model = self.wrap_model( self.cfg.get(&amp;#39;model_wrapper_cfg&amp;#39;), self.model) # get model name from the model class if hasattr(self.model, &amp;#39;module&amp;#39;): self._model_name = self.model.module.__class__.__name__ else: self._model_name = self.model.__class__.__name__ ... ... Learn about how pytorch-quantization works by diving into its source code: Code about the quantization function respect to a specific Pytorch model as input: quant_utils.</description>
    </item>
    <item>
      <title>Daily Log</title>
      <link>https://biboyqg.github.io/blog/blog/daily-log-1/</link>
      <pubDate>Wed, 20 Mar 2024 06:35:10 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/daily-log-1/</guid>
      <description>3.12 Managed to understand the whole code base of the CLIP repo from OpenAI. Planned to take a look at CAT-Seg: Cost Aggregation for Open-Vocabulary Semantic Segmentation, to understand how to implement Open-Vocabulary Segmentation (OVS) using CLIP.
3.13 1. DETR Got a basic understanding of DETR, which is an awesome end-to-end 2D object detection architecture, with its downside lies in:
Long training period Difficulty of detecting small objects but has advantages in:</description>
    </item>
    <item>
      <title>CATseg: A complete walk through of the model architecture</title>
      <link>https://biboyqg.github.io/blog/blog/catseg/</link>
      <pubDate>Fri, 15 Mar 2024 05:21:09 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/catseg/</guid>
      <description>1. Model Architecture setup and evaluation data flow(for ade150k) CATSeg setup:
backbone: D2SwinTransformer -&amp;gt; Swintransformer -&amp;gt; BasicLayer(2) -&amp;gt; SwinTransformerBlock -&amp;gt; WindowAttention
sem_seg_head: CATSegHead.from_config -&amp;gt; CATSegPredictor -&amp;gt;
Load CLIP model -&amp;gt; Load text templates -&amp;gt; class_embeddings(self.class_texts, prompt_templates, clip_model) -&amp;gt; for each class:
bpe encode classname in different templates and save results in variable texts (80(number of templates), 77(number of sentence length)). CLIP encode texts : texts go through token_embedding(nn.Embedding) (80,77,768(hidden_dim)) texts go through a 12 layers of ResidualAttentionBlock (80,77,768) take features of texts from the eot_token (80,768) do the above for all classes (150(number of test classes),80,768)</description>
    </item>
    <item>
      <title>Argparse: A User-friendly Tool to Write CLI Interface</title>
      <link>https://biboyqg.github.io/blog/blog/argparse/</link>
      <pubDate>Fri, 08 Mar 2024 07:38:30 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/argparse/</guid>
      <description>1. Introduction Hello fellows! Today I&amp;rsquo;m excited to share insights about the argparse module, a robust and intuitive tool for creating command-line interfaces in Python. What makes argparse particularly fascinating to me is its ability to enable users to quickly leverage Python scripts with custom configurations and functionalities, without the need to dive into the underlying source code. This feature of argparse has captured my interest and again, showcasing its value in making Python files reusable and accessible for diverse applications.</description>
    </item>
    <item>
      <title>Real-time Object Recognition in Chess: Personalized Tuning and Hardware Acceleration</title>
      <link>https://biboyqg.github.io/blog/blog/object-detection-chess/</link>
      <pubDate>Sat, 05 Aug 2023 16:53:11 -0500</pubDate>
      <guid>https://biboyqg.github.io/blog/blog/object-detection-chess/</guid>
      <description>1. Selected and customized the YOLOv5 model for Chinese chess annotation data. 2. Conducted testing and analysis of the model. The results indicated exceptional accuracy in recognition capabilities. However, a significant shortfall was identified in terms of efficiency, with the model taking approximately 6 seconds to process a single image.
3. Implemented model optimization. We substitute the YOLOv5 model with a more lightweight variant, YOLOv5-lite and convert the model into the ONNX format to leverage hardware acceleration, thereby enhancing computational efficiency.</description>
    </item>
  </channel>
</rss>
