PageSourceSearch

https://mattwarren.org/about/

html mattwarren.org collected 2026-10-02 04:36:13 UTC 12,000 bytes, 353 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-us">
3
4  <head>
5  <link href="http://gmpg.org/xfn/11" rel="profile">
6  <meta http-equiv="X-UA-Compatible" content="IE=edge">
7  <meta http-equiv="content-type" content="text/html; charset=utf-8">
8
9  <!-- Enable responsiveness on mobile devices-->
10  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
11
12  <title>
13    
14      About &middot; Performance is a Feature!
15    
16  </title>
17
18  <!-- CSS -->
19  <link rel="stylesheet" href="/public/all.css">
20  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Serif:400,400italic,700%7CPT+Sans:400">
21
22  <!-- Icons -->
23  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/public/apple-touch-icon-precomposed.png">
24  <link rel="shortcut icon" href="/public/favicon.ico">
25
26  <!-- RSS -->
27  <link rel="alternate" type="application/rss+xml" title="RSS" href="/atom.xml">
28  
29  
29<script>
vendor: 349 bytes, lines 29-35
29
30    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
31    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
32    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
33    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
34
35    ga('create', '
35UA-71304808-1
vendor: 45 bytes, lines 35-36
35', 'auto', {'siteSpeedSampleRate': 10});
36    
36// See https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#anonymizeIp
37    ga('set', 'anonymizeIp', true);
38    ga('send', 'pageview');
39  </script>
39
40  
41  
41<script>
42  /**
43  * Function that tracks a click on an outbound link in Google Analytics.
44  * This function takes a valid URL string as an argument, and uses that URL string
45  * as the event label. Setting the transport method to 'beacon' lets the hit be sent
46  * using 'navigator.sendBeacon' in browser that support it.
47  */
48  var trackOutboundLink = function(url) {
49     ga('send', 'event', 'outbound', 'click', url, {
50       'transport': 'beacon',
51       'hitCallback': function(){document.location = url;}
52     });
53  }
54  </script>
54
55
56  
56<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
56
57  
57<script src="/public/jquery.scrolldepth.min.js"></script>
57
58
59  
60  
61  
62
63  <!-- https://help.github.com/articles/search-engine-optimization-for-github-pages/ -->
64  <!-- Begin Jekyll SEO tag v2.8.0 -->
65<title>About | Performance is a Feature!</title>
66<meta name="generator" content="Jekyll v3.10.0" />
67<meta property="og:title" content="About" />
68<meta name="author" content="Matt Warren" />
69<meta property="og:locale" content="en_US" />
70<link rel="canonical" href="http://www.mattwarren.org/about/" />
71<meta property="og:url" content="http://www.mattwarren.org/about/" />
72<meta property="og:site_name" content="Performance is a Feature!" />
73<meta property="og:type" content="website" />
74<meta name="twitter:card" content="summary" />
75<meta property="twitter:title" content="About" />
76<meta name="twitter:site" content="@matthewwarren" />
77<meta name="twitter:creator" content="@matthewwarren" />
78<script type="application/ld+json">
79{"@context":"https://schema.org","@type":"WebSite","author":{"@type":"Person","name":"Matt Warren","url":"www.mattwarren.org"},"headline":"About","name":"Performance is a Feature!","url":"http://www.mattwarren.org/about/"}</script>
79
80<!-- End Jekyll SEO tag -->
81
82
83</head>
84
85  
86
87
88
89
90
91  <body class="theme-base-08">
92    <!-- Google Tag Manager -->
vendor: 62 bytes, lines 92-93
92
93<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
93GTM-KVMGCS
vendor: 83 bytes, lines 93-94
93"
94height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
95<script>
vendor: 321 bytes, lines 95-99
95(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
96new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
97j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
98'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
99})(window,document,'script','dataLayer','
99GTM-KVMGCS
vendor: 3 bytes, line 99
99');
99</script>
99
100<!-- End Google Tag Manager -->
101
102<!-- Page Scroll Depth Tracking (feeds into Google Tag Manager) -->
103<script>
104jQuery(function() {
105  jQuery.scrollDepth({
106    pixelDepth: false,
107    userTiming: false
108  });
109});
110</script>
110
111<!-- Page Scroll Depth Tracking -->
112
113    <!-- Target for toggling the sidebar `.sidebar-checkbox` is for regular
114     styles, `#sidebar-checkbox` for behavior. -->
115<input type="checkbox" class="sidebar-checkbox" id="sidebar-checkbox">
116
117<!-- Toggleable sidebar -->
118<div class="sidebar" id="sidebar">
119  <div class="sidebar-item">
120    <p></p>
121  </div>
122
123  <nav class="sidebar-nav">
124    <a class="sidebar-nav-item" href="/">Home</a>
125
126    
127
128    
129    
130      
131        
132      
133    
134      
135    
136      
137        
138      
139    
140      
141        
142          <a class="sidebar-nav-item active" href="/about/">About</a>
143        
144      
145    
146      
147    
148      
149    
150      
151    
152      
153    
154      
155        
156      
157    
158      
159        
160      
161    
162      
163        
164      
165    
166      
167        
168      
169    
170      
171        
172      
173    
174      
175        
176      
177    
178      
179        
180      
181    
182      
183        
184      
185    
186      
187        
188      
189    
190      
191    
192      
193    
194      
195        
196          <a class="sidebar-nav-item" href="/resources/">Resources</a>
197        
198      
199    
200      
201    
202      
203    
204      
205        
206          <a class="sidebar-nav-item" href="/speaking/">Speaking</a>
207        
208      
209    
210      
211    
212      
213    
214      
215    
216      
217    
218      
219    
220      
221    
222      
223    
224      
225    
226      
227    
228      
229    
230      
231    
232      
233    
234      
235    
236      
237    
238      
239    
240      
241        
242      
243    
244
245    <a class="sidebar-nav-item" href="/tags/">Posts by Tag</a>
246    <a class="sidebar-nav-item" href="/postsByYear/">Posts by Year</a>
247
248    <a class="sidebar-nav-item" href="https://twitter.com/matthewwarren">Twitter</a>
249    <a class="sidebar-nav-item" href="https://github.com/mattwarren/">Github</a>
250    <a class="sidebar-nav-item" href="mailto:[email protected]">Email</a>
251  </nav>
252
253  <div class="sidebar-item">
254    <p>
255      &copy; 2026. All rights reserved.
256    </p>
257  </div>
258</div>
259
260
261    <!-- Wrap is the content to shift when toggling the sidebar. We wrap the
262         content to avoid any CSS collisions with our real content. -->
263    <div class="wrap">
264      <div class="masthead">
265        <div class="container">
266          <h3 class="masthead-title">
267            <a href="/" title="Home">Performance is a Feature!</a>
268          </h3>
269          <nav class="site-nav">
270            <a class="page-link" href="/">Home</a>
271            <a class="page-link" href="/postsByYear/">Archive</a>
272            <a class="page-link" href="/speaking/">Speaking</a>
273            <a class="page-link" href="/resources/">Resources</a>
274            <a class="page-link" href="/about/">About</a>
275            <div class="social-list">
276              <a href="https://twitter.com/matthewwarren">
277                <span class="icon  icon--twitter">
278                  <svg viewBox="0 0 16 16">
279                    <path fill="#55acee" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809
280                    c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"></path>
281                  </svg>
282                </span>
283              </a>
284              <a href="http://stackoverflow.com/users/4500/matt-warren">
285                <span class="icon  icon--stackoverflow">
286                  <svg viewBox="0 0 12.56 14.84">
287                    <polygon fill="#BCBBBB" points="10.6 13.52 10.6 9.56 11.92 9.56 11.92 14.84 0 14.84 0 9.56 1.32 9.56 1.32 13.52 10.6 13.52"></polygon>
288                    <path fill="#f48023" d="M4.52,9.78L11,11.14l0.28-1.28L4.8,8.5ZM5.36,6.66l6,2.8,0.56-1.2-6-2.8ZM7,3.7l5.08,4.24,0.84-1L7.88,2.7Zm3.28-3.12-1.08.8,4,5.32,1.08-.8Zm-6,12.2H11V11.46H4.3
2886v1.32Z" transform="translate(-1.72 -0.58)"></path>
289                  </svg>
290                </span>
291              </a>
292              <a href="https://github.com/mattwarren/">
293                <span class="icon  icon--github">
294                  <svg viewBox="0 0 16 16">
295                    <!-- <path fill="#FFFFFF" -->
296                    <path fill="#000000" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"></path>
297                  </svg>
298                </span>
299              </a>
300              <a href="/atom.xml">
301                <span class="icon  icon--feeds">
302                  <svg viewBox="0 0 16 16">
303                    <circle fill="#F57F25" cx="1.9" cy="14" r="1.8"></circle>
304                    <path fill="#F57F25" d="M8.9,15.8H6.3c0-3.5-2.8-6.2-6.2-6.2l0,0V7C5,7,8.9,10.9,8.9,15.8z"></path>
305                    <path fill="#F57F25" d="M10.8,15.8C10.8,9.9,6,5.1,0.1,5.1V2.5c7.4,0,13.3,6,13.3,13.3H10.8z"></path>
306                  </svg>
307                </span>
308              </a>
309            </div>
310          </nav>
311        </div>
312      </div>
313      <div class="container content">
314        
314<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CKYIL2JW&placement=mattwarrenorg" id="_carbonads_js"></script>
314
315        <div class="page">
316  <h1 class="page-title">About</h1>
317  <p class="message">
318  I'm a .NET (C#) coder and Microsoft MVP, who loves measuring, finding and fixing performance issues.
319  I've also been a contributor to <a href="https://github.com/dotnet/BenchmarkDotNet" target="_blank">BenchmarkDotNet</a> and <a href="https://github.com/ravendb/ravendb" target="_blank">RavenDB</a>.
320</p>
321
322<p>You can find me on <a href="https://github.com/mattwarren/" target="_blank">github</a>, <a href="http://stackoverflow.com/users/4500/matt-warren" target="_blank">stackoverflow</a> and <a href="https://twitter.com/matthewwarren" target="_blank">twitter</a></p>
323
324<p>I’m also a husband, father and <a href="http://www.sloughbaptistchurch.org.uk/" target="_blank">Christian</a>, I even preach at my local church <a href="http://www.sloughbaptistchurch.org.uk/churchbuilder/medialib.php?q=%22Warren%22" target="_blank">occasionally</a>!</p>
325
326</div>
327
328      </div>
329    </div>
330
331    <label for="sidebar-checkbox" class="sidebar-toggle"></label>
332
333    
333<script>
334      (function(document) {
335        var toggle = document.querySelector('.sidebar-toggle');
336        var sidebar = document.querySelector('#sidebar');
337        var checkbox = document.querySelector('#sidebar-checkbox');
338
339        document.addEventListener('click', function(e) {
340          var target = e.target;
341
342          if (!checkbox.checked ||
343             sidebar.contains(target) ||
344             (target === checkbox || target === toggle)) return;
345
346          checkbox.checked = false;
347        }, false);
348      })(document);
349    </script>
349
350    
351    
352  </body>
353</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.