tl;dr:I'm down a rabbit hole of learning how bignums work. In this post, I improve how the numbers are stored, implement a faster multiplication algorithm, and benchmark the time improvements.
tl;dr:What are the pain points, and what are the opportunities for tools. ”We conducted semi-structured interviews with 26 developers from a variety of companies that are working on copilots. We analyzed their responses to identify themes. Then we conducted two focus group sessions with tool builders that involved reviewing our interview findings and brainstorming possible solutions.” Austin shares the results here.
tl;dr:It’s common to stop at 90% of a project’s completion since the project has concrete deliverables that can be measured. The remaining 10% is more difficult to track. Austin discusses common activities to get from 90% to 100%: (1) Present the work to other teams. (2) Broadcast an email with the takeaways so that the rest of your organization knows about it. (3) Put the code somewhere that your coworkers can make use of later. (4) Write a blog post about it. Post it on Twitter, HN, and Reddit. (5) Sketch out a next-steps document, even if you have no plans to continue, that explains what you would do next and why. (6) Look for adjacent projects that could benefit. (7) Find someone that can poke holes in your work, then go address them.
tl;dr:Austin builds a superoptimizer, a tool that finds the optimal code for any given code snippet. “It generates every possible permutation of code instructions and tests each generated program for equivalence to the original program.”
tl;dr:“The esteemed CHI conference is happening this week, and I'm jealous that I can't be there. Instead, I'm going through the proceedings and reading all of the papers related to programming, of which many involve AI.”
tl;dr:"Not only have they come up during job interviews, but learning them changed how I think about problems." Austin's explains the following algorithms and data structures: (1) Topological sort. (2) Recursive descent parsing. (3) Myers string difference. (4) Bloom filter. (5) Piece table. (6) Splay tree.
tl;dr:"I was struggling to learn how to design web pages with HTML in 5th grade so I set off to make my own language. Yep. But that meant I first had to learn how to code and then learn how to make a compiler. It took about 10 years! Fun ensues."
tl;dr:"Whenever I think something is extremely simple, I walk through it step by step to uncover the complexities, design decisions, use cases, and potential features that I missed." Austin gives an example, here.
tl;dr:Austin concludes his story with what he learnt as a product minded engineer, including: (1) Always keep your users in the loop. Do not go build in isolation. (2) Don't underestimate engineering challenges that you have an external view of. (3) Voice your concerns to your team regularly and often. They might be to solve them far more quickly or identify a future roadblock. And more.