🦀📕 All chapters of my book, Rust Atomics and Locks, are now freely available online: https://marabos.nl/atomics/
Enjoy! ✨
New blog post, the faker's guide to reading x86 assembly language!
Reading assembly language is an important skill not just for reverse engineering but also for anyone who debugs hard problems in native code. A lot of folks are scared of assembly language, but it's not as hard to read as you might think, and a lot easier than writing.
Working on a wildly hacky Tweet importer for preserving/continuing conversations. It writes directly into the backing Mastodon database so it's really only an option for self-hosted users.
My first import: https://mastodon.jakewharton.com/@jw/85157730779175614
I just published the very first Redwood release: v0.1.0!
https://github.com/cashapp/redwood/releases/tag/0.1.0
Redwood is our Kotlin multiplatform library and tooling for binding to platform-native UI using Compose.
There's still no docs or anything, but we wanted to start doing regular releases before the end of the year. And, well, today's our last working day of the year so it goes out today.
You can learn more about what Redwood is by watching the talk @jessewilson and I gave at Droidcon NYC: https://jakewharton.com/native-ui-with-multiplatform-compose/.
#Browsers, time to bring back the RSS/Atom feed icon displayed when a website has an RSS/Atom feed.
It's long past-due!
Fully divesting from the Dependabot ecosystem. Unless you are in the tooling space of GitHub's own code (JS, Go, Ruby) then it's effectively abandonware.
We've been sampling Renovate for a long time now in open source and lately for internal repos to great effect. It's never been a priority to switch, but it always felt inevitable.
Today my personal tipping point was reached. So it's now rolled out on a bunch of cashapp repos. Tomorrow I'll continue with some square repos and my personal ones.
Just published my first blog post!
It's about fixing a flaky paparazzi test:
https://code.cash.app/minding-your-handlers-and-queues
Big thanks to @jw and @jessewilson for reviewing!
The Android Team has open sourced our internal Rust Training! It's a four day course covering the full spectrum of Rust, from basic syntax to advanced topics like generics and error handling. It also includes Android-specific content on the last day such as:
- Building Android components in Rust.
- AIDL servers and clients.
- Interoperability with C, C++, and Java.
Done after ~18 hours!
Start: 69,666 followers
End: 3 followers(!?)
No matter how hard I try those three don't go away. It was four and then one dropped off. So it'll probably happen eventually.
Had to fix rate limiting check (off-by-one), add support for 404s (followers can return deleted users), add support for 503s (service unavailable).
Never hit a rate limit despite ~4,000 block/unblock calls per hour.
My API keys were inexplicably purged halfway through. Had to make new ones to finish.
@jw i got it to work via the ui. You can select text and then click on a line number
In addition to highlighting one or more lines in a GitHub link, you apparently can highlight from/to columns within those lines. I can't quite figure out how to do columns from the UI, but I somehow did it once accidentally.
Example from manually manipulating the URL: https://github.com/square/okhttp/blob/parent-3.14.9/okhttp/src/main/java/okhttp3/internal/platform/AndroidPlatform.java#L161C24-L164C24
In ~24 hours my Twitter account is going to stop following all accounts, will force-remove all of its followers, and keep a tool running to remove any new ones.
This will keep existing tweets up to preserve external links and allow other's retweets and favorites to remain. But mine will have a nice clean 0 for followers and following.
The tool I slapped together in an hour is at https://github.com/JakeWharton/singular-solution if you want to do the same, although admittedly its first production test will be tomorrow 🤞