I made an easy decision tree for anyone considering using git submodules or a monorepo.
Tim Misiak
3,196 posts
OS/systems engineer. Worked on WinDbg for a while. I write about low level tech sometimes.
On bluesky: @timdbg.com
On mastodon/fediverse: @[email protected]
- All the principal engineers at Microsoft that I respect are completely comfortable with asking "dumb questions". When you don't feel like you have to prove your intelligence or worth, you learn more because you ask better questions.
- At Microsoft we have a role called "Escalation Engineer" that tend to be debugging experts that support a product. They debug some of the hardest problems that customers have. What does that look like at other companies? Is there another title used for a similar role?
- Absolutely insane the number of people calling this a "Microsoft outage". Yes, I know Windows isn't perfect (I worked on the system responsible for analyzing the crashes, after all), but short of getting rid of kernel drivers, it doesn't seem like much blame is on Windows.
- 1/n I have some bittersweet news to share. Today is my last day at Microsoft. After 12 years working on debugging tools, I'm going to start something new. My team is amazing, and I'm really going to miss them. Big thanks to them and all who used WinDbg and helped make it great.
- 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. And it's not as hard as you might think!
- C++29 feature: You can now dereference pointers multiple levels of indirection at once through a longer "arrow" operator.
- The lie they tell you in your Operating Systems class: "To unwind the stack, you follow the chain of frame pointers" The reality: "Unwinding a stack requires 87 different special cases for different compilers, compiler options, architectures, and obscure language features"
- Apparently @CanonUSA thinks it's acceptable to lock features of your (already expensive) camera behind a $5/month subscription. While I'm rarely a fan of a subscription model for client-side software, it's far worse if you've already paid $1000+ for a camera.
- My #1 feedback in code reviews for more junior developers is to document "why". Everyone wants to add comments on "what" when they first start out. Sometimes that's useful, but we can always figure out "what" given enough time. But the "why" will be lost to time.
- I just posted a new article about writing a Windows debugger from scratch in Rust! This is the first part of a series of posts I'm planning. In the first post, we'll look at the basic debugging event loop.
- Just posted a video on the basics of how WinDbg, NTSD, and DbgEng work. I thought it would be interesting to do an explanation through a bit of "reverse engineering". Check it out here:
- New blog post up! In this one, I talk about some x86 trivia I learned while working on the CPU emulator for Time Travel Debugging. When writing an emulator, you have to REALLY know how things work to get it right.
- TIL that not only can you directly access the bytecode of a python function, you can also just... assign new bytecode to a function.






