<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>saquib mian</title><link>https://saquib.me/</link><description>Recent content on saquib mian</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 13 May 2017 11:23:45 -0400</lastBuildDate><atom:link href="https://saquib.me/index.xml" rel="self" type="application/rss+xml"/><item><title>Test your system without caching, too</title><link>https://saquib.me/blog/test-your-system-without-caching-too/</link><pubDate>Sat, 13 May 2017 11:23:45 -0400</pubDate><guid>https://saquib.me/blog/test-your-system-without-caching-too/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;The most severe outages at Twitter were cache outages.&lt;/p&gt;&#10;&lt;p&gt;-Yao Yue (Engineer at Twitter)&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This blog post is based on some of the ideas in Yao Yue’s &lt;a href="https://www.infoq.com/presentations/pelikan"&gt;talk at QConSF&lt;/a&gt; last year, which I had the opportunity to attend, and some of the discussions I’ve heard at work recently.&lt;/p&gt;&#10;&lt;p&gt;When we usually think about caching, we realize pretty quickly that cache invalidation is &lt;a href="https://martinfowler.com/bliki/TwoHardThings.html"&gt;difficult to get right&lt;/a&gt;. You have to be careful to invalidate correctly, in the correct order, and avoid race conditions in cache PUTs. But we put a lot of effort into utilizing a cache because of the benefits it gives us: decreased load on our databases and a performance boost via super fast in-memory lookups. Indeed, caching is critical to a high performing service.&lt;/p&gt;</description></item><item><title>Using the TryGet pattern in C#</title><link>https://saquib.me/blog/using-the-tryget-pattern-in-csharp/</link><pubDate>Tue, 28 Mar 2017 19:59:00 -0400</pubDate><guid>https://saquib.me/blog/using-the-tryget-pattern-in-csharp/</guid><description>&lt;p&gt;The TryGet pattern is a little gem scattered throughout C# APIs, but many developers might not notice it. The general signature looks like this:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#575279;background-color:#faf4ed;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#286983"&gt;bool&lt;/span&gt; &lt;span style="color:#d7827e"&gt;TryGetSomething&lt;/span&gt;&lt;span style="color:#797593"&gt;(&lt;/span&gt; &lt;span style="color:#d7827e"&gt;SomeInput&lt;/span&gt; &lt;span style="color:#d7827e"&gt;i&lt;/span&gt;&lt;span style="color:#797593"&gt;,&lt;/span&gt; &lt;span style="color:#286983"&gt;out&lt;/span&gt; &lt;span style="color:#d7827e"&gt;Something&lt;/span&gt; &lt;span style="color:#d7827e"&gt;s&lt;/span&gt; &lt;span style="color:#797593"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can tell from the signature, the method returns a &lt;code&gt;bool&lt;/code&gt; and takes any number of input parameters, the last of which is always an output parameter. The name &lt;code&gt;TryGetSomething&lt;/code&gt; implies that the method will attempt to &lt;em&gt;get&lt;/em&gt; Something (given input &lt;code&gt;i&lt;/code&gt;), but that getting it may fail.&lt;/p&gt;</description></item><item><title>Hello, World</title><link>https://saquib.me/blog/hello-world/</link><pubDate>Sat, 16 Apr 2016 13:16:09 -0400</pubDate><guid>https://saquib.me/blog/hello-world/</guid><description>&lt;p&gt;I&amp;rsquo;m a software developer, and this blog will be about our craft. I think developers work hard to make beautiful things and I want us to share that experience among ourselves. I also wanted a place to organize my thoughts about the state of this industry. There are so many ways to solve the same problem, so let&amp;rsquo;s strive for excellence in everything we do.&lt;/p&gt;&#10;&lt;p&gt;I intend to write about a good number of things, but I will try to stay away from tutorials &amp;ndash; there&amp;rsquo;re a lot of those out on the internet.&lt;/p&gt;</description></item><item><title>Read a book every two weeks for a year</title><link>https://saquib.me/blog/read-a-book-every-two-weeks-for-a-year/</link><pubDate>Sat, 31 Dec 2011 19:59:29 -0500</pubDate><guid>https://saquib.me/blog/read-a-book-every-two-weeks-for-a-year/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently come to the conclusion that members of Generation Y are largely ignorant but opinionated.&lt;/p&gt;&#10;&lt;p&gt;Don&amp;rsquo;t get me wrong, we know a lot about some things, like pop culture and how to harness social media. But I think we entertain a very superficial interest in what we know. We&amp;rsquo;re very comfortable with being aware of only whats relevant and not delving into an issue and really trying to understand its complicated nature. We&amp;rsquo;re an opinionated group, but we&amp;rsquo;re also deeply uninformed. In a world where national revolutions are being organized through social media, we&amp;rsquo;re also gravely disconnected.&lt;/p&gt;</description></item></channel></rss>