<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ed&apos;s Home Page</title><link>https://epage.github.io</link><description>Programming and other misc</description><item><title>toml v0.9</title><link>https://epage.github.io/blog/2025/07/toml-09/</link><description><![CDATA[<p><a href="https://github.com/toml-rs/toml/blob/main/crates/toml/CHANGELOG.md#090---2025-07-08">toml v0.9</a>
is a near-complete rewrite with dramatic performance improvements, <code>no_std</code> support, and many other improvements.</p>
<p>This is where I've disappeared to over the last 3 months, trying to wrap up a years-old experiment that has been &quot;almost done&quot; for these last 3 months, with use case after use case building up encouraging me to finish this up rather than my regularly scheduled Cargo work.</p>
]]></description><guid>https://epage.github.io/blog/2025/07/toml-09/</guid><pubDate>Tue, 08 Jul 2025 11:50:30 -0500</pubDate></item><item><title>Are we GUI (build) yet?</title><link>https://epage.github.io/blog/2023/08/are-we-gui-build-yet/</link><description><![CDATA[<p><a href="https://areweguiyet.com/">&quot;Are we GUI yet?&quot;</a> is a topic that frequently comes
up within the Rust community.
There are a lot of hard problems to solve, from the complexity of state management
to something as easy to overlook as
<a href="https://raphlinus.github.io/rust/gui/2019/06/21/smooth-resize-test.html">smooth resize</a>.
One problem I don't see discussed as often is a development and release pipeline
that can handle the unique circumstances of each target platform.
I met up with a bunch of application framework developers the day after
<a href="https://2023.rustnl.org/">RustNL</a> to explore this problem and what can be done
for it.</p>
]]></description><guid>https://epage.github.io/blog/2023/08/are-we-gui-build-yet/</guid><pubDate>Thu, 17 Aug 2023 17:32:22 +0000</pubDate></item><item><title>Winnow 0.5: The Fastest Rust Parser-Combinator Library?</title><link>https://epage.github.io/blog/2023/07/winnow-0-5-the-fastest-rust-parser-combinator-library/</link><description><![CDATA[<p><a href="https://crates.io/crates/winnow">Winnow</a> is a parser-combinator library for Rust and
<a href="https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md#050---2023-07-13">0.5</a>
is now out.
I <a href="/blog/2023/02/winnow-toml-edit-combine-nom/#winnow">last wrote</a> about the
0.3.0 release, so I'll be covering all of the releases since then.</p>
]]></description><guid>https://epage.github.io/blog/2023/07/winnow-0-5-the-fastest-rust-parser-combinator-library/</guid><pubDate>Thu, 13 Jul 2023 20:18:49 +0000</pubDate></item><item><title>Iterating on Testing in Rust</title><link>https://epage.github.io/blog/2023/06/iterating-on-test/</link><description><![CDATA[<p>With the release of rust 1.70, there was
<a href="https://www.reddit.com/r/rust/comments/13xqhbm/announcing_rust_1700/jmji422/">some surprise and frustration</a>
that
<a href="https://blog.rust-lang.org/2023/06/01/Rust-1.70.0.html#enforced-stability-in-the-test-cli">unstable <code>test</code> features now require nightly</a>,
like all other unstable features in Rust.
One of the features most affected is <code>--format json</code> which has been in
<a href="https://github.com/rust-lang/rust/issues/49359">limbo for 5 years</a>.
This drew attention to a feeling I've had: the testing story in Rust has been
stagnating.
I've been gathering my thoughts on this for the last 3 months and recently had
some downtime between tasks so I've started to look further into this.</p>
<p>The tl;dr is to think of this as finding right abstractions to stabilize parts
of
<a href="https://doc.crates.io/contrib/tests/writing.html#cargo_test-attribute">cargo_test_support</a>
and <a href="https://nexte.st/"><code>cargo nextest</code></a>.</p>
]]></description><guid>https://epage.github.io/blog/2023/06/iterating-on-test/</guid><pubDate>Fri, 09 Jun 2023 19:41:08 +0000</pubDate></item><item><title>clap v4.2, a Rust CLI argument parser</title><link>https://epage.github.io/blog/2023/03/clap-v4-2/</link><description><![CDATA[<p><a href="https://docs.rs/clap/4.2.0/clap/">clap</a> v4.2.0 is now out with styling of
help descriptions!  See the
<a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">changelog</a> for more
details.</p>
]]></description><guid>https://epage.github.io/blog/2023/03/clap-v4-2/</guid><pubDate>Tue, 28 Mar 2023 08:06:08 +0000</pubDate></item><item><title>anstream: simplifying terminal styling</title><link>https://epage.github.io/blog/2023/03/anstream-simplifying-terminal-styling/</link><description><![CDATA[<p><code>anstream</code> is a new take on terminal styling for Rust and will be used in the upcoming clap 4.2 release.</p>
<p>Quick links</p>
<ul>
<li><a href="https://docs.rs/anstream/latest/anstream/">docs.rs</a></li>
<li><a href="https://crates.io/crates/anstream">crates.io</a></li>
<li><a href="https://github.com/epage/anstyle/tree/main/crates/anstream">repo</a></li>
</ul>
]]></description><guid>https://epage.github.io/blog/2023/03/anstream-simplifying-terminal-styling/</guid><pubDate>Thu, 16 Mar 2023 23:08:16 +0000</pubDate></item><item><title>winnow = toml_edit + combine + nom</title><link>https://epage.github.io/blog/2023/02/winnow-toml-edit-combine-nom/</link><description><![CDATA[<p>It is finally time to take the wraps off where I disappeared to over the
last 6 months. Besides the family leave, I've mostly been chalking this up to
working on
<a href="https://epage.github.io/blog/2023/01/toml-vs-toml-edit/">toml_edit</a> but one
particular building block took up most of that time.</p>
<p>I would like to introduce you to <a href="https://crates.io/crates/winnow">winnow</a>, a
fork of the venerable <a href="https://crates.io/crates/nom">nom</a> parser combinator
library.  For those that want to skip all the details, you can checkout
<a href="https://docs.rs/winnow/latest/winnow/">the documentation</a> and
<a href="https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md#030---2023-02-22">the migration guide and changelog</a>.</p>
<p><del>I would link to the docs but <a href="https://docs.rs/releases/queue">docs.rs seems to be backed up this morning</a>.</del></p>
]]></description><guid>https://epage.github.io/blog/2023/02/winnow-toml-edit-combine-nom/</guid><pubDate>Wed, 22 Feb 2023 18:35:24 +0000</pubDate></item><item><title>`toml` vs `toml_edit`</title><link>https://epage.github.io/blog/2023/01/toml-vs-toml-edit/</link><description><![CDATA[<p><a href="https://github.com/toml-rs/toml/blob/main/crates/toml/CHANGELOG.md#060---2023-01-23"><code>toml</code> v0.6</a>
is now out with a new parser and renderer, addressing several existing issues
and ensuring compliance with the TOML 1.0 compliance tests.  This was done by
leveraging the
<a href="https://crates.io/crates/toml_edit"><code>toml_edit</code></a> crate.</p>
]]></description><guid>https://epage.github.io/blog/2023/01/toml-vs-toml-edit/</guid><pubDate>Mon, 23 Jan 2023 20:09:26 +0000</pubDate></item><item><title>clap v4.1, a Rust CLI argument parser</title><link>https://epage.github.io/blog/2023/01/clap-v4-1/</link><description><![CDATA[<p><a href="https://docs.rs/clap/latest/clap/">clap</a> v4.1.0 is now out!  See the
<a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">changelog</a> for more
details.</p>
]]></description><guid>https://epage.github.io/blog/2023/01/clap-v4-1/</guid><pubDate>Fri, 13 Jan 2023 15:18:37 +0000</pubDate></item><item><title>clap 4.0, a Rust CLI argument parser</title><link>https://epage.github.io/blog/2022/09/clap4/</link><description><![CDATA[<p>We are excited to <del>(pre-)</del> announce clap 4.0!
This release focuses on removing deprecated APIs and finishing what we couldn't
do without breaking changes.  For more details see the
<a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">CHANGELOG</a> (including the migration guide)
and the
<a href="https://docs.rs/clap/4.0.0/clap/index.html">documentation</a>.</p>
<p>This release builds on work done in the 3.x releases and can be worth catching up on them:</p>
<ul>
<li>The <a href="/blog/2022/02/clap-31-a-step-towards-40/">3.1 release</a></li>
<li>The <a href="/blog/2022/06/clap-32-last-call-before-40/">3.2 release</a></li>
<li>Or the <a href="https://github.com/clap-rs/clap/blob/v3-master/CHANGELOG.md">v3 CHANGELOG.md</a> for the over 50 patch releases since 3.0.0</li>
</ul>
<p>To put all of this work into numbers:</p>
<table><thead><tr><th></th><th>Baseline</th><th>2.34.0</th><th>3.0.0</th><th>3.2.21</th><th>4.0.0-rc.1</th><th>4.0.0</th></tr></thead><tbody>
<tr><td>Builder API Surface</td><td></td><td>174</td><td>245</td><td>282</td><td>165 <a href="#removing-deprecated-features">[1]</a> <a href="#num-args">[2]</a></td><td>166</td></tr>
<tr><td>Lines of Code</td><td>6</td><td>13,462</td><td>17,308</td><td>24,044</td><td>20,653 <a href="#removing-deprecated-features">[1]</a> <a href="#removing-lifetimes">[3]</a></td><td>20,839</td></tr>
<tr><td>Code size</td><td>218.2 KiB</td><td>487.0 KiB</td><td>609.3 KiB</td><td>605.5 KiB</td><td>544.3 KiB <a href="#removing-deprecated-features">[1]</a> <a href="#reducing-code-size">[4]</a></td><td>542.6 KiB</td></tr>
<tr><td>Runtime</td><td></td><td>7.529 us</td><td>14.544 us</td><td>14.657 us</td><td>8.2478 us <a href="#removing-implicit-version-help-behavior">[5]</a></td><td>7.6455 us</td></tr>
</tbody></table>
<p><em>(see <a href="#methodology">Methodology</a> for more details)</em></p>
<blockquote>
<p>Aside: Yes, those clap v2 -&gt; v3 numbers are not good.</p>
<p>For Builder API Surface, it is understandable when you consider we mostly didn't
remove functionality in v3 but deprecated it, removing it in v4.</p>
<p>Lines of Code is mostly accounted for with the merge of <code>structopt</code> into
<code>clap</code> as <code>clap_derive</code>.  We continued to have significant growth after
that as we continued to develop replacement features for functionality in
clap.  These more general solutions take up more lines though not more code
size.</p>
<p>For code size and runtime, one factor is that things fell through the cracks
during clap v3's development.  clap's development went dark for an extended
period of time and went through several maintainers.  This isn't to say one
of the maintainers is at fault but that things get lost in hand offs.
Towards the end, we double-downed on just getting out what we had and hadn't
looked to see how we compared to v2.</p>
<p>For code size, it looks like it was a lot of small changes that added up,
like changing a <code>VecMap</code> to a <code>BTreeMap</code>.</p>
<p>For runtime, it seems to mostly be a single feature that caused it which was
removed in v4 <a href="#removing-implicit-version-help-behavior">[5]</a>.</p>
</blockquote>
<p><del>Our plan is to give about a week window between the release-candidate and the
official release to allow for collecting and processing feedback.</del></p>
]]></description><guid>https://epage.github.io/blog/2022/09/clap4/</guid><pubDate>Tue, 20 Sep 2022 21:30:48 +0000</pubDate></item><item><title>Clap 3.2: Last Call Before 4.0</title><link>https://epage.github.io/blog/2022/06/clap-32-last-call-before-40/</link><description><![CDATA[<p>With excitement and trepidation, I'm announcing the release of
<a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap 3.2</a>.</p>
<p>With clap 3.1, we <a href="https://epage.github.io/blog/2022/02/clap-31-a-step-towards-40/">discussed the need for a more open, extensible
API</a> and clap
3.2 represents one step in that direction.  With two new builder API concepts,
we are able to deprecate the following concepts:</p>
<ul>
<li><code>Arg::allow_invalid_utf8</code></li>
<li><code>Arg::validator</code>, <code>Arg::validator_os</code></li>
<li><code>Arg::forbid_empty_values</code></li>
<li><code>Arg::possible_values</code></li>
<li><code>Arg::max_occurrences</code></li>
<li><code>Arg::multiple_occurrences</code></li>
<li><code>Command::args_override_self</code></li>
<li><code>AppSettings::NoAutoVersion</code></li>
<li><code>AppSettings::NoHelpVersion</code></li>
</ul>
]]></description><guid>https://epage.github.io/blog/2022/06/clap-32-last-call-before-40/</guid><pubDate>Mon, 13 Jun 2022 15:21:28 +0000</pubDate></item><item><title>clap 3.1: A step towards 4.0</title><link>https://epage.github.io/blog/2022/02/clap-31-a-step-towards-40/</link><description><![CDATA[<p><a href="https://docs.rs/clap/3.1.0">clap 3.1</a> is here!  Clap is a CLI argument parser
for Rust and the v3.1 releases focuses on API cleanup slated for clap 4.0.  See
the <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">CHANGELOG</a> for
details.</p>
<p>clap 3.0 was in development for 4 years and though we saw comparisons to
Half-life 3 in response to the release, we also saw people who cited the long
gaps between breaking releases as a motivation for using it.  For clap to stay
relevant we feel we need to avoid the stagnation of long release cycles while
keeping things smooth for the users where clap is already &quot;good enough&quot;.  The
v3.1 release is a major step in trying to strike that balance.</p>
]]></description><guid>https://epage.github.io/blog/2022/02/clap-31-a-step-towards-40/</guid><pubDate>Wed, 16 Feb 2022 18:15:04 +0000</pubDate></item><item><title>Minor Semver Issue</title><link>https://epage.github.io/blog/2022/02/minor-semver-issue/</link><description><![CDATA[<p>Is adding a function in a patch release a violation of
<a href="https://semver.org/">semver</a>?  Technically, yes but technical answers aren't
always the right answers.</p>
<p>This came up in a recent discussion focused on the
relevant importance of setting the minimum patch version for a dependency.
Some crates go so far as to never bump their minor version, like
<a href="https://crates.io/crates/serde/versions">serde</a>.</p>
]]></description><guid>https://epage.github.io/blog/2022/02/minor-semver-issue/</guid><pubDate>Fri, 04 Feb 2022 15:37:29 +0000</pubDate></item><item><title>clap 3.0, a Rust CLI argument parser</title><link>https://epage.github.io/blog/2021/12/clap3/</link><description><![CDATA[<p>I figured a great way to close out the year 2021 is to wrap up the long awaited
<a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#300-2021-12-31">clap 3.0 release</a>!</p>
<p>Some major milestones along the way:</p>
<ul>
<li>Jan 24, 2018: The <a href="https://github.com/clap-rs/clap/commit/acdbd47152102607b7f4c6702cc076caca771280">first commit in the v3-dev branch</a></li>
<li>Aug 30, 2019: <a href="https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md#v030-2019-08-30">StructOpt 0.3 is released</a> with better clap integration</li>
<li>May 03, 2021: <a href="https://github.com/clap-rs/clap/releases/tag/v3.0.0-beta.1">v3.0.0-beta.1 is released</a></li>
<li>Dec 08, 2021: <a href="https://github.com/clap-rs/clap/releases/tag/v3.0.0-rc.0">3.0.0-rc.0 is released</a></li>
<li>Dec 31, 2021: <a href="https://github.com/clap-rs/clap/releases/tag/v3.0.0">3.0.0 is released</a></li>
</ul>
<p>Thanks to:</p>
<ul>
<li>kbknapp, pksunkara, dpc, killercup, spacekookie, yosh, ldm0, and any other
maintainers or contributors along the way</li>
<li>Our users, especially those providing feedback on beta and release-candidates</li>
<li>Embark, Sentry, repi, and many other sponsors</li>
<li>My employer, Futurewei, for giving me the opportunity to help wrap up clap 3.0</li>
</ul>
]]></description><guid>https://epage.github.io/blog/2021/12/clap3/</guid><pubDate>Thu, 30 Dec 2021 09:00:30 -0500</pubDate></item><item><title>A Journey in Optimizing `toml_edit`</title><link>https://epage.github.io/blog/2021/09/optimizing-toml-edit/</link><description><![CDATA[<h2>tl;dr</h2>
<p><a href="https://docs.rs/toml_edit"><code>toml_edit</code></a> is a format preserving TOML crate,
allowing users to modify <code>.toml</code> files.</p>
<p><strong>Before:</strong></p>
<table><thead><tr><th></th><th><code>cargo init</code> Cargo.toml</th><th>cargo's Cargo.toml</th></tr></thead><tbody>
<tr><td>toml_edit</td><td>8.7us</td><td>271us</td></tr>
<tr><td>toml_edit::easy</td><td>20.7us</td><td>634us</td></tr>
</tbody></table>
<p><strong>After:</strong></p>
<table><thead><tr><th></th><th><code>cargo init</code> Cargo.toml</th><th>cargo's Cargo.toml</th></tr></thead><tbody>
<tr><td>toml_edit</td><td>4.0us</td><td>149us</td></tr>
<tr><td>toml_edit::easy</td><td>5.0us</td><td>179us</td></tr>
</tbody></table>
<p><strong>Target:</strong></p>
<table><thead><tr><th></th><th><code>cargo init</code> Cargo.toml</th><th>cargo's Cargo.toml</th></tr></thead><tbody>
<tr><td>toml-rs</td><td>4.7us</td><td>121us</td></tr>
</tbody></table>
]]></description><guid>https://epage.github.io/blog/2021/09/optimizing-toml-edit/</guid><pubDate>Thu, 30 Sep 2021 09:00:30 -0500</pubDate></item><item><title>Learnability of Rust</title><link>https://epage.github.io/blog/2021/09/learning-rust/</link><description><![CDATA[<h2>tl;dr</h2>
<p>As part of improving the learnability of Rust, I propose:</p>
<ul>
<li>The <code>.crs</code> file subset of <a href="https://github.com/DanielKeep/cargo-script">cargo-script</a> be brought into <code>cargo</code></li>
<li>We support converting <code>.crs</code> to full cargo projects with <code>cargo init --from &lt;script&gt;.crs</code></li>
<li>We collaborate on an ergonomics-focused standard-library-alternative, like <a href="https://docs.rs/eztd">eztd</a></li>
</ul>
]]></description><guid>https://epage.github.io/blog/2021/09/learning-rust/</guid><pubDate>Wed, 15 Sep 2021 09:00:30 -0500</pubDate></item><item><title>Experiments with `pushgen`</title><link>https://epage.github.io/blog/2021/07/pushgen-experiment/</link><description><![CDATA[<p>Recently, there was an <a href="https://www.reddit.com/r/rust/comments/oa6tcp/first_crate_pushgen_pushbased_approach_to/">announcement for
<code>pushgen</code></a>,
a port of C++ <code>transrangers</code> to Rust with a <a href="https://github.com/joaquintides/transrangers/blob/master/rust.md">follow up
post</a> from
the author of <code>transrangers</code>.</p>
<p>Seeing the performance numbers, I was curious what the experience was like with
the different techniques compared in the followup and how the performance
worked out in a real world application.</p>
]]></description><guid>https://epage.github.io/blog/2021/07/pushgen-experiment/</guid><pubDate>Wed, 07 Jul 2021 09:00:30 -0500</pubDate></item><item><title>Liquid v0.20</title><link>https://epage.github.io/blog/2020/03/liquid-v20/</link><description><![CDATA[<p><code>liquid</code> v0.20 resolves several planned breaking changes we've been holding off on.  This doesn't make us ready for 1.0 yet but this closes the gap significantly.</p>
<p><em><a href="https://docs.rs/liquid"><code>liquid-rust</code></a> is a rust re-implementation of the <a href="https://shopify.github.io/liquid/">liquid</a> template engine made popular by the <a href="https://jekyllrb.com">jekyll</a> static site generator.</em></p>
]]></description><guid>https://epage.github.io/blog/2020/03/liquid-v20/</guid><pubDate>Mon, 16 Mar 2020 09:00:30 -0500</pubDate></item><item><title>Reflecting on Errors in 2019</title><link>https://epage.github.io/blog/2019/11/reflecting-on-errors-in-2019/</link><description><![CDATA[<p>With people reflecting on Rust in 2019 and what they want to see in 2020, error handling has come up again:</p>
<ul>
<li><a href="https://www.ncameron.org/blog/rust-in-2020-one-more-thing/">Rust in 2020, one more thing</a></li>
<li><a href="https://lukaskalbertodt.github.io/2019/11/14/thoughts-on-error-handling-in-rust.html">Thoughts on Error Handling in Rust</a></li>
<li><a href="https://blog.yoshuawuyts.com/error-handling-survey/">Error Handling Survey</a></li>
</ul>
]]></description><guid>https://epage.github.io/blog/2019/11/reflecting-on-errors-in-2019/</guid><pubDate>Tue, 26 Nov 2019 19:09:27 +0000</pubDate></item><item><title>Speeding Up Rust Builds: Code-Gen Edition</title><link>https://epage.github.io/blog/2019/10/speeding-up-rust-builds-code-gen-edition/</link><description><![CDATA[<p><em>tl;dr Cache your code-gen results with the <a href="https://crates.io/crates/codegenrs"><code>codegenrs</code> crate</a>.</em></p>
]]></description><guid>https://epage.github.io/blog/2019/10/speeding-up-rust-builds-code-gen-edition/</guid><pubDate>Thu, 10 Oct 2019 03:30:17 +0000</pubDate></item><item><title>RustFest Parist Trip Report</title><link>https://epage.github.io/blog/2018/06/rustfest-2018/</link><description><![CDATA[<p>I've been involved in the Rust community for about a year and a half now.  What
attracted me to Rust is that is looks like the first viable replacement for
C++.  It offers similar (actually better) protections than GCed languages and
the full language is available in any environment, including exception-like
error handling in the Windows kernel.</p>
]]></description><guid>https://epage.github.io/blog/2018/06/rustfest-2018/</guid><pubDate>Mon, 04 Jun 2018 09:00:30 -0500</pubDate></item><item><title>PyCon 2018 Trip Report</title><link>https://epage.github.io/blog/2018/05/pycon-2018/</link><description><![CDATA[<p>I went to with a coworker to <a href="https://us.pycon.org/2018/">PyCon</a> this year (<a href="https://www.youtube.com/channel/UCsX05-2sVSH7Nx3zuk3NYuQ/videos">videos</a>).</p>
]]></description><guid>https://epage.github.io/blog/2018/05/pycon-2018/</guid><pubDate>Fri, 18 May 2018 09:00:30 -0500</pubDate></item><item><title>Redefining Failure</title><link>https://epage.github.io/blog/2018/03/redefining-failure/</link><description><![CDATA[<p>I recently got the chance to redo the error handling in two different crates I
help maintain. For <a href="https://github.com/cobalt-org/liquid-rust"><code>liquid</code></a>, I decided to write the error types by
hand rather than use something like <a href="https://crates.io/crates/error-chain"><code>error-chain</code></a>. In the case
of <a href="https://github.com/assert-rs/assert_cli"><code>assert_cli</code></a>, I decided to finally give <a href="https://github.com/withoutboats/failure"><code>failure</code></a> a
try.</p>
]]></description><guid>https://epage.github.io/blog/2018/03/redefining-failure/</guid><pubDate>Fri, 09 Mar 2018 03:08:23 +0000</pubDate></item><item><title>Crate Management for #rust2018</title><link>https://epage.github.io/blog/2018/01/crate-management/</link><description><![CDATA[<p><em>Context: <a href="https://blog.rust-lang.org/2018/01/03/new-years-rust-a-call-for-community-blogposts.html">Call for Community Posts</a> and <a href="http://readrust.net/rust2018/">other posts</a></em></p>
]]></description><guid>https://epage.github.io/blog/2018/01/crate-management/</guid><pubDate>Fri, 26 Jan 2018 04:20:00 +0000</pubDate></item><item><title>Blog Transition</title><link>https://epage.github.io/blog/2018/01/blog-transition/</link><description><![CDATA[<p>I'll post relevant items from my old blog.  If you'd like to see all the old posts, go to <a href="eopage.blogspot.com">eopage.blogspot.com</a></p>
]]></description><guid>https://epage.github.io/blog/2018/01/blog-transition/</guid><pubDate>Wed, 17 Jan 2018 09:00:30 -0500</pubDate></item><item><title>Off To A Shaky Start - LASIK and Nystagmus</title><link>https://epage.github.io/blog/2017/01/shaky-start/</link><description><![CDATA[My personal experience treating nystagmus
]]></description><guid>https://epage.github.io/blog/2017/01/shaky-start/</guid><pubDate>Mon, 30 Jan 2017 17:23:30 -0500</pubDate></item><item><title>The Lone Star Hiking Trail</title><link>https://epage.github.io/blog/2014/12/lone-star-hiking/</link><description><![CDATA[Trip/equipment report for the Long Star Hiking Trail
]]></description><guid>https://epage.github.io/blog/2014/12/lone-star-hiking/</guid><pubDate>Wed, 03 Dec 2014 22:27:30 -0500</pubDate></item><item><title>On Top of Utah - Hiking to Kings Peak</title><link>https://epage.github.io/blog/2013/08/kings-peak/</link><description><![CDATA[Trip/equipment report for Kings Peak in Utah
]]></description><guid>https://epage.github.io/blog/2013/08/kings-peak/</guid><pubDate>Sat, 17 Aug 2013 14:46:30 -0500</pubDate></item></channel></rss>
