Sign in

P-Y

@p-y.wtf
1.7K followers 406 following 985 posts

p-y.wtf | Android Eng @Square | instagram.com/py.ricau | LeakCanary, Radiography, square/logcat, square/PAPA. He/Him

PostsRepliesMedia
P-Y @p-y.wtf · 23/09/2026
Is there something memetic leading to wanting to do fancy rice krispies? Yesterday I asked gemini for exactly that! It suggested rice krispies demi spheres with caramel hearts inside, covered with a chocolate glaze.
001
P-Y @p-y.wtf · 20/09/2026
Ever seen the inside of a Square credit card magstripe reader?
140
P-Y @p-y.wtf · 15/09/2026
Abject what now?!
011
P-Y @p-y.wtf · 27/08/2026
Asking Claude to find a with minimal gradient route..
000
P-Y @p-y.wtf · 24/08/2026
Early still, but at the top here is the outcome written by an agent investigating a leak, following a method enforced via MCP. The same process holds the UI and the MCP, which means the agent can show its investigation in context and you can poke around.
1100
P-Y @p-y.wtf · 20/08/2026
Here's what the UI looks like in the desktop tool
010
P-Y @p-y.wtf · 20/08/2026
I ran benchmarks comparing shark's stripping vs hprof-redact, in those benchmarks LeakCanary/Shark is 3x to 4x faster, with significantly less GC churn. That's assuming you trust Claude with running JVM benchmarks :)
100
P-Y @p-y.wtf · 11/08/2026
010
P-Y @p-y.wtf · 11/08/2026
Also kind of fun that every task has intructions to show the result by starting an instance of the app with a custom title related to the task (to help distinguish them), so I start a bunch of parallel work and get all these shark icons popping up
010
P-Y @p-y.wtf · 11/08/2026
I've been vibe coding a new Java heap exploration desktop tool (more on that soon). One interesting outcome: the UI has a lot more explanation text than what you'd expect in typical desktop software. Claude is chatty even in the UI it produces. Still deciding if I like it.
220
P-Y @p-y.wtf · 07/08/2026
Apparently me saying "start the vacuum" us interpreted as "Так, давайте" which is.. russian?!
210
P-Y @p-y.wtf · 07/08/2026
Just got my Pebble Index 01, thanks for building this @ericmigi.com ! I asked Claude to set up the MCP integration on HomeAssistant and connected Index 01 to that (phone -> local network only). 7s is a bit long, but otherwise.. this is cool!
251
P-Y @p-y.wtf · 05/08/2026
Apparently Baron Noir a good show, worth watching? Fucking AirFrance has 14 episodes but it starts at S1E3.. wtf
100
P-Y @p-y.wtf · 04/08/2026
AND FINALLY.. same "dominated objects subtree", rendered as a treemap, this time with the bitmaps rendered inside their rectangles 🤣
211
P-Y @p-y.wtf · 04/08/2026
And here's the exact same subtree as a sunburst chart
100
P-Y @p-y.wtf · 04/08/2026
As for "dominated objects subtree", here's an example flame graph ish:
110
P-Y @p-y.wtf · 04/08/2026
Here's an example impl of that. Here right above MainActivity there's a ActivityClientRecord that dominates it as a direct parent. Only one path from one to the next. In between "all roots" and ActivityClientRecord, there are several possible paths => see "1 or 2 ways from here" at the top
110
P-Y @p-y.wtf · 31/07/2026
I've been documenting the design decisions that drive how LeakCanary works, as well as its history. Did you know LeakCanary was originally called MemoryDiaper? square.github.io/leakcanary/d... square.github.io/leakcanary/h... #AndroidDev
0263
P-Y @p-y.wtf · 10/06/2026
I enabled adb on my Skylight Calendar then had Claude make me a bubble head app launcher. That way I can add Trello & other useful things in place of the garbage everything apps #android
110
P-Y @p-y.wtf · 03/06/2026
At the top, the stacktrace of the exception, thrown from calling `AbstractCursor.moveToNext` from AndroidSqliteDriver.kt:308 Right below, the root cause stacktrace, shows where the connection was closed.. which is exactly in the same origin code, right before, at AndroidSqliteDriver.kt:307
010
P-Y @p-y.wtf · 06/05/2026
000
P-Y @p-y.wtf · 06/05/2026
truly fascinating
110
P-Y @p-y.wtf · 06/05/2026
Threw Claude at this, with repro + analysis. Pardon my slop, the conclusion does feel fairly tight
210
P-Y @p-y.wtf · 05/05/2026
Related, something I shared recently internally. I don't mind PM using Claude write code.. to generate a throw away prototype that's nicely integrated. But not as a mergeable PR.
1205
P-Y @p-y.wtf · 28/04/2026
I'm looking for a dryer, and the website is a long page where each item has a bunch of details, making it hard to compare so.. I just asked Claude to scrape it and make me a better UI instead..
050
P-Y @p-y.wtf · 12/04/2026
I fixed the leak
250
P-Y @p-y.wtf · 07/04/2026
"Internal temperature should reach 165°F as measured by food grade thermometer" Wtf Trader Joe's, how exactly are we supposed to stick Tortellini with a thermometer?!
200
P-Y @p-y.wtf · 18/03/2026
Accidentally, right.
180
P-Y @p-y.wtf · 16/03/2026
Really enjoyed reading Shroud, such a cool idea and a great story Also, really cool to see a Bluesky handle on the authors page. Hats off @aptshadow.bsky.social
152
P-Y @p-y.wtf · 16/03/2026
Claude Code is going haywire on me ELIMINATE
221
P-Y @p-y.wtf · 01/03/2026
How to detect LLMs sending you emails? ChatGPT suggested a Controlled Constraint Test: forcing an unnatural constraint e.g. here: "Before I consider an intro, could you explain the fit in exactly 3 bullet points, each under 15 words?"⁷ I tried, got a fitting response a few minutes later 😊
0120
P-Y @p-y.wtf · 25/02/2026
Wondering how many folks are wandering around with their laptop opened (e.g. in the back of a car) and tethering because they want Claude to keep moving while they're running errands
381
P-Y @p-y.wtf · 31/01/2026
ChatGPT said you can make mini crepes in a raclette ... Nope
10220
P-Y @p-y.wtf · 20/12/2025
Ok but www.sqlite.org/intern-v-ext...
020
P-Y @p-y.wtf · 10/12/2025
Interesting name for a burger joint..
030
P-Y @p-y.wtf · 10/12/2025
Apparently this rings true
Screencap from the podcast where PY says "the thing about me is I'm very stubborn"
040
P-Y @p-y.wtf · 07/12/2025
Whenever I see a string hanging free from a ceiling, I can't stop myself from thinking about Half-Life Barnacles Is it just me or is it generational trauma?
171
P-Y @p-y.wtf · 29/11/2025
This ended up being my "Thanksgiving on the beach" read
010
P-Y @p-y.wtf · 28/11/2025
Lemon pies are great as is, but they really level up if you add a layer of feuilletine: praliné (blended caramel+nuts) + chocolate + gavoches (rolled crunchy tiny crepes that you break down) Lemon curd: Lemon/lime juice+egg + butter (no corn flour 🤢)
260
P-Y @p-y.wtf · 08/11/2025
TIL that you can easily slice a pizza or pie in 5 pieces: make a paper pentagon, place it at the center, use corners as slice starting points. Paper pentagon? Tie a simple overhand knot with a long strip of paper, keeping it flat, cut off the ends. Wow. Life changing trick 😊
130
P-Y @p-y.wtf · 30/10/2025
Waiting for the build
A laptop building an Android app, with the Mediterranean sea in the background
170
P-Y @p-y.wtf · 24/10/2025
That's where ChatGTP pointed me to the Hodges–Lehmann estimator. It seems to be a fairly simple concept (see screenshots)
210
P-Y @p-y.wtf · 24/10/2025
In my experience, in a perf context (benchmarks or prod data), if you manage to isolate dimensions, you often end up with overlapping normal distributions (e.g. in the previous example 3 gaussians) I need to look into this clustering method called Gaussian Mixture Models
120
P-Y @p-y.wtf · 24/10/2025
Even with a test that does ONLY scrolling frames, the distribution different peaks/modes (e.g. fast, less fast, slow) Why? Some frames just move things already drawn by a few px, others have to redraw a whole new item. Saying "the P50 shifted from 6 ms to 4.6 ms" hides these clusters.
130
P-Y @p-y.wtf · 24/10/2025
Frames durations are ANYTHING BUT normally distributed. First, maybe your test sucks. Here, both "before" & "after" show a slow 1st (starting activity) & 40th frame (load images) That test isn't correctly focused on scrolling frames, it includes initial loading frames.
130
P-Y @p-y.wtf · 24/10/2025
Anyway, thanks ChatGPT, it does look like the Hodges–Lehmann estimator is what I was looking for to compute the P50 with CI shift in frame duration between a before & after benchmark of 100 iterations each (where each iteration has N frame and computes a P50 frame time) cc @rahulrav.com
010
P-Y @p-y.wtf · 24/10/2025
rods... WORDS, I MEANT WORDS godamnit
230
P-Y @p-y.wtf · 22/10/2025
Basically I can stop being a lazy ass asking the LLMs to write the code and instead be a lazy ass that uses your code
020
P-Y @p-y.wtf · 22/10/2025
Sometimes it's also helpful to visualize the values in order instead of as a distribution. For example, in this blog post I'm writing, you can see how the first frame is super slow, and then some other frame later is slow, in both before & after benchmark runs.
210
P-Y @p-y.wtf · 22/10/2025
- This would be most useful if you could load TWO json files, the before & after, and visually compare the distributions / see shifts - I'm guess you picked 100 bins as default, and (max-min)/ bin_count as bucket width. Not always good. Try other things, e.g. en.wikipedia.org/wiki/Freedma... ?
200