summaryrefslogtreecommitdiffstats
path: root/_log/bumblebee.md
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2026-05-07 19:19:44 +0800
committerSadeep Madurange <sadeep@asciimx.com>2026-05-08 18:10:39 +0800
commit0140adc68d7c46f98658c5dbc51b53ff332da4ef (patch)
tree07e2ac5d0f045952f080287d97e0df466b506a6d /_log/bumblebee.md
parent0e0d336d7ec80ff00e0e4d9acf00267ad3faa214 (diff)
downloadwww-0140adc68d7c46f98658c5dbc51b53ff332da4ef.tar.gz
Improve prose.
Diffstat (limited to '_log/bumblebee.md')
-rw-r--r--_log/bumblebee.md34
1 files changed, 13 insertions, 21 deletions
diff --git a/_log/bumblebee.md b/_log/bumblebee.md
index bbe0490..a5e761d 100644
--- a/_log/bumblebee.md
+++ b/_log/bumblebee.md
@@ -1,40 +1,32 @@
---
-title: Built a browser automation script synthesizer
+title: Built a web script synthesizer
date: 2025-04-02
layout: post
project: true
thumbnail: thumb_sm.png
---
-One year at the trading firm. Webscrapers are causing problems. CPUs are
-saturated, servers are stalling.
+One year at the trading firm. Scripts are saturating CPUs, stalling servers;
+Forced to restart them.
-2025-02: Built a C# WinForms application to record browser sessions and
-automate the synthesis of scripts.
+2025-02: Built a tool to record browser sessions and synthesize better scripts.
<video style="max-width:100%; margin-bottom: 10px" controls="" poster="poster.png">
<source src="bee.mp4" type="video/mp4">
</video>
-Hosted WebView2 (Edge) in the WinForms application to render web content.
+Stack: C# WinForms, WebView2 (Edge), Scintilla.NET editor.
-Intercepted events by injecting JS hooks to web pages (client-side events) and
-listening to WebView events (internal browser events). Converted intercepted
-events to Selenium code by sending through if-else blocks.
+Injected JS hooks, WebView2 and the editor generate events. If-else blocks
+convert them to Selenium code. Optimizer squashes multiple events into single
+commands (e.g., calendar clicks → text input), uses heuristics to improve DOM
+addressing (xpath, id, element).
-Implemented a basic optimizer to squash event sequences into single commands
-(e.g., calendar clicks → text input), use heuristics to improve DOM addressing
-(xpath, id, element).
+Two linear lists store events and code—no ASTs. Mid-session manual edits desync
+lists, block optimizer. Workaround: only edit scripts at the end of recording.
-Integrated Scintilla.NET editor to allow user more control over the generated
-script.
-
-Events and code are stored in two linear lists. Without ASTs, mid-session
-manual edits desync the lists, block the optimizer. As a workaround, only edit
-scripts at the end of recording.
-
-2025-03: Shipped the first iteration. Began work on a key optimization: bypass
-the browser, grab data files directly when possible.
+2025-03: Shipped the first iteration. Began work on key optimization: bypass
+the browser, grab data files directly.
2025-04: Abandoned project. Left the firm.