summaryrefslogtreecommitdiffstats
path: root/_log/bumblebee.md
diff options
context:
space:
mode:
Diffstat (limited to '_log/bumblebee.md')
-rw-r--r--_log/bumblebee.md32
1 files changed, 17 insertions, 15 deletions
diff --git a/_log/bumblebee.md b/_log/bumblebee.md
index 57dc49d..e9b228b 100644
--- a/_log/bumblebee.md
+++ b/_log/bumblebee.md
@@ -1,32 +1,34 @@
---
-title: 'Bumblebee: web script synthesizer'
+title: Bumblebee
date: 2025-04-02
layout: post
project: true
thumbnail: thumb_sm.png
---
-For work. Browser session-to-code conversion. Pre-LLM.
+Few months at trading firm. Brittle ETL jobs. Scripts max out CPUs. No hardware
+bailout—budget cuts, €0.4 mil/month cloud costs. Workaround: restart stalling
+servers. Fine idea in every respect; only doesn't solve the problem.
+
+Need better scripts. Created tool on my own time to synthesize/optimize code
+from browser sessions:
<video style="max-width:100%; margin-bottom: 10px" controls="" poster="poster.png">
<source src="bee.mp4" type="video/mp4">
</video>
-Script quality pitiful. Created tool to generate them by analyzing browser events.
-
-Stack: C# WinForms host, WebView2 browser, Scintilla.NET editor.
-
-Data structure: twin lists--one for events, one for text.
+Stack: C# WinForms host, WebView2 (Edge), Scintilla.NET editor.
-Implementation:
+Data flow: injected JS hooks + browser → events → commands → optimizer →
+editor.
- - Interception: Injected JS hooks + internal browser events.
- - Transformation: Event → Token → Instruction table → String.
- - Optimization: Toss unnecessary clicks, squash input events.
- - Rendering: Two-way binding between text and Scintilla editor.
+Events, commands stored in two linear lists. Lists desync on manual edits,
+blocks optimizer. ASTs are overkill. Workaround: edit at end of session only.
-NOTE: Lists desync on manual edits; blocks optimizer. Replace lists
-with ASTs.
+First iteration of optimizer complete. Squashes event sequences into single
+commands (e.g., calendar clicks → text input). Better DOM addressing (xpath,
+id, element) using heuristics. Working on key optimization: bypass browser,
+grab data file directly when possible.
-Script generation: minutes/hours → seconds.
+Abandoned project—left the firm. Source code: under NDA.