zackermax-tinyfish

@zackermax-tinyfish

GitHub Profile
direct and practical with defensive undertones when challenged
Zacker is a pragmatic and detail-oriented reviewer who focuses on practical functionality over theoretical perfection. He provides clear explanations for his decisions and isn't afraid to push back on suggestions when he believes his approach is correct, often backing up his reasoning with technical details and real-world constraints.
207
Comments
74
PRs
6
Repos
67
Avg Chars
3
Harshness

Personality

Direct and uncompromising when defending technical decisions Values practical solutions over theoretical ideals Thorough in explaining technical reasoning Willing to acknowledge mistakes and make corrections Focused on maintaining existing functionality and avoiding breaking changes Results-oriented and efficiency-minded Collaborative but confident in technical judgment Detail-focused on implementation specifics

Greatest Hits

"I want to maintain the original data structure to avoid breaking other peoples' functionalities"
"This is intentional because we only want"
"We do not want to continue without"
"Am I wrong?"
"Not necessary. This code is just an internal tool"
"I already did this"

Focus Areas

Common Phrases

"I want to maintain" "This is intentional because" "We do not want to" "I don't know why it is better" "Am I wrong?" "Not necessary" "Good point, I removed" "This was to account for" "I'll delete this" "Done and tested" "Already done" "Agent removed" "Changed to" "Truncated to"

Sentiment Breakdown

questioning
3
neutral
152
constructive
6
positive
17
harsh_questioning
1

Review Outcomes

APPROVED
45
DISMISSED
1

Most Reviewed Authors

zackermax-tinyfish
161
SuveenE-TF
21
TinyGambe
4
jinxz01
4
jayfish0
3
taha-tf
3
frankfeng98
2
Zechereh
2
KateZhang98
2
ayc1
1

Spiciest Comments

friday/#1149 · tool_annotator_local/webpage-logger.js [view]
Hi Frank, I've finished changing it to be able to record events from iframes now., using a master logger in the window and sub-loggers in the iframes. However, it seems like recording HTML is "broken" because it's too big to be sent to the frontend as one big log. I'll look into sending the HTML separately tomorrow.

AI Persona Prompt

You are @zackermax-tinyfish, a pragmatic senior developer who reviews code with a focus on practical functionality and maintaining system stability. Your review style is direct and technical, often providing detailed explanations for implementation decisions. You're not afraid to push back on suggestions when you believe your approach is correct, frequently asking 'Am I wrong?' after explaining your reasoning. You prioritize avoiding breaking changes and maintaining existing functionality over theoretical improvements. When you agree with feedback, you respond concisely with phrases like 'Good point, I removed' or 'Done and tested.' You often defend your technical choices by explaining constraints like 'This is intentional because we only want' or 'I want to maintain the original data structure to avoid breaking other peoples' functionalities.' You're efficiency-minded and will state 'Not necessary' for superfluous suggestions, especially for internal tools. You acknowledge when something was temporary or outdated, saying 'This was to account for the previous implementation' or 'Removed the code, it's not necessary anymore.' When making corrections, you're straightforward: 'Agent removed,' 'Changed to,' or 'Truncated to.' You include screenshots and technical evidence to support your points and aren't hesitant to correct reviewers when they misunderstand your implementation. Your reviews balance being helpful with being protective of well-reasoned technical decisions.

Recent Comments (179 total)

friday/#630 Gracefully terminate run with learnings and summary · pyt/app/components/summarizer.py [view]
![image](https://github.com/user-attachments/assets/a1fe6b30-cd1d-49a0-993c-5300567e7693) If I make RecursionLimitSummarizerResponse inherit from SummarizerResponse, this is how the code will look. It cannot be the other way around because a child class cannot convert a parent class's mandatory Done field into an optional one. Neither can the parent class's mandatory retry: None field be overwr
friday/#341 Fixed typetool triggering on readonly elements [view]
> for the issue with clicking, can you see if using `page.get_by_prompt(query, timeout=300, mode="fast", experimental_query_elements_enabled=True)` fixes it? Success rate is higher with the new query_elements, but sometimes it times out and fails to click.
friday/#308 Implement open new tab tool · pyt/app/tools/open_new_tab.py [view]
The url is optional. If a url is not provided, a default new tab is opened. If a url is provided, a new tab is opened which immediately navigates to the given url.
friday/#1177 Clickannotator playback · tool_annotator_local/main.py [view]
We do not want to continue without ngrok. ngrok is necessary. The error logs are already sufficient to pinpoint the failure.
friday/#1177 Clickannotator playback · tool_annotator_local/main.py [view]
We want each browser to be a fresh instance and each user will only have one browser open at a time.
friday/#1177 Clickannotator playback · pyt/friday/services/weblog/session_replayer.py [view]
I want to maintain the original data structure to avoid breaking other peoples' functionalities in the same repo. Making the headers all lowercase might break their code. Creating a dict of lowercase, checking against that, then finding the item in the original structure to remove/pop it is less efficient than checking like I currently do. Am I wrong?
friday/#1277 Script to aggregate S3 data into a single JSONL · pyt/cory/inspect/aggregate_s3_into_jsonl.py [view]
Not necessary. This code is just an internal tool. The env is already configured.
friday/#1301 Allow importers to config weblog playback · tf_weblog/README.md [view]
Good point, I removed the yaml config option so the inputs must be set via env.
friday/#1301 Allow importers to config weblog playback · tf_weblog/weblog/replay.py [view]
This was to account for the previous implementation where the config could be set in yaml instead of env. This would have taken the api key from the yaml config to store in the env. I'll delete this line.
friday/#1301 Allow importers to config weblog playback · tf_weblog/README.md [view]
It's a pyt lib for config management and setting of safe defaults so that existing code that doesn't set a config will still work.
friday/#1295 Add csp header override to weblog playback · tf_weblog/weblog/replay.py [view]
Deleted the commented out line because the functionality no longer exists
friday/#1212 Add Target example for Cory [view]
LGTM
friday/#1206 Refactor Browser Service and Weblog into repo root · browser_service/pyproject.toml [view]
Noted. Updated browser_service and weblog pyproject.toml to be less restrictive.
friday/#1206 Refactor Browser Service and Weblog into repo root · browser_service/browser_service/__init__.py [view]
Hi Frank! My intent was to publish them as separate packages because there could be cases in the future where browser service is needed but weblog is not. I just discussed this with Kate, who thinks that they should be kept separate. Is it okay if we keep them as separate packages? For the second comment, my attempt to refactor browser service and weblog (and update the dependency accordingly)
friday/#1206 Refactor Browser Service and Weblog into repo root · browser_service/browser_service/__init__.py [view]
I did. Don't know why it said it would create one.