<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Brian Curtin</title><link>https://briancurtin.com/</link><description>Brian Curtin's blog</description><atom:link href="https://briancurtin.com/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2021 &lt;a href="mailto:brian@python.org"&gt;Brian Curtin&lt;/a&gt; 
&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png"/&gt;&lt;/a&gt;
</copyright><lastBuildDate>Wed, 17 Feb 2021 02:22:43 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Black Canyon 100K 2021 Race Recap</title><link>https://briancurtin.com/articles/black-canyon-100k-2021-race-recap/</link><dc:creator>Brian Curtin</dc:creator><description>&lt;figure&gt;&lt;img src="https://briancurtin.com/images/black-canyon-2021/soap-creek.png"&gt;&lt;/figure&gt; &lt;div&gt;&lt;p&gt;"Net down­hill" is some­what syn­ony­mous with "fast". In road run­ning, there are
reg­u­la­tions in place that lim­it how much drop a point-­to-­point course can have
be­fore it be­comes in­valid for record pur­pos­es. Boston, a gen­er­al­ly fast
marathon—­most­ly due to its qual­i­fi­ca­tion pur­pos­es—is aid­ed in its rel­a­tive speed
due to a –447' net el­e­va­tion. It's  &lt;em&gt;too&lt;/em&gt;  down­hill for records pur­pos­es.
When Ge­of­frey Mu­tai ran 2:03:02 in 2011 it was the fastest marathon at the time,
but not a world record.&lt;/p&gt;  &lt;p&gt;Trail run­ning is a dif­fer­ent sto­ry all to­geth­er. While trails vary wide­ly, they
gen­er­al­ly fa­vor the up­hill. Black Canyon 100K is not like that.&lt;/p&gt;  &lt;p&gt;I un­der­es­ti­mat­ed it. Don't make that same mis­take.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://briancurtin.com/articles/black-canyon-100k-2021-race-recap/"&gt;Read more…&lt;/a&gt; (22 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>100K</category><category>black canyon</category><category>races</category><category>trail running</category><category>ultra running</category><guid>https://briancurtin.com/articles/black-canyon-100k-2021-race-recap/</guid><pubDate>Tue, 16 Feb 2021 20:00:00 GMT</pubDate></item><item><title>Using Elastic APM to visualize asyncio behavior</title><link>https://briancurtin.com/articles/using-elastic-apm-to-visualize-asyncio-behavior/</link><dc:creator>Brian Curtin</dc:creator><description>&lt;figure&gt;&lt;img src="https://briancurtin.com/images/apm/after.png"&gt;&lt;/figure&gt; &lt;div&gt;&lt;p&gt;A few weeks ago, Chris Wellon­s' blog &lt;a class="reference external" href="https://nullprogram.com/blog/2020/05/24/"&gt;"La­ten­cy in Asyn­chro­nous Python"&lt;/a&gt; 
was shared on our in­ter­nal #python chan­nel at Elas­tic, and as some­one
look­ing in­to the per­for­mance char­ac­ter­is­tics of a re­cent &lt;a class="reference external" href="https://docs.python.org/3/library/asyncio.html"&gt;asyn­cio&lt;/a&gt;-re­lat­ed
change, I gave it a read and you should too. It was a time­ly post
as it made me think ahead about a few things, and co­in­cid­ed nice­ly with
our re­cent us­age of Elas­tic's &lt;a class="reference external" href="https://www.elastic.co/apm"&gt;Ap­pli­ca­tion Per­for­mance Mon­i­tor­ing&lt;/a&gt;  so­lu­tion.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://briancurtin.com/articles/using-elastic-apm-to-visualize-asyncio-behavior/"&gt;Read more…&lt;/a&gt; (7 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>apm</category><category>asyncio</category><category>elastic</category><category>python</category><guid>https://briancurtin.com/articles/using-elastic-apm-to-visualize-asyncio-behavior/</guid><pubDate>Thu, 16 Jul 2020 14:00:00 GMT</pubDate></item><item><title>Use glom</title><link>https://briancurtin.com/articles/use-glom/</link><dc:creator>Brian Curtin</dc:creator><description>&lt;figure&gt;&lt;img src="https://briancurtin.com/images/use-glom/pepesilvia.jpg"&gt;&lt;/figure&gt; &lt;div&gt;&lt;p&gt;Dictionaries are &lt;em&gt;really cool&lt;/em&gt;. They're very powerful and a large part
of Python: so much stuff is built on the &lt;code class="docutils literal"&gt;dict&lt;/code&gt; type. They're generally
quite easy to work with, but what about when you have nested dictionaries
that contain lists that contain dictionaries that contain certain keys
only in some cases and sometimes there's another list involved?&lt;/p&gt;
&lt;p&gt;Use  &lt;a class="reference external" href="https://glom.readthedocs.io/en/latest/"&gt;glom&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://briancurtin.com/articles/use-glom/"&gt;Read more…&lt;/a&gt; (6 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>elasticsearch</category><category>glom</category><category>python</category><guid>https://briancurtin.com/articles/use-glom/</guid><pubDate>Thu, 02 Jul 2020 13:26:00 GMT</pubDate></item><item><title>Starting Over</title><link>https://briancurtin.com/articles/starting-over/</link><dc:creator>Brian Curtin</dc:creator><description>&lt;div&gt;&lt;p&gt;This is the first post. It's not the first post I've ev­er writ­ten on this site,
but it's now the first one this site con­tain­s.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://briancurtin.com/articles/starting-over/"&gt;Read more…&lt;/a&gt; (1 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><guid>https://briancurtin.com/articles/starting-over/</guid><pubDate>Tue, 30 Jun 2020 12:42:32 GMT</pubDate></item></channel></rss>