Trimming sails is the art of reading wind you can’t see. The wind gives you a handful of clues — the way little yarn tell-tales stream off the sail, the shape the sail takes, how hard the boat leans — and good sailors learn to read those clues and adjust. The trouble is that it’s hard to practice on land, and on the water everything is happening at once.
Cache invalidation is one of the hardest things to solve in computer science. Cloud DevOps is also really hard. Why terraform decided that you needed to cache cloud provider state is beyond me.
It’s been about 3 weeks since I started at Microsoft again, and I think it’s important to share some internet memes about it. These memes do not necessariy represent any truth or lies about Microsoft and they are entirely my opinion and not necessarily Microsoft’s.
Writing C# code involves using msbuild as the build system that resolves dependencies, orders projects topologically, compiles your codes, gathers your output files, creates publishable artifacts, etc. I learned to author msbuild project files quite well at Microsoft, and I got a few opinions out of it. In this post, I will summarize the best practices I have learned working with msbuild for C#…
Introduction I am reading through Crafting Interpreters by Robert Nystom and one of the first exercises asks you to write and debug a doubly-linked list in C. Regretfully I confess I never actually learned how to use GDB, ever, and on macOS I need to use the LLVM toolchain which means using LLDB instead of GDB. In this post I will write using LLDB to debug a simple C program. Reference program
Today I was inspired to continue learning Rust by implementing what every CS student eventually has to know backwards and forwards to get a job: a singly linked list. This shouldn’t be too hard, my list will support: Appending elements to the list one at a time Iterating over elements Determining the length of the list by iterating from head to tail Deallocating the list Using Rust modules (just…
What is jq? jq is a wonderful tool for processing JSON in the command line. The prevalence of JSON in web APIs and data dumps makes jq a very imporant tool for interactively manipulating JSON. The tutorial is good enough to get you started with basic functionality, but I found that real usage quickly outgrew the scope of the tutorial. In this post I will show examples of using jq in slightly more…