<?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>KHE</title><link>https://east.fm/</link><description>Miscellaneous Notes for KHE</description><atom:link href="https://east.fm/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Thu, 17 Jan 2019 15:54:47 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>git pre-commit Hooks for Python</title><link>https://east.fm/posts/using-git-pre-commit-hooks/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;As part of an effort to move to a fully automated CI/CD process, I wanted to begin using
&lt;code&gt;git&lt;/code&gt; pre-commit hooks for my python code.  These are my notes on setting that up.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/using-git-pre-commit-hooks/index.html"&gt;Read more…&lt;/a&gt; (5 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>CI</category><category>devops</category><category>emacs</category><category>git</category><category>python</category><guid>https://east.fm/posts/using-git-pre-commit-hooks/index.html</guid><pubDate>Sun, 09 Dec 2018 00:59:12 GMT</pubDate></item><item><title>Migrating LastPass Data to Bitwarden</title><link>https://east.fm/posts/migrating-lastpass-data-to-bitwarden/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;After seeing lots of positive feedback on HN about the Bitwarden password manager, I
finally decided to try it out.  Because I had over 1,000 accounts in LastPass, many of
which were crufty, I wanted to declare "account/password" amnesty while still keeping
all the old account information "just in case."  Here is how I migrated my LastPass
database to Bitwarden.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/migrating-lastpass-data-to-bitwarden/index.html"&gt;Read more…&lt;/a&gt; (1 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><guid>https://east.fm/posts/migrating-lastpass-data-to-bitwarden/index.html</guid><pubDate>Wed, 28 Nov 2018 15:28:54 GMT</pubDate></item><item><title>Unicode Errors When Building Django Documentation</title><link>https://east.fm/posts/unicode-errors-when-building-django-documentation/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;The few times I've built Django's documentation from scratch, I always seem to get LaTeX
unicode errors.&lt;/p&gt;
&lt;p&gt;Unrelatedly, I've found that when I print Django's documentation on a B&amp;amp;W printer, some
of the documentation, particularly code, is difficult, if not impossible, to
read.&lt;/p&gt;
&lt;p&gt;This note describes a brute-force approach to eliminate the unicode errors, as well as a
rather churlish way to force Django to produce black and white PDF documentation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/unicode-errors-when-building-django-documentation/index.html"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><guid>https://east.fm/posts/unicode-errors-when-building-django-documentation/index.html</guid><pubDate>Fri, 09 Nov 2018 00:15:36 GMT</pubDate></item><item><title>Better Local Python</title><link>https://east.fm/posts/better-local-python/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;For many years I have managed my local Python installs using a combination of macports,
virtualenvs, and pip.  I've fought many issues along the way and have finally reached the
tipping point.  As the TV commercials say, "There has to be a better way!"  Whether it
is a better way or not remains to be seen, however, I am cutting over to using
&lt;a href="https://github.com/pyenv/pyenv"&gt;&lt;code&gt;pyenv&lt;/code&gt;&lt;/a&gt; for local python installs.  These are my notes
on using &lt;code&gt;pyenv&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/better-local-python/index.html"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><guid>https://east.fm/posts/better-local-python/index.html</guid><pubDate>Fri, 26 Oct 2018 17:12:04 GMT</pubDate></item><item><title>Emacs 26, Mojave, elpy, readline</title><link>https://east.fm/posts/emacs-26-mojave-elpy-readline/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;I first started having problems with macOS &lt;code&gt;readline&lt;/code&gt; and macports Python a year or two
ago.  Initially, it was bugs in resetting the tty to a sane configuration when a Python
REPL exited.  That seems to have been solved, but I'm now encountering &lt;code&gt;readline&lt;/code&gt;
problems with Python 3.7, GNU Emacs 26.1, and &lt;code&gt;elpy&lt;/code&gt;.  These notes describe what seems
to be a solution, at least for the time being.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/emacs-26-mojave-elpy-readline/index.html"&gt;Read more…&lt;/a&gt; (1 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>emacs</category><category>macos</category><category>mojave</category><category>python</category><guid>https://east.fm/posts/emacs-26-mojave-elpy-readline/index.html</guid><pubDate>Wed, 03 Oct 2018 05:00:00 GMT</pubDate></item><item><title>Configuring GNU emacs with elpy on MacOS</title><link>https://east.fm/posts/configuring-gnu-emacs-with-elpy-on-macos/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;Note on installing and configuring &lt;code&gt;elpy&lt;/code&gt; in GNU Emacs 26.1 with Python 3.7 on
MacOS Sierra (10.12).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/configuring-gnu-emacs-with-elpy-on-macos/index.html"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>emacs</category><category>python</category><guid>https://east.fm/posts/configuring-gnu-emacs-with-elpy-on-macos/index.html</guid><pubDate>Sat, 29 Sep 2018 19:17:15 GMT</pubDate></item><item><title>Web Development Setup on macOS</title><link>https://east.fm/posts/dns-masq/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div class="section" id="a-flexible-web-development-setup-on-macos"&gt;
&lt;h2&gt;A Flexible Web Development Setup on macOS&lt;/h2&gt;
&lt;p&gt;This is a simple way to configure a macOS system for web development.  It
allows one to develop multiple sites locally, without reconfiguring anything
when changing sites/customers.&lt;/p&gt;
&lt;p&gt;There are two key components to the strategy: &lt;tt class="docutils literal"&gt;dnsmasq&lt;/tt&gt; and the
httpd daemon's configuration.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/dns-masq/index.html"&gt;Read more…&lt;/a&gt; (8 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>django</category><category>dns</category><category>dnsmasq</category><category>httpd</category><category>macos</category><category>OS-X</category><guid>https://east.fm/posts/dns-masq/index.html</guid><pubDate>Sun, 10 Jun 2018 05:00:00 GMT</pubDate></item><item><title>A Bash Client for the ACME Protocol</title><link>https://east.fm/posts/a-bash-client-for-the-acme-protocol/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;These are my notes on installing &lt;tt class="docutils literal"&gt;acme.sh&lt;/tt&gt; and using it on an aging Django
site.  They were originally written sometime in 2016 and updated in May
of 2018.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/a-bash-client-for-the-acme-protocol/index.html"&gt;Read more…&lt;/a&gt; (6 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>ACME</category><category>django</category><category>SSL</category><category>sysadmin</category><category>TLS</category><guid>https://east.fm/posts/a-bash-client-for-the-acme-protocol/index.html</guid><pubDate>Tue, 15 May 2018 05:00:00 GMT</pubDate></item><item><title>Dead/Black iMac Display</title><link>https://east.fm/posts/imac/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;p&gt;The LCD display on my 27" iMac (mid-2011) went dead/black.  It's a common
problem.  These are my notes on a software-only fix.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/imac/index.html"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>apple</category><category>imac</category><category>notes</category><guid>https://east.fm/posts/imac/index.html</guid><pubDate>Tue, 01 May 2018 05:00:00 GMT</pubDate></item><item><title>Culling Duplicate Photos with rmlint</title><link>https://east.fm/posts/culling-duplicate-photos-with-rmlint/index.html</link><dc:creator>Kenneth H. East</dc:creator><description>&lt;div&gt;&lt;!-- 
.. title: Culling Duplicate Photos with rmlint
.. slug: culling-duplicate-photos-with-rmlint
.. date: 2018-03-29
.. tags: sysadmin, photos
.. category: admin
.. link: 
.. description: 
.. type: text
--&gt;
&lt;p&gt;I have twenty-five years worth of old personal hard drives that I wish to scour for photos and videos that should be preserved prior to destroying the drives. In searching for tools to assist me in this effort, I ran across &lt;code&gt;rmlint&lt;/code&gt;&lt;a href="https://east.fm/posts/culling-duplicate-photos-with-rmlint/index.html#fn1" class="footnote-ref" id="fnref1"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;, &lt;code&gt;fim&lt;/code&gt;&lt;a href="https://east.fm/posts/culling-duplicate-photos-with-rmlint/index.html#fn2" class="footnote-ref" id="fnref2"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;, and &lt;code&gt;fdupes&lt;/code&gt;&lt;a href="https://east.fm/posts/culling-duplicate-photos-with-rmlint/index.html#fn3" class="footnote-ref" id="fnref3"&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://east.fm/posts/culling-duplicate-photos-with-rmlint/index.html"&gt;Read more…&lt;/a&gt; (8 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>photos</category><category>sysadmin</category><guid>https://east.fm/posts/culling-duplicate-photos-with-rmlint/index.html</guid><pubDate>Thu, 29 Mar 2018 05:00:00 GMT</pubDate></item></channel></rss>