Dad, Computer Scientist & Entrepreneur. Passionate about developer tools. Previously head of Developer Platform at Uber. Ex Google, Facebook, and Intel.

Atherton, CA
Ali-Reza Adl-Tabatabai retweeted
Null pointer exceptions killing your developer productivity? Automatically modernize your Java codebase with Nullaway Auto Annotator! It unlocked massive gains in Developer productivity and code quality at Uber 🚀 Link in 🧵
1
1
6
926
Ali-Reza Adl-Tabatabai retweeted
Join us in exploring the nuances of PGO Optimization across Part 1 & Part 2 of our blog series. From theory to practice, we guide you through unlocking speed & efficiency in your apps. Begin the journey - Part 1: gitar.co/blog/unlocking-spee… Part 2: gitar.co/blog/unlocking-spee…
1
3
548
Tech debt due to stale feature flags makes code harder to maintain, test, and debug. Cleaning it up is always grunt work that's put off. At Gitar, we've built automation to take care of this. Reach out to find out mre.
Avoid the pitfalls of stale feature flags: they not only increase tech debt but also make debugging a nightmare. At Gitar, we're aiming to enhance every aspect of development. DM us to get an exclusive look at how we’re making development more reliable, secure & enjoyable.
2
348
Profile-guided optimizations (PGO) reduce capacity requirements and latency by 10-30% for Go, Rust, and other statically compiled languages in production. 🚀 All this without changing code. If this sounds too good to be true, its not. Processors waste significant time on front end stalls; i.e., I-cache and I-TLB misses, and branch mispredictions. These stalls are at the micro-architecture level, so you won't see them in your tools unless you look at hardware-level performance counters.
Boost the performance of your Go services by 10-30% without touching a line of code! Profile-Guided Optimization (PGO) uses runtime profiles to enhance your application's latency & efficiency. Read more about it on our blog: gitar.co/blog/unlocking-spee…
1
5
718
I’m fortunate to be joined by my awesome co-founders @rajbarik and @kageiit , and an exceptional founding team, @ask1604 , @sarinasays and Lazaro Clapp.
2
1
6
748
We’re also lucky to be supported by our exceptional investment partners at @Venrock who have strong conviction in our mission: @gan3sh and @ethanjb .
4
517
Some great work 👏 from @rajbarik on using Go Profile Guided Optimizations (PGO) for the #1BRC 🚀. Raj upstreamed the Go compiler changes for PGO to the Go codebase while he was at Uber. There's usually a 5-20% latency and cost reduction opportunity using PGO. At Uber, we got around 15% cost reduction in production on Go microservices, resulting in substantial cloud and capacity savings. 🙌 Statically compiled languages like Go, Rust, and C/C++ can't benefit as naturally from execution profiles as JIT-compiled languages like Java and JS can where a JIT compiler can guide its optimizations using profiles at runtime. Setting PGO up takes developer effort, both to set up initially and to run continuously...
I recently investigated the 1brc challenge and its Go implementation, especially in the context of PGO (Profile-Guided Optimization) which we upstreamed to Google. However, I found that the benchmark is predominantly I/O-bound, limiting the potential benefits of advanced compiler techniques like PGO. However, there is still 3.59+% improvement via PGO. My analysis was conducted on a Mac OS with M2/64GB hardware. See details below: 1) Without PGO, average time per run = 8.08s 2) Profiling reveals that approximately 66% of the execution time is dedicated to I/O operations, specifically buffio.(*Scanner).Scan, indicating that it's an I/O-bound benchmark. Additionally, strconv.ParseFloat accounts for about 9% of the time, while accumulator::ensure contributes to 0.9% of the overall execution duration. 3) The Profile-Guided Optimization (PGO) we introduced in the Go compiler yields a 3.59% enhancement in this benchmark. This improvement is primarily due to the inlining of several critical functions across packages. Notably, when the inlining threshold was raised from 80 to 2000 for hot functions, both accumulator::ensure (100) and strconv.ParseFloat (1505) were effectively inlined, contributing to this performance boost. // benchstat pkg: github.com/warpstreamlabs/on… │ before.txt │     pgo_after.txt     │ │ sec/op │ sec/op  vs base       │ YourFunction-12 8.085 ± 2% 7.795 ± 1% -3.59% (p=0.000 n=10) 4) Another interesting finding is that by applying Profile-Guided Optimization (PGO) on slice sizes, currently manually set at 1<<5, we can entirely eliminate the accumulator::ensure function from the hotpath. Increasing the slice size to 1<<9 ensures that there's no need to call ensure for expanding slice sizes [and the copies], though this is contingent on using the same measurements.txt file from run-to-run. Similarly, PGO can be applied to optimally set the buffer size in bufio.NewReaderSize(sr, 1<<19). References: 1. 1brc challenge: x.lingyaoai.com/gunnarmorling/st… 2. Go implementation: github.com/warpstreamlabs/on… 3. Our PGO upstreamed proposal: go.googlesource.com/proposal…
5
440
Here's the video to the "Developing at Uber Scale" keynote I gave at the Developer Productivity Engineering Summit last September. If you're curious about how we scaled 🚀 development at Uber, take a look at the video. piped.video/watch?v=xCBlaTSB…
1
7
753
Amen.
Replying to @github
Git has been around for decades and there have been no fundamental advancements to rethink the developer experience from the ground up. It is time for some change!
4
215
Ever wondered what's the best way to represent a range of numbers in code (e.g., 5, 6, ..., 25)? Should you use inclusive or exclusive lower and upper bounds? I ran into this gem (cs.utexas.edu/users/EWD/tran…) by Dijkstra written in 1982, linked from Rust's documentation on Regex matches. A great rationale for using a range with inclusive lower and exclusive upper bounds.
6
171
I've been writing a lot of code lately, mostly Rust. The memory safety guarantees, macros, and traits are great. I'm still learning and getting used to it, but at this point, I can't imagine going back to C++.
1
7
132
Profile-guided compiler optimizations (PGO) reduce capacity costs & latency by 15+%. Most companies writing Go & Rust services don't use PGO because its not a simple, automatic service: For statically-compiled languages, PGO requires integration with production profiling & CI/CD.
1
1
8
169
Ali-Reza Adl-Tabatabai retweeted
Nice Industry track FSE 2023 paper from Meta focused on eliminating dead codes due to stale feature flags and service endpoints: 2023.esec-fse.org/program/pr…
1
7
149
We built a lot of great tools at Uber to improve developer productivity. One of my favorites: DevPods -- remote, managed dev environments in the cloud. They were fast to spin up, eliminated environment issues (a major pain), and had fast build/indexing times for large monorepos.
1
8
269
Feature flags are essential to modern development but introduce tech debt if not managed. They are crucial for mobile where shipping a new App binary to fix a critical bug takes too long. We need better tools to manage and clean up flag debt automatically in code.
1
7
109
I'm having fun coding in Rust lately. I'm past fighting the borrow checker and like the static guarantees I get. I can see how Rust can compile to efficient code. It reminds me a little of PhP's reference counting and the optimizations I built in HHIR for the HipHop Jit at Meta.
7
119