<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>William Bert</title><link>https://williambert.online/</link><description>Recent content on William Bert</description><generator>Hugo</generator><language>en-us</language><copyright>William Bert</copyright><lastBuildDate>Thu, 08 Jun 2023 20:59:35 +0000</lastBuildDate><atom:link href="https://williambert.online/atom.xml" rel="self" type="application/rss+xml"/><item><title>One way to avoid AALM ("As an AI language model...")</title><link>https://williambert.online/2023/06/one-way-to-avoid-aalm-as-an-ai-language-model.../</link><pubDate>Thu, 08 Jun 2023 20:59:35 +0000</pubDate><guid>https://williambert.online/2023/06/one-way-to-avoid-aalm-as-an-ai-language-model.../</guid><description>&lt;p>It&amp;rsquo;s easy to encounter the &amp;ldquo;As an AI language model&amp;hellip;&amp;rdquo; opening to a ChatGPT
response. I&amp;rsquo;m no expert on LLMs or AI chat systems, but I&amp;rsquo;ve seen people
speculate that there is a system between user input and the GPT-3.5 model,
watching for inappropriate topics, and inserting this opening. I was thinking
about ways to try to avoid this response or circumvent it, and one idea that
came to me was obfuscating the text.&lt;/p></description></item><item><title>Fixing 'Failed to ping backend API' Docker error on macOS</title><link>https://williambert.online/2021/11/fixing-failed-to-ping-backend-api-docker-error-on-macos/</link><pubDate>Mon, 08 Nov 2021 10:12:05 +0000</pubDate><guid>https://williambert.online/2021/11/fixing-failed-to-ping-backend-api-docker-error-on-macos/</guid><description>&lt;p>I recently upgraded to an M1 Macbook Pro running macOS Monterey, and at first,
Docker seemed to run fine. I was able to build my containers and do a lengthy
database import.&lt;/p></description></item><item><title>How to use prettier with Emacs js2-mode</title><link>https://williambert.online/2018/01/how-to-use-prettier-with-emacs-js2-mode/</link><pubDate>Thu, 04 Jan 2018 16:35:40 +0000</pubDate><guid>https://williambert.online/2018/01/how-to-use-prettier-with-emacs-js2-mode/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-emacs-lisp" data-lang="emacs-lisp">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="nb">require&lt;/span> &lt;span class="ss">&amp;#39;nvm&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="nb">defun&lt;/span> &lt;span class="nv">do-nvm-use&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">version&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">interactive&lt;/span> &lt;span class="s">&amp;#34;sVersion: &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">nvm-use&lt;/span> &lt;span class="nv">version&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl"> &lt;span class="c1">;; exec-path-from-shell made a new login shell at startup and imported values,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl"> &lt;span class="c1">;; including PATH to exec-path. But nvm-use does setenv &amp;#34;PATH&amp;#34;. So we need to&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl"> &lt;span class="c1">;; update exec-path to the current PATH in the Emacs process.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">exec-path-from-shell-copy-env&lt;/span> &lt;span class="s">&amp;#34;PATH&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">11&lt;/span>&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="nb">defun&lt;/span> &lt;span class="nv">my/use-prettier-if-in-node-modules&lt;/span> &lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">12&lt;/span>&lt;span class="cl"> &lt;span class="s">&amp;#34;Use prettier-js-mode if prettier is found in this file&amp;#39;s
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">13&lt;/span>&lt;span class="cl">&lt;span class="s">project&amp;#39;s node_modules. Use the prettier binary from this
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">14&lt;/span>&lt;span class="cl">&lt;span class="s">project.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">15&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">let*&lt;/span> &lt;span class="p">((&lt;/span>&lt;span class="nv">root&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">locate-dominating-file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">16&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">or&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">buffer-file-name&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nv">default-directory&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">17&lt;/span>&lt;span class="cl"> &lt;span class="s">&amp;#34;node_modules&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">18&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">prettier&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">and&lt;/span> &lt;span class="nv">root&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">19&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nf">expand-file-name&lt;/span> &lt;span class="s">&amp;#34;node_modules/prettier/bin/prettier.js&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">20&lt;/span>&lt;span class="cl"> &lt;span class="nv">root&lt;/span>&lt;span class="p">))))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">21&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">when&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">and&lt;/span> &lt;span class="nv">prettier&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">file-executable-p&lt;/span> &lt;span class="nv">prettier&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">22&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">setq&lt;/span> &lt;span class="nv">prettier-js-command&lt;/span> &lt;span class="nv">prettier&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">23&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">prettier-js-mode&lt;/span>&lt;span class="p">))))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">24&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">25&lt;/span>&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="nb">when&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">require&lt;/span> &lt;span class="ss">&amp;#39;prettier-js&lt;/span> &lt;span class="no">nil&lt;/span> &lt;span class="no">t&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">26&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nf">make-variable-buffer-local&lt;/span> &lt;span class="ss">&amp;#39;prettier-js-command&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">27&lt;/span>&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">add-hook&lt;/span> &lt;span class="ss">&amp;#39;js2-mode-hook&lt;/span> &lt;span class="nf">#&amp;#39;&lt;/span>&lt;span class="nv">my/use-prettier-if-in-node-modules&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docker for Mac: the Missing Manual</title><link>https://williambert.online/2017/12/docker-for-mac-the-missing-manual/</link><pubDate>Fri, 29 Dec 2017 09:20:38 +0000</pubDate><guid>https://williambert.online/2017/12/docker-for-mac-the-missing-manual/</guid><description>&lt;p>Under the hood, &lt;a href="https://www.docker.com/docker-mac">Docker for Mac&lt;/a> is running
an &lt;a href="https://www.alpinelinux.org/">Alpine Linux&lt;/a> virtual machine. This guide
helps with issues related to communication between OS X/macOS and this VM, and
running up against limits on the size of the disk allocated to the VM.&lt;/p></description></item><item><title>How I made Magit fast again</title><link>https://williambert.online/2015/11/how-i-made-magit-fast-again/</link><pubDate>Thu, 19 Nov 2015 15:51:54 +0000</pubDate><guid>https://williambert.online/2015/11/how-i-made-magit-fast-again/</guid><description>&lt;p>TLDR: here are the settings that made the biggest difference for me. YMMV.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-lisp" data-lang="lisp">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="k">setq&lt;/span> &lt;span class="nv">magit-commit-show-diff&lt;/span> &lt;span class="no">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl"> &lt;span class="nv">magit-revert-buffers&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="http://magit.vc/">Magit&lt;/a> is awesome. And it&amp;rsquo;s getting better with regular
releases, a more consistent interface, and much more. But since the release of
2.1, it&amp;rsquo;s generally been slower for me.
&lt;a href="https://github.com/magit/magit/issues/2104">I&amp;rsquo;m not the only one&lt;/a>. In
particular, the status buffer would take multiple seconds to refresh after
almost any action such as committing, checking out a branch, stashing/popping,
deleting a file, etc.&lt;/p></description></item><item><title>How HTML5 sandboxes could be so much more useful</title><link>https://williambert.online/2015/10/how-html5-sandboxes-could-be-so-much-more-useful/</link><pubDate>Mon, 19 Oct 2015 17:27:18 +0000</pubDate><guid>https://williambert.online/2015/10/how-html5-sandboxes-could-be-so-much-more-useful/</guid><description>&lt;p>I love the idea of
&lt;a href="http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/">HTML5 iframe sandboxes&lt;/a>
but I&amp;rsquo;m unable to apply them the way they are currently implemented.&lt;/p>
&lt;p>Why? Because the iframes I want to target are created programmatically. I&amp;rsquo;m not
writing the &lt;code>iframe&lt;/code> tags myself, or the code that writes them, so I can&amp;rsquo;t
specify the &lt;code>sandbox&lt;/code> attribute.&lt;/p></description></item><item><title>Why I'd like Node and io.js to merge</title><link>https://williambert.online/2015/02/why-id-like-node-and-io.js-to-merge/</link><pubDate>Tue, 17 Feb 2015 18:46:00 -0800</pubDate><guid>https://williambert.online/2015/02/why-id-like-node-and-io.js-to-merge/</guid><description>&lt;p>I made &lt;a href="http://nodegovernance.io/">nodegovernance.io&lt;/a> — which encourages Node
users to express support for using io.js&amp;rsquo;s open governance model as the basis
for the Node foundation&amp;rsquo;s technical committee — because from where I sit,
one Node with a technical committee composed of the best technical people is the
ideal outcome of this situation.&lt;/p></description></item><item><title>Using Github Pages to hand off a legacy site and make everyone happier</title><link>https://williambert.online/2014/04/using-github-pages-to-hand-off-a-legacy-site-and-make-everyone-happier/</link><pubDate>Wed, 30 Apr 2014 18:52:00 +0000</pubDate><guid>https://williambert.online/2014/04/using-github-pages-to-hand-off-a-legacy-site-and-make-everyone-happier/</guid><description>&lt;p>Here&amp;rsquo;s how I turned over maintenance of a legacy site &amp;ndash; built as a one-off
project years ago using now outdated technology &amp;ndash; to my non-techincal
cofounder, with only a few hours of work. Best of all, it now uses evergreen
technology that will make it easy for her to update for years to come, and
everyone is happy with the outcome.&lt;/p></description></item><item><title>Using a Node repl in Emacs with nvm and npm</title><link>https://williambert.online/2014/02/using-a-node-repl-in-emacs-with-nvm-and-npm/</link><pubDate>Mon, 17 Feb 2014 16:37:00 +0000</pubDate><guid>https://williambert.online/2014/02/using-a-node-repl-in-emacs-with-nvm-and-npm/</guid><description>&lt;p>Running a repl inside Emacs is often convenient for evaluating code, checking
syntax, and myriad other tasks. When I wanted to run a Node REPL, I found that I
needed to do a little set up to get everything working the way I wanted.&lt;/p></description></item><item><title>Towards 100% Uptime with Node</title><link>https://williambert.online/2014/02/towards-100-uptime-with-node/</link><pubDate>Mon, 17 Feb 2014 16:18:00 +0000</pubDate><guid>https://williambert.online/2014/02/towards-100-uptime-with-node/</guid><description>&lt;p>In December, I gave a talk at
&lt;a href="http://www.meetup.com/Nova-Node/events/154016332/">Nova Node&lt;/a> called
&lt;a href="http://sandinmyjoints.github.io/towards-100-pct-uptime/">&amp;ldquo;Towards 100% Uptime with Node.js&amp;rdquo;&lt;/a>.
I wrote an accompanying blog post for the
&lt;a href="http://engineering.fluencia.com">Fluencia / SpanishDict engineering blog&lt;/a>:
&lt;a href="http://engineering.spanishdict.com/blog/2013/12/20/the-4-keys-to-100-uptime-with-nodejs">The 4 Keys to 100% Uptime with Node.js&lt;/a>.&lt;/p></description></item><item><title>How legit HTTP (with an async io assist) massacred my Node workers</title><link>https://williambert.online/2013/09/how-legit-http-with-an-async-io-assist-massacred-my-node-workers/</link><pubDate>Tue, 10 Sep 2013 18:55:00 +0000</pubDate><guid>https://williambert.online/2013/09/how-legit-http-with-an-async-io-assist-massacred-my-node-workers/</guid><description>&lt;p>An uncaught exception in our Node app was causing not only one, but two and then
three workers to die. (Fortunately, we hardly ever encounter uncaught
exceptions. Really, just this one since launch a few months ago. We&amp;rsquo;re Node
studs! Right?)&lt;/p></description></item><item><title>Allow CORS with localhost in Chrome</title><link>https://williambert.online/2013/06/allow-cors-with-localhost-in-chrome/</link><pubDate>Tue, 25 Jun 2013 19:04:00 +0000</pubDate><guid>https://williambert.online/2013/06/allow-cors-with-localhost-in-chrome/</guid><description>&lt;p>Today I spent some time wrestling with the notorious
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript">same origin policy&lt;/a>
in order to get CORS
(&lt;a href="https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS">cross-origin resource sharing&lt;/a>)
working in Chrome for development work I was doing between two applications
running on localhost. Setting the &lt;code>Access-Control-Allow-Origin&lt;/code> header to &lt;code>*&lt;/code>
seemed to have no effect, and
&lt;a href="https://code.google.com/p/chromium/issues/detail?id=67743">this bug report&lt;/a>
nearly led me to believe that was due to a bug in Chrome that made CORS with
localhost impossible. It&amp;rsquo;s not. It turned out that I also needed some other
CORs-related headers: &lt;code>Access-Control-Allow-Headers&lt;/code> and
&lt;code>Access-Control-Allow-Methods&lt;/code>.&lt;/p></description></item><item><title>Emacs cl-lib madness</title><link>https://williambert.online/2013/05/emacs-cl-lib-madness/</link><pubDate>Mon, 27 May 2013 15:52:00 +0000</pubDate><guid>https://williambert.online/2013/05/emacs-cl-lib-madness/</guid><description>&lt;p>Emacs 24.3 renamed the Common Lisp emulation package from &lt;code>cl&lt;/code> to &lt;code>cl-lib&lt;/code>. The
&lt;a href="http://www.gnu.org/software/emacs/NEWS.24.3">release notes&lt;/a> say that &lt;code>cl&lt;/code> in
24.3 is now &amp;ldquo;a bunch of aliases that provide the old, non-prefixed names&amp;rdquo;, but I
encountered some problems with certain packages searching for&amp;ndash;as best I can
determine&amp;ndash;function names that at some point changed but were not kept around as
aliases. This was particularly problematic when trying to run 24.3 on OS X
10.6.8.&lt;/p></description></item><item><title>Juxtaposition</title><link>https://williambert.online/2013/05/juxtaposition/</link><pubDate>Thu, 16 May 2013 19:02:00 +0000</pubDate><guid>https://williambert.online/2013/05/juxtaposition/</guid><description>&lt;p>A few days ago, I happened by chance to read these two articles one after the other:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="http://tomayko.com/writings/unicorn-is-unix">I like Unicorn because it&amp;rsquo;s Unix&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="http://highscalability.com/blog/2013/5/13/the-secret-to-10-million-concurrent-connections-the-kernel-i.html">The Secret To 10 Million Concurrent Connections -The Kernel Is The Problem, Not The Solution&lt;/a>&lt;/p></description></item><item><title>Zero to Node, Again</title><link>https://williambert.online/2013/01/zero-to-node-again/</link><pubDate>Thu, 17 Jan 2013 08:09:00 +0000</pubDate><guid>https://williambert.online/2013/01/zero-to-node-again/</guid><description>&lt;p>At &lt;a href="http://www.meetup.com/node-dc/events/98796672/">NodeDC&amp;rsquo;s January meetup&lt;/a>,
I&amp;rsquo;ll be giving a reprise of my
&lt;a href="http://sandinmyjoints.github.com/zero-to-node/">Zero to Node&lt;/a> talk, about
designing, coding, and launching my first web service using Node.js. The meetup
is Wednesday, Jan 23, at Stetson&amp;rsquo;s (1610 U St NW). Hope to see you there!&lt;/p></description></item><item><title>Review of Requests 1.0</title><link>https://williambert.online/2013/01/review-of-requests-1.0/</link><pubDate>Mon, 14 Jan 2013 17:22:00 +0000</pubDate><guid>https://williambert.online/2013/01/review-of-requests-1.0/</guid><description>&lt;p>&lt;em>Author&amp;rsquo;s note: This piece was &lt;a href="http://thediagram.com/12_6/rev_reitz.html">originally published&lt;/a> in the excellent literary journal
&lt;a href="http://thediagram.com/">DIAGRAM&lt;/a>, Issue 12.6. I&amp;rsquo;m
re-publishing here for formatting reasons.&lt;/em>&lt;/p>
&lt;p>Identification with another is addictive: some of my life's most profound, memorable experiences have come when something bridged the gap between me and another human. Because I'm a reader, this can occur across the distance of space and time. It's happened with minor Chekov characters, and at the end of Kate Mansfield stories. It happens again and again with Norman Rush and George Saunders. The author has pushed a character through the page and connected with me on a deep level: identification.&lt;/p></description></item><item><title>Update and Rescheduling</title><link>https://williambert.online/2012/11/update-and-rescheduling/</link><pubDate>Sun, 04 Nov 2012 22:23:00 +0000</pubDate><guid>https://williambert.online/2012/11/update-and-rescheduling/</guid><description>&lt;p>Hurricane Sandy rescheduled
&lt;a href="http://www.meetup.com/Nova-Node/events/84918342/">&lt;strong>Zero to Node&lt;/strong>&lt;/a>, my talk
about writing and deploying a node.js app in production, to Wednesday, November
7. Hope to see you there!&lt;/p>
&lt;p>(Update: &lt;a href="http://sandinmyjoints.github.com/zero-to-node">here are the slides from my talk&lt;/a>.)&lt;/p></description></item><item><title>A Case Study of Node.js in Production</title><link>https://williambert.online/2012/10/a-case-study-of-node-js-in-production/</link><pubDate>Mon, 01 Oct 2012 21:27:53 +0000</pubDate><guid>https://williambert.online/2012/10/a-case-study-of-node-js-in-production/</guid><description>&lt;p>I&amp;rsquo;m giving a talk about my experience &lt;a href="http://www.meetup.com/Nova-Node/events/84918342/">developing and deploying a Node.js web
service in production&lt;/a> at the
next Nova-Node meetup, October 30 at 6:30 p.m. Below is the writeup. If it
sounds interesting to you, come by!&lt;/p></description></item><item><title>(Relatively) quick and easy Gensim example code</title><link>https://williambert.online/2012/05/relatively-quick-and-easy-gensim-example-code/</link><pubDate>Fri, 04 May 2012 08:12:23 +0000</pubDate><guid>https://williambert.online/2012/05/relatively-quick-and-easy-gensim-example-code/</guid><description>&lt;p>Here&amp;rsquo;s some sample code that shows the basic steps necessary to use gensim to create a corpus, train models (log entropy and latent semantic analysis), and perform semantic similarity comparisons and queries.&lt;/p></description></item><item><title>An Introduction to gensim: "Topic Modelling for Humans"</title><link>https://williambert.online/2012/05/an-introduction-to-gensim-topic-modelling-for-humans/</link><pubDate>Thu, 03 May 2012 14:06:02 +0000</pubDate><guid>https://williambert.online/2012/05/an-introduction-to-gensim-topic-modelling-for-humans/</guid><description>&lt;p>On Tuesday, I presented at the monthly DC Python meetup. My talk was an introduction to gensim, a free Python framework for topic modelling and semantic similarity using LSA/LSI and other statistical techniques. I&amp;rsquo;ve been using gensim on and off for several months at work, and I really appreciate its performance, clean API design, documentation, and community. (All of this is due to its creator, Radim Rehurek, who I interviewed recently.)&lt;/p></description></item><item><title>Interview with Radim Rehurek, creator of gensim</title><link>https://williambert.online/2012/04/interview-with-radim-rehurek-creator-of-gensim/</link><pubDate>Mon, 30 Apr 2012 12:58:42 +0000</pubDate><guid>https://williambert.online/2012/04/interview-with-radim-rehurek-creator-of-gensim/</guid><description>&lt;p>Tomorrow at the &lt;a href="http://meetup.dcpython.org/events/23832731/">May 2012 DC Python meetup&lt;/a>, I&amp;rsquo;m giving a talk on &lt;a href="http://radimrehurek.com/gensim/">gensim&lt;/a>, a Python framework for topic modeling that I use at work and on my own for semantic similarity comparisons. (I&amp;rsquo;ll post the slides and example code for the talk soon.) I&amp;rsquo;ve found gensim to be a useful and well-designed tool, and pretty much all credit for it goes to its creator, Radim Rehurek. Radim was kind enough to answer a few questions I sent him about gensim&amp;rsquo;s history and goals, and about his background and interests.&lt;/p></description></item><item><title>ExtJS TreeStore trouble with nested nodes</title><link>https://williambert.online/2012/04/extjs-treestore-trouble-with-nested-nodes/</link><pubDate>Thu, 19 Apr 2012 10:23:07 +0000</pubDate><guid>https://williambert.online/2012/04/extjs-treestore-trouble-with-nested-nodes/</guid><description>&lt;p>At work, we&amp;rsquo;re building an app to edit objects in a database&amp;ndash;a classic CRUD
application. For now, we&amp;rsquo;re trying out ExtJS as the client-side UI
framework. One of the use cases is selecting and editing nested objects,
represented in our relational database with foreign keys. Let&amp;rsquo;s call the root
object a Task, which consists of nested Goals, which have Steps. Each of those
is defined by a model on the backend that is more or less mimicked by an
Ext.data.Model on the client-side, and each model has a proxy to a RESTful
endpoint on the backend for create/retrieve/update/delete operations. We want to
use an Ext.tree.TreePanel for the UI, so we hold the data in an
Ext.data.TreeStore. So far so good.&lt;/p></description></item><item><title>Fake bio for Steve</title><link>https://williambert.online/2012/04/fake-bio-for-steve/</link><pubDate>Fri, 06 Apr 2012 13:53:07 +0000</pubDate><guid>https://williambert.online/2012/04/fake-bio-for-steve/</guid><description>&lt;p>My good friend Steve has hosted &lt;a href="http://826dc.org/?p=3336">the lowercase&lt;/a>, the monthly reading series associated with &lt;a href="http://826dc.org/">826DC&lt;/a>, for three years. Steve has a charming habit of introducing his readers with made-up bios, so in his honor, I asked some lowercase regulars to write fake bios of him and share them at the third anniversary reading on April 4. The results were highly entertaining; thanks to everyone who wrote one!&lt;/p></description></item><item><title>How to install accelerated BLAS into a Python virtualenv</title><link>https://williambert.online/2012/03/how-to-install-accelerated-blas-into-a-python-virtualenv/</link><pubDate>Fri, 23 Mar 2012 20:43:33 +0000</pubDate><guid>https://williambert.online/2012/03/how-to-install-accelerated-blas-into-a-python-virtualenv/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>Some mathematically intense operations that use Numpy/Scipy can run faster with accelerated basic linear algebra subroutine (BLAS) libraries installed on your system (e.g., &lt;a href="http://radimrehurek.com/gensim/">gensim&amp;rsquo;s&lt;/a> corpus processing).&lt;/p>
&lt;p>To see what BLAS libraries you are using, do:&lt;/p></description></item><item><title>Novelties &amp; Traditions</title><link>https://williambert.online/2011/11/novelties-traditions/</link><pubDate>Sat, 19 Nov 2011 10:28:21 +0000</pubDate><guid>https://williambert.online/2011/11/novelties-traditions/</guid><description>&lt;p>Today&amp;rsquo;s the third annual Friendsgiving, a Thanksgiving-like pre-Thanksgiving event for a bunch of people who like each other; hence, Friendsgiving. Thanksgiving&amp;rsquo;s always been my favorite holiday so I&amp;rsquo;m more than happy to celebrate it twice a year. The first two Friendsgivings took place at my house, but because in the spring I traded my room in a cavernous and amply chandeliered group rowhouse for cozier and warmer digs, the honor of hosting this year falls to two friends who&amp;rsquo;re renting an entire lovely house for themselves up in Pleasant Plains. Sweet.&lt;/p></description></item><item><title>Gender, programming, and the power of language</title><link>https://williambert.online/2011/08/gender-programming-and-the-power-of-language/</link><pubDate>Sun, 28 Aug 2011 16:15:02 +0000</pubDate><guid>https://williambert.online/2011/08/gender-programming-and-the-power-of-language/</guid><description>&lt;p>An interlude from the recent trend of hardcore Django action:&lt;/p>
&lt;blockquote>
&lt;p>When I spoke with a female intern this summer, she recounted how, in 2006, the
GNOME Project, a free and open source software project, received almost 200 Google
Summer of Code applicants. All of them were male. When GNOME advertised an
identical program for women, emphasizing opportunities for learning and mentorship
instead of tough competition, they received more than 100 highly qualified female
applicants for the three spots they were able to fund. What amazed me even more was
when she suggested that our own company slogan — “We Help the World’s Best
Developers Make Better Software” — might alienate prospective female candidates.
That had never occurred to me. But according to our intern, in the world of
computer science, “when you hear the phrase ‘the world’s best developers,’ you see
a guy.”&lt;/p></description></item><item><title>django-social-auth: Installing and troubleshooting</title><link>https://williambert.online/2011/08/django-social-auth-installing-and-troubleshooting/</link><pubDate>Fri, 26 Aug 2011 11:16:14 +0000</pubDate><guid>https://williambert.online/2011/08/django-social-auth-installing-and-troubleshooting/</guid><description>&lt;p>Thanks to &lt;code>django-registration&lt;/code>, I was able to build a working account
registration/login system pretty easily. But I wanted to give users the ability
to use their existing accounts through popular services such as Facebook,
Twitter, etc., rather than have to create yet another account. Here&amp;rsquo;s how I did
it.&lt;/p></description></item><item><title>How to: Unit testing in Django with mocking and patching</title><link>https://williambert.online/2011/07/how-to-unit-testing-in-django-with-mocking-and-patching/</link><pubDate>Fri, 08 Jul 2011 10:56:29 +0000</pubDate><guid>https://williambert.online/2011/07/how-to-unit-testing-in-django-with-mocking-and-patching/</guid><description>&lt;h3 id="background">Background&lt;/h3>
&lt;p>For &lt;a href="www.readsrs.com">Readsr&lt;/a>, I need to track events that recur on a particular
day of the week (e.g., first Sunday of the month, third Friday of the month). I
created a DayOfWeek model to store any particular event&amp;rsquo;s day of the week. It
contains a method next_day_of_week() to return a datetime.date object set to
the next occurrence of whatever weekday a given event instance is set to (this
helps with figuring out when the next occurrence of an event is).&lt;/p></description></item><item><title>Simple Django Event Calendar</title><link>https://williambert.online/2011/06/django-event-calendar-for-a-django-beginner/</link><pubDate>Mon, 13 Jun 2011 20:34:52 +0000</pubDate><guid>https://williambert.online/2011/06/django-event-calendar-for-a-django-beginner/</guid><description>&lt;h3 id="background">Background&lt;/h3>
&lt;p>I&amp;rsquo;ve been teaching myself Django by writing a web app that tracks reading series in cities: &lt;a href="http://www.readsrs.com">Readsr&lt;/a>. A reading series is a kind of recurring event. It defines a time, location, and recurrence rule such as first Monday of the month. Writing a list view to display upcoming readings was easy, but I also wanted to create a calendar view, similar to what Google Calendar provides. That took a little more work.&lt;/p></description></item><item><title>Marshall, Barnard, Laurel, Marshall</title><link>https://williambert.online/2011/05/marshall-barnard-laurel-marshall/</link><pubDate>Thu, 19 May 2011 22:13:26 +0000</pubDate><guid>https://williambert.online/2011/05/marshall-barnard-laurel-marshall/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/05/2.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/05/2.jpg" alt="">&lt;/a>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/05/3.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/05/3.jpg" alt="">&lt;/a>
&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/05/5.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/05/5.jpg" alt="">&lt;/a>
&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/05/4.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/05/4.jpg" alt="">&lt;/a>&lt;/p></description></item><item><title>Poetry for the President</title><link>https://williambert.online/2011/05/poetry-for-the-president/</link><pubDate>Wed, 11 May 2011 11:43:10 +0000</pubDate><guid>https://williambert.online/2011/05/poetry-for-the-president/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/05/IMG_1361-1.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/05/IMG_1361-1.jpg" alt="">&lt;/a>Since March, I&amp;rsquo;ve been working with DC students from several high schools, including Duke Ellington, Ballou, Wilson and Bell, in evening poetry workshops at &lt;a href="http://www.826dc.org">826DC&lt;/a>. A bunch of us have been helping out—Mike Scalise, Adam Pelligrini, and Sally Keith (the last two being actual poets, while Mike and I, both prose writers, were faking it the whole time). And of course program director Mariam Al-Shawaf and 826DC Executive Director Joe Callahan did the thankless behind-the-scenes labor to make it all happen.&lt;/p></description></item><item><title>Spring, spring, spring</title><link>https://williambert.online/2011/05/spring-spring-spring/</link><pubDate>Mon, 09 May 2011 09:59:26 +0000</pubDate><guid>https://williambert.online/2011/05/spring-spring-spring/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/05/jbb_cr2.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/05/jbb_cr2.jpg" alt="">&lt;/a>Spring is the rarest of seasons in DC, but it looks like we get a few days of it this week. This could not be happening at a better time. The protracted move from Columbia Heights/Baltimore/Tucson to Capitol Hill is over. The &lt;a href="http://www.callandresponsedc.org/">art show&lt;/a> has wrapped. Work is still way busy, but next week I head to North Carolina for some writing time in the mountains at &lt;a href="http://doebranchink.org/">Doe Branch Ink&lt;/a>&amp;ndash;the ideal vacation.&lt;/p></description></item><item><title>New story, and other updates</title><link>https://williambert.online/2011/03/new-story-in-anomalous-press/</link><pubDate>Wed, 23 Mar 2011 11:35:36 +0000</pubDate><guid>https://williambert.online/2011/03/new-story-in-anomalous-press/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/03/anomalous1.png">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/03/anomalous1.png" alt="Anomalous Press #1">&lt;/a>I&amp;rsquo;m really thrilled to have a story, &lt;a href="http://www.anomalouspress.org/current/21.bert.winner.php">&amp;ldquo;Winner,&amp;rdquo;&lt;/a> in the very first issue of Anomalous Press. It was released on the Ides of March, so I&amp;rsquo;m a bit tardy announcing it here—it&amp;rsquo;s been a busy March so far.&lt;/p></description></item><item><title>Stuff: Happening</title><link>https://williambert.online/2011/02/stuff-happening/</link><pubDate>Tue, 22 Feb 2011 20:06:54 +0000</pubDate><guid>https://williambert.online/2011/02/stuff-happening/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/02/IMG_0746.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/02/IMG_0746.jpg" alt="Plane flying in clouds">&lt;/a>If I updated more regularly, I would have written entire posts about the following things.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>AWP 2011 came and went blazingly fast. I saw many people I&amp;rsquo;ve missed dearly, and missed many people I would&amp;rsquo;ve liked to see.&lt;/p></description></item><item><title>Bell Poetry Club</title><link>https://williambert.online/2011/01/bell-poetry-club/</link><pubDate>Sun, 30 Jan 2011 15:11:27 +0000</pubDate><guid>https://williambert.online/2011/01/bell-poetry-club/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/01/IMG_0758.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/01/IMG_0758.jpg" alt="Potomac River ice">&lt;/a>&lt;/p>
&lt;p>Friday, I helped out with an 826DC workshop at Bell Multicultural High School in Columbia Heights. Bell&amp;rsquo;s Poetry Club meets after school each Friday, and we came by to work with them on metaphor. To fuel the discussion, we read &amp;ldquo;Snow Leopards at the Denver Zoo&amp;rdquo; by &lt;a href="http://en.wikipedia.org/wiki/William_Matthews_%28poet%29">William Matthews&lt;/a> (who I&amp;rsquo;d never heard of before—I&amp;rsquo;m so not a poet):&lt;/p></description></item><item><title>Building the New Call + Response Site</title><link>https://williambert.online/2011/01/building-the-new-call-response-site/</link><pubDate>Wed, 26 Jan 2011 20:32:03 +0000</pubDate><guid>https://williambert.online/2011/01/building-the-new-call-response-site/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/01/5391220127_9ed0503fb0_b.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/01/5391220127_9ed0503fb0_b.jpg" alt="National Portrart Gallery in the snow">&lt;/a>Over the past couple weeks I worked on relaunching the website for &lt;a href="http://www.callandresponsedc.org/">Call + Response&lt;/a>, an art show I co-curate with my friend &lt;a href="http://twitter.com/kiraface">Kira&lt;/a>.&lt;/p>
&lt;p>The website for the second iteration of the show, Call + Response: Textures, is pretty different from &lt;a href="http://williamjohnbert.com/callandresponse2010/">the first version&lt;/a>. The first was ultra minimal, hand-coded, and didn&amp;rsquo;t use a CMS—just a simple site that I could get going in a matter of hours. It was not designed to coordinate with a promotional campaign incorporating Twitter and Facebook. Even doing regular updates on our progress putting together the show would have been a real pain.&lt;/p></description></item><item><title>Should have been born in January</title><link>https://williambert.online/2011/01/should-have-been-born-in-january/</link><pubDate>Wed, 19 Jan 2011 07:37:30 +0000</pubDate><guid>https://williambert.online/2011/01/should-have-been-born-in-january/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2011/01/IMG_0716.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2011/01/IMG_0716.jpg" alt="A book being reading by a fireplace.">&lt;/a>I can&amp;rsquo;t stand Garrison Keillor&amp;rsquo;s A Prairie Home Companion, but the best part about waking up at 6:35 a.m. is his &lt;a href="http://writersalmanac.publicradio.org/">Writer&amp;rsquo;s Almanac&lt;/a>. For five minutes he puts his cornmeal voice to good use, first to list this-day-in-literature history tidbits, then to read a poem.&lt;/p></description></item><item><title>Quelle coincidence</title><link>https://williambert.online/2010/12/quelle-coincidence/</link><pubDate>Thu, 30 Dec 2010 20:58:43 +0000</pubDate><guid>https://williambert.online/2010/12/quelle-coincidence/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0943.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0943.jpg" alt="A glowing globe on a table">&lt;/a>Julian Barnes has been a favorite author of mine since I borrowed stole Metroland from my friend Mark last winter. Reading Barnes makes me wish I knew some French, since he drops sentences, phrases, and occasionally passages of it, sans translation, into everything he writes, or at least everything of his that I’ve read. But I muddle through with an incomplete, partial, or guessed understanding and still find myself drawn into the stories and entranced by his command of (English) language. I&amp;rsquo;m nearly finished with Flaubert&amp;rsquo;s Parrot, and being the type of person who compulsively reads  Wikipedia entries, today I browsed to &lt;a href="http://en.wikipedia.org/wiki/Julian_Barnes">his&lt;/a>, which in turn led me to &lt;a href="http://www.julianbarnes.com/">his website&lt;/a>.&lt;/p></description></item><item><title>Little Town of Baltimore</title><link>https://williambert.online/2010/12/little-town-of-balitmore/</link><pubDate>Tue, 21 Dec 2010 22:20:16 +0000</pubDate><guid>https://williambert.online/2010/12/little-town-of-balitmore/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0674-2.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0674-2.jpg" alt="A groovy Christmas tree made of records">&lt;/a>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0681-1.jpg">
&lt;/a>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0686.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0686.jpg" alt="Natty Bo man says Merry Christmas">&lt;/a>&lt;a href="../wp-content/uploads/2010/12/IMG_0681-1.jpg">&lt;img src="../wp-content/uploads/2010/12/IMG_0681-1.jpg" alt="Houses all lit up on Baltimore&amp;rsquo;s 34th street">&lt;/a>&lt;/p></description></item><item><title>can't,stop,ngrams</title><link>https://williambert.online/2010/12/cantstopngrams/</link><pubDate>Fri, 17 Dec 2010 18:48:59 +0000</pubDate><guid>https://williambert.online/2010/12/cantstopngrams/</guid><description>&lt;p>&lt;a href="../wp-content/uploads/2010/12/IMG_11401.jpg">&lt;img src="../wp-content/uploads/2010/12/IMG_11401.jpg" alt="A laptop on a desk">&lt;/a>Google&amp;rsquo;s new toy, &lt;a href="http://ngrams.googlelabs.com">ngrams&lt;/a>, graphs the relative frequency of words and phrases occurring in books published over an arbitrary time period from 1500 to 2008. Let&amp;rsquo;s go. (All search the English Fiction corpus from 1908 to 2008 except the last, which searches American English, 1858-2008.)&lt;/p></description></item><item><title>I'm Friends with a Winner</title><link>https://williambert.online/2010/12/im-friends-with-a-winner/</link><pubDate>Fri, 10 Dec 2010 13:12:35 +0000</pubDate><guid>https://williambert.online/2010/12/im-friends-with-a-winner/</guid><description>&lt;p>&lt;img src="http://digboston.com/wp-content/uploads/2010/11/buks_wall.jpg" alt="">&lt;/p>
&lt;p>Congrats to my friend Mark Polanzak, who &lt;a href="http://digboston.com/laugh/2010/11/bukowski-pint-and-pen-contest-winners/">won the 2010 Pint and Pen Contest&lt;/a>. The contest rules:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Type up&lt;/strong> (and print out if you must) a story that includes the words &lt;strong>PINT&lt;/strong>, &lt;strong>PEN&lt;/strong>, **BUKOWSKI **and &lt;strong>HARPOON&lt;/strong>. Entries must be typed, in reverence to the brilliant Charles Bukowski. The word count must be between 500 and 750 words.&lt;/p></description></item><item><title>Where I'm coming from</title><link>https://williambert.online/2010/12/where-im-coming-from/</link><pubDate>Sun, 05 Dec 2010 11:12:40 +0000</pubDate><guid>https://williambert.online/2010/12/where-im-coming-from/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0827-1.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2010/12/IMG_0827-1.jpg" alt="Three hikers above the clouds on Mt Fuji">&lt;/a>&lt;/p>
&lt;p>In my &lt;a href="http://williamjohnbert.com/2010/11/old-dog-new-tricks/">old dog, new tricks&lt;/a> post, I mentioned that, though I used to blog, what you&amp;rsquo;re reading now represents my first use of Wordpress. Was it hard to set up? No. It doesn&amp;rsquo;t hurt that I have a computer science background, including an undergrad degree in the field. Of course, when I was in college, web development was not part of the required CS curriculum. Standalone apps were still dominant, so I learned Java and then C# .NET, which I used to write black box trading systems for a couple years. During that time, I also took my first writing classes, and once I realized that software engineering was not going to be my career, I left that job and went to grad school for writing for a couple of years.&lt;/p></description></item><item><title>Caught in the Act, Part 3</title><link>https://williambert.online/2010/11/caught-in-the-act-part-3/</link><pubDate>Fri, 26 Nov 2010 11:23:23 +0000</pubDate><guid>https://williambert.online/2010/11/caught-in-the-act-part-3/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2010/11/IMG_0640.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2010/11/IMG_0640.jpg" alt="Sign for Caught in the Act workshop in 826DC window">&lt;/a>Tuesday night was the final workshop of the &lt;a href="../2010/11/teaching-a-workshop-tonight/">three&lt;/a>-&lt;a href="../2010/11/caught-in-the-act-part-2/">part&lt;/a> Caught in the Act series that I&amp;rsquo;ve been leading at &lt;a href="http://www.826dc.org/">826DC&lt;/a>. I played trombone in high school band, and I remember the teacher telling us that the most challenging pieces weren&amp;rsquo;t the flashy &lt;em>allegro fortissimo&lt;/em> showpieces (however much we enjoyed them) but rather the &lt;em>lento piano&lt;/em> passages&amp;ndash;unassuming, soft and slow, but deceptively difficult because they exposed your playing to a high level of scrutiny and vulnerability.&lt;/p></description></item><item><title>My Morning Commute</title><link>https://williambert.online/2010/11/my-morning-commute/</link><pubDate>Thu, 25 Nov 2010 11:14:23 +0000</pubDate><guid>https://williambert.online/2010/11/my-morning-commute/</guid><description>&lt;p>&lt;a href="http://myamcommute.tumblr.com/post/1620568222/william-29-washington-dc-sunrise-comes-to">&lt;img src="http://30.media.tumblr.com/tumblr_lc5efzo5Cd1qelrpbo1_500.jpg" alt="Early morning sunlight on buildings in Columbia Heights">&lt;/a>&lt;/p>
&lt;p>&lt;em>Morning comes to Columbia Heights&lt;/em>&lt;/p>
&lt;p>Fellow 826DC volunteer and all-around awesome person &lt;a href="http://myamcommute.tumblr.com/">Anna started a Tumblr&lt;/a> to collect photos of people&amp;rsquo;s morning commutes. I thought that was a great way to turn what can be one of a day&amp;rsquo;s most unremarkable stretches into something seen anew, so I contributed a &lt;a href="http://myamcommute.tumblr.com/post/1620568222/william-29-washington-dc-sunrise-comes-to">couple&lt;/a> &lt;a href="http://myamcommute.tumblr.com/post/1648509699/william-29-washington-d-c-museum-of-unnatural">photos&lt;/a> and plan to send more. At the moment (Happy Thanksgiving!) several of the commute photos involve seriously beautiful skyscapes.&lt;/p></description></item><item><title>Exercise: Good for you?</title><link>https://williambert.online/2010/11/exercise-good-for-you/</link><pubDate>Fri, 19 Nov 2010 21:08:59 +0000</pubDate><guid>https://williambert.online/2010/11/exercise-good-for-you/</guid><description>&lt;p>I&amp;rsquo;m going to do something I haven&amp;rsquo;t done before: post some of my writing, but not a finished piece. I just finished John Gardener&amp;rsquo;s &lt;em>The Art of Fiction&lt;/em> a few days ago, and I&amp;rsquo;ve decided to do some of the exercises he provides at the end of the book. For example:&lt;/p></description></item><item><title>Caught in the Act, Part 2</title><link>https://williambert.online/2010/11/caught-in-the-act-part-2/</link><pubDate>Thu, 18 Nov 2010 19:32:32 +0000</pubDate><guid>https://williambert.online/2010/11/caught-in-the-act-part-2/</guid><description>&lt;p>Tuesday night was the second installment of &lt;a href="http://826dc.org/?p=356">Caught in the Act&lt;/a>, the creative writing workshop series I&amp;rsquo;m leading at 826DC. It went really well&amp;ndash;class size doubled (to two!) and we produced an entire new draft, this time from the point of view of the person who did the catching.&lt;/p></description></item><item><title>Old dog, new tricks</title><link>https://williambert.online/2010/11/old-dog-new-tricks/</link><pubDate>Tue, 16 Nov 2010 19:02:23 +0000</pubDate><guid>https://williambert.online/2010/11/old-dog-new-tricks/</guid><description>&lt;p>&lt;a href="http://williamjohnbert.com/wp-content/uploads/2010/11/dog_computer.jpg">&lt;img src="http://williamjohnbert.com/wp-content/uploads/2010/11/dog_computer.jpg" alt="A dog using a laptop">&lt;/a>&lt;/p>
&lt;p>So I&amp;rsquo;m actually not new to blogging&amp;ndash;I blogged for about a year from 2003-2004 and, though it may lead to embarrassment, I&amp;rsquo;ll even link to the old thing, which is still up: &lt;a href="http://pleonasticephemera.blogspot.com/">Pleonastic Ephemera&lt;/a>. (I&amp;rsquo;ve also participated in several private group blogs for sharing writing with geographically-dispersed friends.)&lt;/p></description></item><item><title>Tonight: Caught in the Act, part 1</title><link>https://williambert.online/2010/11/teaching-a-workshop-tonight/</link><pubDate>Tue, 09 Nov 2010 11:45:48 +0000</pubDate><guid>https://williambert.online/2010/11/teaching-a-workshop-tonight/</guid><description>&lt;p>I&amp;rsquo;m leading a workshop entitled &lt;em>Caught in the Act&lt;/em> at &lt;a href="http://826dc.org">826DC&lt;/a> tonight:&lt;/p>
&lt;blockquote>
&lt;p>Sometimes the best essays are the ones about breaking the rules. In this workshop, you’ll write essays about the times you’ve been caught doing something you shouldn’t have. We’ll talk about how to set the scene, narrate character actions and motivation, build suspense, and what—if anything—you learned from the experience. You’ll write and leave with an essay telling the story of how you bucked the rules, and how the rules bucked you back.&lt;/p></description></item><item><title>About</title><link>https://williambert.online/about/</link><pubDate>Sun, 19 Sep 2010 00:00:00 +0000</pubDate><guid>https://williambert.online/about/</guid><description>&lt;p>By day, I get to work with incredibly smart, talented, and all-around great
people at &lt;a href="http://www.curiositymedia.com">Curiosity Media&lt;/a> (now part of
&lt;a href="https://www.ixl.com/">IXL&lt;/a>), where I&amp;rsquo;m an engineer for &lt;a href="http://www.spanishdict.com">SpanishDict.com&lt;/a> (también &lt;a href="http://www.ingles.com">en
español&lt;/a>! &amp;amp; &lt;a href="https://www.frenchdictionary.com">French&lt;/a>
/ &lt;a href="www.anglais.com">le français&lt;/a>), the world&amp;rsquo;s best
language learning and reference websites.&lt;/p></description></item></channel></rss>