<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>DaFoster (Productivity)</title>
 <link href="https://dafoster.net/articles/topics/#Productivity"/>
 <link href="https://dafoster.net/articles/topics/Productivity.xml" rel="self"/>
 <updated>2026-05-01T03:44:48+00:00</updated>
 <id>https://dafoster.net/articles/topics/#Productivity</id>
 <author>
   <name>David Foster</name>
   
 </author>
 <icon>https://dafoster.net/favicon.ico</icon>
 <logo>https://dafoster.net/favicon.ico</logo>

 
 
 <entry>
   <id>https://dafoster.net/articles/2021/01/20/i-no-longer-trust-the-great-suspender</id>
   <title>I no longer trust The Great Suspender</title>
   <published>2021-01-20T00:00:00+00:00</published>
   <updated>2021-01-20T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
     <category term="Software"/>
   
     <category term="Offtopic"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2021/01/20/i-no-longer-trust-the-great-suspender/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;I know a number of folks use &lt;strong&gt;The Great Suspender&lt;/strong&gt; to automatically suspend
inactive browser tabs in Chrome. Apparently recent versions of this extension
have been &lt;a href=&quot;https://www.reddit.com/r/KyleTaylor/comments/jowlt2/open_source_development_the_great_suspender_saga/&quot;&gt;taken over by a shady anonymous entity&lt;/a&gt; and is now
&lt;a href=&quot;https://www.windowscentral.com/great-suspender-extension-now-flagged-malware-edge-has-built-replacement&quot;&gt;flagged by Microsoft as malware&lt;/a&gt;. Notably the most recent
version of the extension (v7.1.8) has added integrated analytics that can
track all of your browsing activity across all sites. Yikes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendations for users of The Great Suspender (7.1.8):&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;Temporary easy fix&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Disable analytics tracking by opening the extension options for
The Great Suspender and checking the box
&amp;ldquo;Automatic deactivation of any kind of tracking&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Pray that the shady developer doesn&amp;rsquo;t issue a malicious update to The Great Suspender later.
(There&amp;rsquo;s no sensible way to disable updates of an individual extension.)&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Permanent harder fix &lt;small&gt;(👈 &lt;strong&gt;Recommended!&lt;/strong&gt;)&lt;/small&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Close as many unneeded tabs as you can.&lt;/li&gt;
&lt;li&gt;Unsuspend all remaining tabs. ⏳

&lt;ul&gt;
&lt;li&gt;⚠️ Any tabs that you forget to unsuspend will be lost
when uninstalling The Great Suspender in the next step.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Uninstall The Great Suspender.&lt;/li&gt;
&lt;li&gt;Download the &lt;a href=&quot;https://github.com/greatsuspender/thegreatsuspender/releases/tag/v7.1.6&quot;&gt;latest good version&lt;/a&gt; of The Great Suspender (7.1.6) from GitHub,
and move it to some permanent location outside your Downloads folder.
(It should be commit 9730c09.)&lt;/li&gt;
&lt;li&gt;Load your downloaded copy as &lt;a href=&quot;https://lifehacker.com/how-you-can-still-download-chrome-extensions-without-us-1826796797&quot;&gt;an unpacked extension&lt;/a&gt;.
(This copy will not auto-update to future untrusted versions of the extension.)&lt;/li&gt;
&lt;li&gt;All done! 🎉&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;s&gt;&lt;strong&gt;Caveat:&lt;/strong&gt; My understanding is that installing an unpacked extension in this way
will cause Chrome to &lt;a href=&quot;https://news.ycombinator.com/item?id=25847171&quot;&gt;issue a new kind of security prompt&lt;/a&gt; every time it is
launched, which you&amp;rsquo;ll have to ignore. 😕&lt;/s&gt;
I see no security prompt for using an unpacked extension at least on
macOS 10.14 Mojave with Chrome 88 and Developer Mode left on.&lt;/p&gt;

&lt;h3&gt;Other options&lt;/h3&gt;

&lt;p&gt;Other browser extensions for suspending tabs exist, as mentioned in the
&lt;a href=&quot;https://news.ycombinator.com/item?id=25846504&quot;&gt;Hacker News discussion&lt;/a&gt; for this article. However I have not conducted my own
security review on any of those other extensions, so buyer beware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2021-02-06 Update:&lt;/strong&gt; Wow. &lt;a href=&quot;https://www.zdnet.com/article/google-kills-the-great-suspender-heres-what-you-should-do-next/&quot;&gt;Google has pulled The Great Suspender&lt;/a&gt; from its web store.
It is still possible to install the latest clean version of The Great Suspender
using the &amp;ldquo;Permanent harder fix&amp;rdquo; instructions above. Or you might consider one
of the &lt;a href=&quot;https://lifehacker.com/ditch-the-great-suspender-before-it-becomes-a-security-1845989664&quot;&gt;alternatives suggested by Lifehacker&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;&lt;em&gt;Related Articles&lt;/em&gt;&lt;/h3&gt;

&lt;p&gt;In &lt;span class=&quot;tag_box tag_box--inline&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&lt;a class=&quot;tag__pill&quot; href=&quot;/articles/topics/#Productivity&quot;&gt;
  Productivity&lt;sup&gt;13&lt;/sup&gt;
&lt;/a&gt;
&lt;a class=&quot;tag__subscribe subscribe&quot; href=&quot;feed://dafoster.net/articles/topics/Productivity.xml&quot;&gt;
  &lt;img src=&quot;/assets/feed-icon-14x14.png&quot; width=&quot;14&quot; height=&quot;14&quot; alt=&quot;Subscribe to Productivity&quot; title=&quot;Subscribe to Productivity&quot;/&gt;
&lt;/a&gt;
&lt;/span&gt;&lt;/span&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/articles/2015/03/23/block-distracting-websites/&quot;&gt;Block Distracting Websites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/articles/2013/07/27/sending-email-from-command-line-scripts/&quot;&gt;Sending email from command line scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/articles/2013/10/27/scrivener-an-ide-for-thinkers-creators-and-writers/&quot;&gt;Scrivener: An IDE for thinkers, creators, and writers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In &lt;span class=&quot;tag_box tag_box--inline&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&lt;a class=&quot;tag__pill&quot; href=&quot;/articles/topics/#Software&quot;&gt;
  Software&lt;sup&gt;78&lt;/sup&gt;
&lt;/a&gt;
&lt;a class=&quot;tag__subscribe subscribe&quot; href=&quot;feed://dafoster.net/articles/topics/Software.xml&quot;&gt;
  &lt;img src=&quot;/assets/feed-icon-14x14.png&quot; width=&quot;14&quot; height=&quot;14&quot; alt=&quot;Subscribe to Software&quot; title=&quot;Subscribe to Software&quot;/&gt;
&lt;/a&gt;
&lt;/span&gt;&lt;/span&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/articles/2017/03/25/how-to-design-large-programs-with-abstraction-and-encapsulation/&quot;&gt;How to Design Large Programs with Abstraction and Encapsulation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2020/02/02/power-naps</id>
   <title>Power Naps</title>
   <published>2020-02-02T00:00:00+00:00</published>
   <updated>2020-02-02T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2020/02/02/power-naps/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;For difficult problems&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; I have used naps at home and work to recharge quickly or to temporarily alter my information processing mode&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;When to power nap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When feeling mentally fuzzy.&lt;/li&gt;
&lt;li&gt;When slightly tired but still there is more that must be done before sleep.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;How to power nap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find a &lt;b&gt;&lt;u&gt;comfortable position&lt;/u&gt;&lt;/b&gt;. Ensure it is &lt;u&gt;materially different&lt;/u&gt; than a regular sleeping position, to avoid accidentally sleeping vs napping. (For example at home, I like to nap on my bed with TWO pillows rather than the usual one, plus a partial prop of my legs up by moving the duvet cover halfway down.)&lt;/li&gt;
&lt;li&gt;Eliminate most light, but not all light, again to distinguish from sleep. A face mask, shirt mask, or beanie pulled over the eyes works well for this.&lt;/li&gt;
&lt;li&gt;Set a timer. I usually use about 12 minutes.&lt;/li&gt;
&lt;li&gt;Try to spread out limbs a bit so they aren’t touching. (This avoids unintentional clenching and bracing, which can be physically draining.) Uncross legs. Separate arms from core.&lt;/li&gt;
&lt;li&gt;Disconnect from muscles. Easiest to do this in a wave, starting from toes and moving in a scan up to head. Disconnecting from neck and above seems to always be the hardest. Sink into the earth.&lt;/li&gt;
&lt;li&gt;Partial disconnect from thoughts. You are now napping.&lt;/li&gt;
&lt;li&gt;Nap timer goes off.&lt;/li&gt;
&lt;li&gt;If warm up period desired (which is recommended), set a new short timer. Maybe 5 minutes long. Remove light filter. Partial reconnect to muscles. Full reconnect to thoughts.&lt;/li&gt;
&lt;li&gt;Warm up timer goes off.&lt;/li&gt;
&lt;li&gt;Stand up. Nap time is over.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr/&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;Difficult problems for me especially include problems requiring excessive intuition, extraversion-perspective, or feeling-perspective.&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&quot;fn:2&quot;&gt;
&lt;p&gt;Roughly speaking, my information processing mode in a moment corresponds to an MBTI alignment.&lt;a href=&quot;#fnref:2&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2020/01/18/stress</id>
   <title>Stress</title>
   <published>2020-01-18T00:00:00+00:00</published>
   <updated>2020-01-18T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2020/01/18/stress/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;What is stress exactly?&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Stress is an abnormal alertness (and high rate of bodily energy drain) that is felt by an individual to be required in order to respond to the demands placed on them from their environment.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Stress can generally be felt from negative situations (&lt;strong&gt;distress&lt;/strong&gt;) or positive situations (&lt;strong&gt;eustress&lt;/strong&gt;). Below I will only consider distress.&lt;/p&gt;

&lt;p&gt;An environment is stressful to a particular person if it contains &lt;strong&gt;stressors&lt;/strong&gt;: perceived dangers or risks. In this modern world, stressors particularly include various forms of &lt;strong&gt;&lt;u&gt;social risk&lt;/u&gt;&lt;/strong&gt; such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;risk of &lt;strong&gt;embarrassment&lt;/strong&gt; (ex: making an inaccurate negative first impression on someone of high potential importance, such as on a first date or first meeting of a new boss),&lt;/li&gt;
&lt;li&gt;social &lt;strong&gt;rejection&lt;/strong&gt; (refusal of an other to permit a heightening of closeness sought by a subject, such as when one partner wants to elevate a date to a close romantic partner [such as to a boyfriend/girlfriend], to an &lt;em&gt;exclusive&lt;/em&gt; romantic relationship, or to marriage),&lt;/li&gt;
&lt;li&gt;social &lt;strong&gt;disconnection&lt;/strong&gt; (refusal for further communication, usually due to excessive boundary violations and related anger; stonewalling), or&lt;/li&gt;
&lt;li&gt;social &lt;strong&gt;abandonment&lt;/strong&gt; (an important person decides to leave you or a group you lead because they are disgruntled and circumstances do not allow you to assuage their concerns sufficiently; physically walking away from someone, usually as part of a flight response to an extreme stressor).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Stress serves to motivate one into action to avoid an oncoming threat of &lt;strong&gt;pain&lt;/strong&gt; (whether it be physical or social). Thus, even though it isn’t fun to be under stress, the feeling of stress is useful to get oneself out of a bad situation or to modify a situation to no longer be bad.&lt;/p&gt;

&lt;p&gt;Common responses to stress are to &lt;strong&gt;fight&lt;/strong&gt; or to &lt;strong&gt;flight&lt;/strong&gt;. It’s worth noting that “fighting” includes not just the application of anger or physical violence but also more adaptive strategies such as having difficult conversations with an other to change their mind/perspective about something or more generally to influence an other to change their behavior.&lt;/p&gt;

&lt;p&gt;A unexpected appearance of the feeling of stress is an intuitive emotional signal that there may be an incoming danger which hasn’t been fully processed yet. &lt;strong&gt;Processing aids&lt;/strong&gt; such as &lt;strong&gt;sleep&lt;/strong&gt;, &lt;strong&gt;journaling&lt;/strong&gt;, or &lt;strong&gt;meditation&lt;/strong&gt; are recommended at that point to identify what the new stressor is, and to consider possible responses.&lt;/p&gt;

&lt;p&gt;Some individuals who have had chronic very difficult (or highly stressful) experiences in the past may have developed &lt;strong&gt;triggers&lt;/strong&gt;, or especial sensitivities to the potential risks of certain situations. Women (and female-presenting individuals) in particular may have be subjected to various forms of &lt;strong&gt;sexual harassment&lt;/strong&gt; such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unwanted repeated attempts to initiate conversation,&lt;/li&gt;
&lt;li&gt;unwanted repeated date requests,&lt;/li&gt;
&lt;li&gt;unwanted (“innocent”) groping, or&lt;/li&gt;
&lt;li&gt;unwanted proposition&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;especially from relative strangers.&lt;/p&gt;

&lt;p&gt;Consequently I find the female population as a whole to be more vigilant about their safety from sexually threatening situations, as compared to the male population (from my perspective as a male). I as a male am not especially concerned about my physical safety, but many of my close female friends &lt;em&gt;are&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Very extreme stress which the subject feels powerless to avoid leads to &lt;strong&gt;resignment&lt;/strong&gt;, &lt;strong&gt;paralyzing depression&lt;/strong&gt;, or &lt;strong&gt;disassociation&lt;/strong&gt;. It’s an approximation of the “play dead” response when a literal bear is in front of you and you cannot outrun it.&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;That’s all I have to say about stress. Hopefully something here was insightful to you.&lt;/p&gt;

&lt;h3&gt;Further Reading&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ncase.me/anxiety/&quot;&gt;Adventures with Anxiety&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Personal experiences, which writing this article has helped me process&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr/&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;Playing dead apparently &lt;em&gt;is&lt;/em&gt; an effective technique to survive if you encounter an angry bear and all other measures have failed.&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2018/12/15/timecharts</id>
   <title>Timecharts</title>
   <published>2018-12-15T00:00:00+00:00</published>
   <updated>2018-12-15T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2018/12/15/timecharts/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;h2&gt;What is a timechart? Why are they useful?&lt;/h2&gt;

&lt;p&gt;A timechart is an organizational device of my own invention that helps you track what you are working on from minute-to-minute during the day. It provides &lt;strong&gt;time-awareness&lt;/strong&gt;, the sense of time passing. It keeps you &lt;strong&gt;on task&lt;/strong&gt;, as any distracting activities show up immediately on the chart. For someone like myself, who is easily distracted and often goes down tangents and rabbit holes, a timechart can be very useful for getting things done.&lt;/p&gt;

&lt;p&gt;A timechart looks like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2018/timecharts/TimechartFilled.jpeg&quot; alt=&quot;A filled timechart&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It shows activities that you do throughout the day as you are doing them.&lt;/p&gt;

&lt;p&gt;I have been using timecharts to manage my time at various points over the last two decades. They are not appropriate for use all the time but in certain situations can be very helpful for being productive.&lt;/p&gt;

&lt;h2&gt;When is a timechart useful to use?&lt;/h2&gt;

&lt;p&gt;A timechart is useful if you have &lt;strong&gt;a large block of unstructured time&lt;/strong&gt;, such as a weekend day, where you want to get some productive work done.&lt;/p&gt;

&lt;p&gt;A timechart is useful if you have &lt;strong&gt;lots of 15+ minute tasks&lt;/strong&gt; that you want to get done but you are worried about getting distracted.&lt;/p&gt;

&lt;h2&gt;When is a timechart NOT useful to use?&lt;/h2&gt;

&lt;p&gt;A timechart is NOT useful for &lt;strong&gt;brainstorming or exploratory work&lt;/strong&gt; that inherently involves switching between lots of different topics. Timecharts make context switches and digressions more expensive, so are a poor fit when you &lt;em&gt;want&lt;/em&gt; to move fluidly from topic to topic or idea to idea.&lt;/p&gt;

&lt;p&gt;A timechart is also not very useful if you have &lt;strong&gt;exactly one task that you know you must be doing&lt;/strong&gt; and are already highly motivated to do whatever it takes to get that task done.&lt;/p&gt;

&lt;p&gt;A timechart is also not as useful if you have &lt;strong&gt;less than 2 hours of free time to manage&lt;/strong&gt;, as the overhead of creating and updating the timechart in the first place will tend to outweigh the benefit.&lt;/p&gt;

&lt;h2&gt;How do I create a timechart?&lt;/h2&gt;

&lt;p&gt;I typically create a timechart at the start of a weekend day or just after returning from work on a weekday.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, you will need a &lt;strong&gt;pen&lt;/strong&gt; or a &lt;strong&gt;mechanical pencil&lt;/strong&gt; (preferably both) and a &lt;strong&gt;3x5&quot; notecard&lt;/strong&gt;.

&lt;ul&gt;
&lt;li&gt;I keep these with me at all times whereever I go in my pocket for quick access. I also have backup supplies in my backpack and daypack when I am out and about.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Write the &lt;strong&gt;date&lt;/strong&gt; in the corner, with your pen.&lt;/li&gt;
&lt;li&gt;Draw the &lt;strong&gt;circle&lt;/strong&gt;, with your pen.&lt;/li&gt;
&lt;li&gt;Decide on what &lt;strong&gt;range of hours&lt;/strong&gt; to put on the chart.

&lt;ul&gt;
&lt;li&gt;4-hour and 8-hour ranges are easiest to draw by hand.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Draw the &lt;strong&gt;spokes&lt;/strong&gt; of the chart, lightly with your pencil.&lt;/li&gt;
&lt;li&gt;Add the &lt;strong&gt;hour numbers&lt;/strong&gt; at the end of the spokes.&lt;/li&gt;
&lt;li&gt;Optionally, add &lt;strong&gt;15-minute tick marks&lt;/strong&gt; between the spokes, with your pencil.

&lt;ul&gt;
&lt;li&gt;Prefilling the tick marks provides a consistent sense of scale when you use timecharts with varying hour ranges across multiple days.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Write down any &lt;strong&gt;preexisting commitments&lt;/strong&gt; from your calendar (if any) as wedges inside the circle, in pencil.&lt;/li&gt;
&lt;li&gt;Write out your &lt;strong&gt;top 2-4 tasks&lt;/strong&gt; that you want to consider for today at the bottom of the card. (Do this from memory or from a more-structured system.)&lt;/li&gt;
&lt;li&gt;Optionally, decide on a few &lt;strong&gt;specific tasks&lt;/strong&gt; to definitely try to accomplish. Estimate how long each task will take (in multiples of 15-minutes) and write a wedge for each task in the circle when you expect you can do it, with your pencil.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;A just-created timechart will look like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2018/timecharts/TimechartNew.jpeg&quot; alt=&quot;An newly-created timechart&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Notice that in general the known-fixed activities are written in pen and the proposed activities are written in pencil. As the day progresses, the proposed activities in pencil will be overwritten by the actual activities in pen.&lt;/p&gt;

&lt;p&gt;When stationary at a desk, I keep the timechart notecard out and beside me for easy updaing. When out and about, I keep the timechart notecard in my pocket for quick access.&lt;/p&gt;

&lt;h2&gt;How do I update a timechart during the day?&lt;/h2&gt;

&lt;p&gt;Whenever you feel yourself &lt;strong&gt;beginning a task&lt;/strong&gt; during the day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write down the &lt;strong&gt;start end&lt;/strong&gt; of the new wedge, which also is the tail end of the last wedge.&lt;/li&gt;
&lt;li&gt;Optionally, write down the &lt;strong&gt;task name&lt;/strong&gt; in the new wedge.&lt;/li&gt;
&lt;li&gt;Write down the task name in the last wedge, if not already done.

&lt;ul&gt;
&lt;li&gt;Were you distracting yourself? Write &amp;ldquo;~&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Were you doing something small that is cumbersome to write out? Consider writing &amp;ldquo;&amp;hellip;&amp;rdquo; instead of a long description.&lt;/li&gt;
&lt;li&gt;Were you doing something you don&amp;rsquo;t remember? Write &amp;ldquo;?&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Whenever you feel yourself &lt;strong&gt;finishing a task&lt;/strong&gt; during the day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write down the &lt;strong&gt;tail end&lt;/strong&gt; of the last wedge.&lt;/li&gt;
&lt;li&gt;Write down the &lt;strong&gt;task name&lt;/strong&gt; in the last wedge, if not already done.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I frequently find that I do NOT immediately begin a new productive task directly after a previous task; I often take a break or deliberately distract myself for a few minutes between tasks.&lt;/p&gt;

&lt;p&gt;Late in the day I frequently become tired of working on tasks and stop updating the timechart entirely. This is okay. It is neither possible nor desirable to be productive all the time. We all need unstructured breaks.&lt;/p&gt;

&lt;h2&gt;What do I do with a timechart after it is filled out?&lt;/h2&gt;

&lt;p&gt;I usually &lt;strong&gt;discard&lt;/strong&gt; timecharts from previous days.&lt;/p&gt;

&lt;p&gt;If you are feeling aggressive about tracking your time usage on a weekly scale, you can compile &lt;strong&gt;weekly activity summaries&lt;/strong&gt; based on timechart data that summarizes what you have been spending your time on. Such weekly activity summaries can provide visceral graphical evidence that either you have or have NOT been working toward your weekly and monthly goals, assuming you have been tracking such goals. These days I usually feel that the effort for regularly compiling weekly summaries outweighs the benefits provided by them so I do not compile them anymore.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2016/08/21/how-to-upload-from-os-x-photos-to-facebook</id>
   <title>How to upload from OS X Photos to Facebook (2016)</title>
   <published>2016-08-21T00:00:00+00:00</published>
   <updated>2016-08-21T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2016/08/21/how-to-upload-from-os-x-photos-to-facebook/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;The OS X Photos program has a built-in Share button that can post selected photos directly to Facebook. However it has the following limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Photos are not uploaded in high quality.&lt;/li&gt;
&lt;li&gt;Photos are not uploaded in the correct order. Neither the order of selection nor the order the photos were taken is used exactly.&lt;/li&gt;
&lt;li&gt;Photos cannot be uploaded to a new album, only an existing one.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Therefore I recommend the following procedure to upload photos from OS X Photos to Facebook:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;In OS X Photos, &lt;strong&gt;select all photos&lt;/strong&gt; that you want to upload by holding Command and clicking each photo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the menubar, choose: &lt;strong&gt;File &gt; Export &gt; Export N photos&amp;hellip;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Facebook web interface, choose &lt;strong&gt;&amp;ldquo;Create Album&amp;rdquo;&lt;/strong&gt;, selecting all the photo files that you exported in the previous step.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ensure the &lt;strong&gt;&amp;ldquo;High Quality&amp;rdquo; checkbox&lt;/strong&gt; is checked.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Done.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2015/03/23/block-distracting-websites</id>
   <title>Block Distracting Websites</title>
   <published>2015-03-23T00:00:00+00:00</published>
   <updated>2021-01-25T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2015/03/23/block-distracting-websites/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;div class=&quot;img-box-right&quot;&gt;
    &lt;a href=&quot;/assets/2015/distracting-websites.png&quot;&gt;
        &lt;img class=&quot;img-225&quot; alt=&quot;Comic: Person on left: 'I just watched you open Google News and then close it without reading it &lt;em&gt;five times in a row&lt;/em&gt;.' Person on right: 'The fact that I spend most of my time so stupidly only makes it &lt;em&gt;more&lt;/em&gt; important not to waste any here.'&quot; src=&quot;/assets/2015/distracting-websites.png&quot; /&gt;
    &lt;/a&gt;
    &lt;div&gt;&lt;i&gt;Courtesy of &lt;a href=&quot;http://xkcd.com/1502/&quot;&gt;xkcd&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you spend a lot of time on the computer like I do, there&amp;rsquo;s a good chance that there are some websites that you spend too much time on. Recently I&amp;rsquo;ve taken measures to outright block various distracting websites on my home computer.&lt;/p&gt;

&lt;p&gt;On OS X and Linux you can block websites by adding entries like the following to the &lt;code&gt;/etc/hosts&lt;/code&gt; file. (On Windows, the hosts file lives at &lt;code&gt;C:\Windows\system32\Drivers\etc&lt;/code&gt;.)&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Block distracting websites
127.0.0.1 news.ycombinator.com
127.0.0.1 arstechnica.com
127.0.0.1 slashdot.org
#127.0.0.1 facebook.com
#127.0.0.1 www.facebook.com
#127.0.0.1 reddit.com
#127.0.0.1 www.reddit.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On OS X, you would also need to running the following terminal command to refresh the hosts file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dscacheutil -flushcache
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After doing both of these, attempting to visit one of the websites listed in &lt;code&gt;/etc/hosts&lt;/code&gt; will display an error page.&lt;/p&gt;

&lt;p&gt;Of course if you need to temporarily visit one of the blocked sites you can just go back to the hosts file and add a &lt;code&gt;#&lt;/code&gt; before the corresponding entry.&lt;/p&gt;

&lt;h2&gt;2021 Update&lt;/h2&gt;

&lt;p&gt;I still use the above &lt;code&gt;/etcs/hosts&lt;/code&gt; technique (from 2013) to block
distracting websites on my Mac laptop.&lt;/p&gt;

&lt;p&gt;On the iPhone I use the built-in &lt;strong&gt;&lt;a href=&quot;https://support.apple.com/en-us/HT208982&quot;&gt;Screen Time&lt;/a&gt;&lt;/strong&gt; feature to block myself from
distracting websites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Settings app and navigate to [Screen Time &gt; Content &amp;amp; Privacy
Restrictions &gt; Content Restrictions &gt; Web Content].&lt;/li&gt;
&lt;li&gt;Alter the restriction type from the default &amp;ldquo;Unrestricted Access&amp;rdquo; to
&amp;ldquo;Limit Adult Websites&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Then scroll down to the &amp;ldquo;Never Allow&amp;rdquo; section and add any distracting websites
you&amp;rsquo;d like to block by default. For example I have &lt;code&gt;news.ycombinator.com&lt;/code&gt;
there. 🙂&lt;/li&gt;
&lt;li&gt;Then whenever you want to actually access a distracting website intentionally
(as opposed to when you reflexively auto-type such a website), you can just
temporarily go back to [Settings &gt; Screen Time &gt; Content &amp;amp; Privacy
Restrictions] and just flip the &amp;ldquo;Content &amp;amp; Privacy Restrictions&amp;rdquo; switch
off temporarily.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;On macOS 10.15 Catalina and later there is a similar built-in &amp;ldquo;Screen Time&amp;rdquo;
feature that appears to be usable in the same way as the &amp;ldquo;Screen Time&amp;rdquo; feature
on iPhone. However since I&amp;rsquo;ve elected to limit my Macs to upgrade to a max of
macOS 10.14, I still preferentially use the older &lt;code&gt;/etc/hosts&lt;/code&gt; trick described
earlier in this article.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2013/11/25/how-to-move-notes-from-an-iphone-to-an-email-account</id>
   <title>How to move notes from an iPhone to an email account</title>
   <published>2013-11-25T00:00:00+00:00</published>
   <updated>2013-11-25T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2013/11/25/how-to-move-notes-from-an-iphone-to-an-email-account/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;If you have notes in the &amp;ldquo;On My Phone&amp;rdquo; or &amp;ldquo;On My Mac&amp;rdquo; accounts but want to move them to an email account instead, this article provides instructions for moving the notes. It&amp;rsquo;s surprisingly tricky.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/notes-accounts-on-iphone.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h2&gt;Easy Way &lt;small&gt;(Straightforward but tedious)&lt;/small&gt;&lt;/h2&gt;

&lt;p&gt;Mail every note to yourself and copy the contents into the Notes program (if using OS X 10.8 - 10.9) or into Mail (if using OS X 10.7 or earlier).&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Caution:&lt;/strong&gt; This method loses the dates of the original notes which will mess up their ordering.&lt;/span&gt;&lt;/p&gt;

&lt;h2&gt;Hard Way &lt;small&gt;(Perfect migration but lots of steps)&lt;/small&gt;&lt;/h2&gt;

&lt;p&gt;First you will need &lt;strong&gt;OS X 10.7 (Lion)&lt;/strong&gt;, either already running on a computer you own or installed on a virtual machine, such as created by &lt;a href=&quot;http://www.parallels.com/products/desktop/&quot;&gt;Parallels&lt;/a&gt; or &lt;a href=&quot;http://www.vmware.com/products/fusion/&quot;&gt;VMware&lt;/a&gt;. OS X 10.8 (Mountain Lion) and OS X 10.9 (Mavericks) &lt;a href=&quot;https://support.apple.com/kb/HT4191&quot;&gt;removed the notes syncing feature&lt;/a&gt; that these instructions depend on.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Sync the iPhone with iTunes. Be sure that in the &lt;strong&gt;Info&lt;/strong&gt; tab of iTunes that the &lt;strong&gt;Sync notes&lt;/strong&gt; option is checked. If the option isn&amp;rsquo;t there then you might be running OS X 10.8+ where this option was removed.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/notes-sync-in-itunes.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open Mail and configure it with the email account that you want the notes to be synced with. Make sure that in the Mail preferences that the &lt;strong&gt;Show notes in Inbox&lt;/strong&gt; option is checked.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/notes-show-in-mail.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You should see a &lt;strong&gt;Notes&lt;/strong&gt; folder in the left sidebar of the main mail window. It should also have a triangle that expands to show &amp;ldquo;On My Mac&amp;rdquo; and your email account. If there is no triangle then you may need to quit and relaunch Mail for it to pick up the synced notes from iTunes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/notes-in-mail-sidebar.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Move all the notes inside the &amp;ldquo;On My Mac&amp;rdquo; to your email account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify that your iPhone sees the notes added to your email account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tell iTunes to sync with the phone again so that the notes moved from &amp;ldquo;On My Mac&amp;rdquo; no longer appear on the iPhone under the &amp;ldquo;On My Mac&amp;rdquo; account.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/notes-sync-in-itunes.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This last step didn&amp;rsquo;t work as expected for me, as no notes disappeared from the &amp;ldquo;On My Mac&amp;rdquo; account on my iPhone. I tried using iTunes&amp;rsquo;s special option to forcefully replace all notes on the iPhone with the Mac&amp;rsquo;s notes on the next sync. That didn&amp;rsquo;t work either.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/notes-force-sync.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In the end to remove the old notes from the &amp;ldquo;On My Mac&amp;rdquo; account on the iPhone, I manually deleted each note on the iPhone itself. Not ideal but it didn&amp;rsquo;t take too long.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2013/10/27/scrivener-an-ide-for-thinkers-creators-and-writers</id>
   <title>Scrivener: An IDE for thinkers, creators, and writers</title>
   <published>2013-10-27T00:00:00+00:00</published>
   <updated>2013-10-27T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2013/10/27/scrivener-an-ide-for-thinkers-creators-and-writers/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;Today I invested a few hours into learning &lt;a href=&quot;http://www.literatureandlatte.com/&quot;&gt;Scrivener&lt;/a&gt;, a tool created for the purpose of writing long-form texts such as books, screenplays, etc. However it wasn&amp;rsquo;t the word processing capabilities of Scrivener that caught my eye but rather its system for &lt;strong&gt;organizing&lt;/strong&gt; the fragments, research materials, and other documents that support the act of creating something new.&lt;/p&gt;

&lt;p&gt;I have been looking for a way to organize the disparate source material I&amp;rsquo;ve been collecting on a few large project areas. For example I&amp;rsquo;ve been investigating ways for make more interactive software development tools since being inspired by &lt;a href=&quot;http://worrydream.com/&quot;&gt;Bret Victor&lt;/a&gt;&amp;rsquo;s work.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve already been using &lt;a href=&quot;https://evernote.com/&quot;&gt;Evernote&lt;/a&gt; as a way to &lt;strong&gt;capture&lt;/strong&gt; sources of inspiration such as webpages, tech talk summaries, and research paper PDFs. However Evernote has a pretty terrible organizational model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have exactly one level of hierarchical nesting available in the form of &amp;ldquo;notebooks&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Within a notebook you have no ability to rearrange individual &amp;ldquo;notes&amp;rdquo; in a custom order.&lt;/li&gt;
&lt;li&gt;Notebooks themselves cannot be rearranged.&lt;/li&gt;
&lt;li&gt;The little tiles that preview individual notes cannot be customized in any way.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Scrivener on the other hand is extremely flexible with how it allows you to organize the documents that comprise a project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documents can be rich-text, images, audio, or video. Rich-text documents can be edited natively.&lt;/li&gt;
&lt;li&gt;Documents can be given arbitrary names and reordered at will.&lt;/li&gt;
&lt;li&gt;Documents can be arbitrarily nested inside folders. And indeed inside other documents as well.&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Folders can be viewed in &lt;strong&gt;corkboard mode&lt;/strong&gt; where items inside the folder are represented as index cards summarizing each item laid out on a virtual corkboard. This is great for getting an overview of a folder&amp;rsquo;s contents.

&lt;ul&gt;
&lt;li&gt;The text on an item&amp;rsquo;s index card can be customized.&lt;/li&gt;
&lt;li&gt;The corkboard can be put into a freeform mode where items can be rearranged at will in space. This is great for spatial organization.&lt;/li&gt;
&lt;li&gt;If a corkboard item itself contains multiple items, it appears as a &lt;em&gt;stack&lt;/em&gt; of index cards instead of just an individual index card. This is great for determining at a glance how &amp;ldquo;big&amp;rdquo; something actually is.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Items can be given a &lt;strong&gt;label&lt;/strong&gt; (with a color and name) and a &lt;strong&gt;status&lt;/strong&gt;, both of which are displayed visually on its summarizing index card. Custom metadata can be given as well. All of this metadata can be used for targeted searches.&lt;/li&gt;
&lt;li&gt;There are several ways to &lt;strong&gt;view and edit multiple documents at once&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Selecting a folder displays all of its contained items as a single continuous editable document.&lt;/li&gt;
&lt;li&gt;Selecting multiple individual documents will also present a single continuous document.&lt;/li&gt;
&lt;li&gt;The main editor view can be split horizontally or vertically to allow working on two documents side-by-side, or the same document at two locations.&lt;/li&gt;
&lt;li&gt;Documents can be opened in separate QuickReference windows to arrange them off to the side.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Documents can be located using a targeted search.&lt;/li&gt;
&lt;li&gt;Folder (and file) icons can be customized. This great for indicating at a glance how &amp;ldquo;big&amp;rdquo; a folder is or what kind of thing it represents. A good set of built-in icons are provided, and you can add your own.&lt;/li&gt;
&lt;li&gt;Custom &lt;strong&gt;collections&lt;/strong&gt; of documents can be created that allow you to quickly browse between a subset of the documents in the project. These collections can be created manually, or automatically by a populating search.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Other nice features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All changes to documents are saved automatically.&lt;/li&gt;
&lt;li&gt;Version control is built in, allowing you to take snapshots of a document at different times.

&lt;ul&gt;
&lt;li&gt;Previous versions can be restored if you made an undesirable change to the current version.&lt;/li&gt;
&lt;li&gt;Multiple versions can be compared using diffs that are aware of not just lines but also paragraphs, clauses, and individual words.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Right now my plan is to continue capturing source materal using Evernote, since it excels at capture. But then I&amp;rsquo;ll move the captured items over to Scrivener in order to actually organize them into something coherent I can chew on.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr/&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;There isn&amp;rsquo;t a strong distinction between folders and documents. Folders can themselves have textual content, although this isn&amp;rsquo;t common. Marking an item as a &amp;ldquo;folder&amp;rdquo; is mainly a hint to Scrivener that the item&amp;rsquo;s primary function is to group items together.&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2013/09/04/regular-expressions</id>
   <title>Regular Expressions</title>
   <published>2013-09-04T00:00:00+00:00</published>
   <updated>2013-09-04T00:00:00+00:00</updated>
   
     <category term="Software"/>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2013/09/04/regular-expressions/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;Regular expressions are a concise way to search and transform strings using patterns. They are available in numerous text editors and programming languages.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/articles/2013/09/04/regular-expressions/&quot;&gt;Read more&amp;hellip;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2013/07/27/sending-email-from-command-line-scripts</id>
   <title>Sending email from command line scripts</title>
   <published>2013-07-27T00:00:00+00:00</published>
   <updated>2013-07-27T00:00:00+00:00</updated>
   
     <category term="Software"/>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2013/07/27/sending-email-from-command-line-scripts/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;This weekend I open-sourced a script called &lt;a href=&quot;https://github.com/davidfstr/notifymail&quot;&gt;notifymail&lt;/a&gt; which I have been using for the past few years to send myself emails from automated scripts, particularly Python scripts.&lt;/p&gt;

&lt;p&gt;It is very easy to configure &lt;code&gt;notifymail&lt;/code&gt; for the first time:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pip install notifymail
$ notifymail.py --setup
SMTP Server Hostname: smtp.gmail.com
SMTP Server Port [465]: 587
SMTP Server Uses TLS (y/n) [n]: yes
SMTP Username: robot@gmail.com
SMTP Password: ********
From Address [robot@gmail.com]: robot@gmail.com
From Name (optional) []: notifymail
To Address: admin@example.com

Verifying connection to SMTP server... OK
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Check your mail provider&amp;rsquo;s documentation to get the SMTP settings mentioned above. For example I made an internet search for &amp;ldquo;gmail SMTP settings&amp;rdquo; to find &lt;a href=&quot;https://support.google.com/mail/troubleshooter/1668960?hl=en#ts=1665119,1665162&quot;&gt;Gmail&amp;rsquo;s SMTP settings&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gmail SMTP Server:&lt;/strong&gt; smtp.gmail.com&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gmail SMTP Port:&lt;/strong&gt; 587 (for TLS)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gmail SMTP Uses TLS?&lt;/strong&gt; yes&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Once you have &lt;code&gt;notifymail&lt;/code&gt; installed, you can send an email to yourself in a Python script with as little code as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import notifymail
notifymail.send('Subject', 'Hello World', from_name='greeting_script')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or you can invoke &lt;code&gt;notifymail&lt;/code&gt; from the command line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ echo &quot;Hello World&quot; | notifymail.py -s &quot;Subject&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Full documentation is available on the &lt;a href=&quot;https://github.com/davidfstr/notifymail#readme&quot;&gt;notifymail project page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Hasn&amp;rsquo;t this been done before?&lt;/h2&gt;

&lt;p&gt;I reinvented my own wheel to send email principally because of the poor documentation of other alternatives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;mail&lt;/code&gt; and &lt;code&gt;postfix&lt;/code&gt; were so complicated I couldn&amp;rsquo;t figure out how to set them up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ssmtp&lt;/code&gt; didn&amp;rsquo;t work after I tried to configure it and there was no good documentation to help me debug why it wasn&amp;rsquo;t working.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For reference, here&amp;rsquo;s &lt;a href=&quot;http://unix.stackexchange.com/questions/36982/can-i-set-up-system-mail-to-use-an-external-smtp-server&quot;&gt;some information for setting up those alternatives&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Fun things to do with &lt;code&gt;notifymail&lt;/code&gt;&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I have a script called &lt;code&gt;heartbeat&lt;/code&gt; that periodically attempts to connect to all of my servers via SSH. If it cannot connect to a server it sends me an email with &lt;code&gt;notifymail&lt;/code&gt;. If it cannot access email it displays a sticky Growl notification locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I have another script called &lt;code&gt;meetupfilter&lt;/code&gt; that tracks incoming &amp;ldquo;New Meetup Group&amp;rdquo; emails from &lt;a href=&quot;http://www.meetup.com/&quot;&gt;Meetup&lt;/a&gt;. It waits until all such announced groups have at least 3 events on their calendar before sending me a notification at my personal email with &lt;code&gt;notifymail&lt;/code&gt;. That way I don&amp;rsquo;t hear about Meetup groups that appear but then fizzle out immediately, which is a surprising number. I may open-source this script eventually if I &lt;a href=&quot;/contact&quot;&gt;hear there is interest&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2013/03/22/migrating-from-bbedit-to-sublime-text</id>
   <title>Migrating from BBEdit to Sublime Text</title>
   <published>2013-03-22T00:00:00+00:00</published>
   <updated>2013-05-07T00:00:00+00:00</updated>
   
     <category term="Software"/>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2013/03/22/migrating-from-bbedit-to-sublime-text/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;I&amp;rsquo;ve been using &lt;a href=&quot;http://www.barebones.com/products/bbedit/index.html&quot;&gt;BBEdit&lt;/a&gt; as my primary text editor on the Mac for over 10 years. It is an extremely capable and mature editor with just about all the bells and whistles you can imagine. However the use of Sublime Text has been spreading throughout my workplace at Splunk&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; so I decided I&amp;rsquo;d give it a try.&lt;/p&gt;

&lt;p&gt;My initial impression was &amp;ldquo;BBEdit can do everything that Sublime can, what&amp;rsquo;s the deal?&amp;rdquo; But after using Sublime full-time for about a week, I&amp;rsquo;m starting to come around to it.&lt;/p&gt;

&lt;p&gt;Although it is true that both have comparable feature sets, Sublime&amp;rsquo;s implementation feels more polished - not just eyecandy, but actually better usability.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incremental find

&lt;ul&gt;
&lt;li&gt;As you start typing the substring you want to find, it automatically starts searching within the current document. Frequently you don&amp;rsquo;t have to finish typing the substring in order to get the result you want.&lt;/li&gt;
&lt;li&gt;This saves a surprising amount of time compared to BBEdit where you have to finish providing a full substring (that you think is long enough) before kicking off the search.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit:&lt;/strong&gt; &lt;em&gt;This is actually available in BBEdit under the &amp;ldquo;Live Search&amp;rdquo; command, but this is not part of the default Find experience and not advertised.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;View a file without &amp;ldquo;opening&amp;rdquo; it (as a persistent tab)

&lt;ul&gt;
&lt;li&gt;Sublime keeps files of current interest available as tabs in the main window. If you just click on a file, it is shown in the editor but no tab is created by default. If you decide this is an important file, you can double-click on the file name to create an actual tab for it, which makes the file easy to return to.

&lt;ul&gt;
&lt;li&gt;Most &amp;ldquo;Goto X&amp;rdquo; actions in Sublime both show a file and create an actual tab for it, which usually is what you want.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If you click on any file at all in BBEdit, it is &amp;ldquo;opened&amp;rdquo; and added to the &amp;ldquo;Currently Open Documents&amp;rdquo; section, which is analogous to Sublime&amp;rsquo;s set of open tabs. This can result in the &amp;ldquo;Currently Open Documents&amp;rdquo; section getting rather cluttered when rummaging around for a particular document, making it less useful.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Minidocument view on the right side of an open file.

&lt;ul&gt;
&lt;li&gt;This makes it easier to get a bird&amp;rsquo;s eye view of where you are in a long function or file.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Additionally, Sublime&amp;rsquo;s marketing has some a much better job of exposing advanced features that turn out to be useful in daily use.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Goto Anything&amp;rdquo;

&lt;ul&gt;
&lt;li&gt;BBEdit has similar &amp;ldquo;Open File by Name&amp;rdquo;, but it&amp;rsquo;s slower, doesn&amp;rsquo;t have as expressive syntax, and isn&amp;rsquo;t incremental.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Open Folder&amp;rdquo;

&lt;ul&gt;
&lt;li&gt;This is equivalent to a BBEdit project.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Plugins!

&lt;ul&gt;
&lt;li&gt;This is barely advertised on the BBEdit side but hugely promoted on the Sublime side. Thus lots of people are writing (publicly available) plugins for Sublime but not so many for BBEdit.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Some features in Sublime are named more obviously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Convert Indentation to Spaces. Convert Indentation to Tabs.

&lt;ul&gt;
&lt;li&gt;BBEdit calls these operations &amp;ldquo;Detab&amp;rdquo; and &amp;ldquo;Entab&amp;rdquo; respectively.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Some features in Sublime are easier to access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the displayed tab width.

&lt;ul&gt;
&lt;li&gt;To change this for a single file in BBEdit, you have to go to &amp;ldquo;Show Fonts&amp;rdquo;, which I find completely nonintuitive.&lt;/li&gt;
&lt;li&gt;BBEdit also allows you to change the default tab spacing &lt;em&gt;per source language&lt;/em&gt; in its preferences, which makes sense given that different languages have different conventions.&lt;/li&gt;
&lt;li&gt;However BBEdit does not permit you to change the tab width on a per project/folder basis, which is usually what you want when working on someone else&amp;rsquo;s open source project.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Access the function list. (&amp;ldquo;Goto Symbol&amp;hellip;&amp;rdquo;)

&lt;ul&gt;
&lt;li&gt;This can be done in Sublime entirely through the keyboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Sublime also has a few features lacking in BBEdit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-platform support

&lt;ul&gt;
&lt;li&gt;This is huge when working in a mixed OS environment. You can use the same editor everywhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;BBEdit still is better in a few areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-file search and replace can be done without confirming (or saving) each modified file.&lt;/li&gt;
&lt;li&gt;Robust on slow filesystems, particularly network filesystems.

&lt;ul&gt;
&lt;li&gt;Sublime (2.0.1) acts very poorly: times out on directory listings, silently fails searches in &amp;ldquo;Goto Anything&amp;rdquo;, and probably has other issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Can edit preferences in a GUI without mucking about in text files.&lt;/li&gt;
&lt;li&gt;Can quickly split a single file vertically to edit distant sections simultaneously.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Zap Gremlins&amp;hellip;&amp;rdquo;

&lt;ul&gt;
&lt;li&gt;Deletes or replaces ASCII control characters and other nasties. Very useful for text pasted from web browsers, Word, or other less-than-pure sources of text.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Process Duplicate Lines&amp;hellip;&amp;rdquo;

&lt;ul&gt;
&lt;li&gt;Eliminate duplicate lines in a file. This is often useful after performing a series of text transformations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Process Lines Containing&amp;hellip;&amp;rdquo;

&lt;ul&gt;
&lt;li&gt;Delete (or preserve) all lines containing a subexpression. Exactly like the &lt;code&gt;grep&lt;/code&gt; command-line tool.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Can edit files on an FTP/SFTP server directly.&lt;/li&gt;
&lt;li&gt;Customer support I&amp;rsquo;ve heard is top-notch.&lt;/li&gt;
&lt;li&gt;It can print.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I think I&amp;rsquo;m going to continue using Sublime Text. Featurewise it&amp;rsquo;s about the same as BBEdit, but the cross-platform support&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, active plugin community, and general polish &lt;!-- &amp; attention to usability --&gt; are winning me over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;May 2013 Update:&lt;/strong&gt; I have now switched to Sublime for my daily programming tasks. Its superior &amp;ldquo;Goto Anything&amp;rdquo; functionality is a killer feature for navigating around large projects. And its cross-platform nature is killer when operating in a mixed OS environment. Occasionally I still need to pull out BBEdit to do a large multi-file search &amp;amp; replace, but otherwise I don&amp;rsquo;t use it that frequently.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr/&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;Splunk makes tools for analyzing large time-series datasets, such as log files. For details see the 3 minute &lt;a href=&quot;http://www.splunk.com/view/SP-CAAAHG6&quot;&gt;Splunk Product Overview&lt;/a&gt;. I work on the Developer Platform, making it easy for other developers to build neat things on top of the Splunk core.&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&quot;fn:2&quot;&gt;
&lt;p&gt;It is extremely useful to be able to use the same full-featured text editor on any platform I use. I currently maintain a few open source projects that require testing, debugging, and development on multiple platforms (notably the &lt;a href=&quot;/projects/rdiscount/&quot;&gt;RDiscount&lt;/a&gt; Markdown processor) and it&amp;rsquo;s nice being able to use the same editor everywhere.&lt;a href=&quot;#fnref:2&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2012/12/16/why-i-no-longer-use-drupal</id>
   <title>Why I no longer use Drupal</title>
   <published>2012-12-16T00:00:00+00:00</published>
   <updated>2012-12-16T00:00:00+00:00</updated>
   
     <category term="Software"/>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2012/12/16/why-i-no-longer-use-drupal/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;&lt;em&gt;&lt;b&gt;TLDR:&lt;/b&gt; Drupal is overly complex for a personal blog. It is hard to maintain. Simple static site generators are easier to work with in the long term.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My portfolio website was written during college using hand-coded HTML and used server-side includes to bring in common navigation.&lt;/p&gt;

&lt;p&gt;Then in January 2010 I remade my site in Drupal. It gained lots of fancy features such as first-class support for project categories and project languages. You could subscribe to almost any page as a feed. There were project specific updates that could be commented on. From a feature point of view, it rocked.&lt;/p&gt;

&lt;p&gt;But some problems became apparent over time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security updates were frequent and difficult to apply correctly.&lt;/li&gt;
&lt;li&gt;I didn&amp;rsquo;t like writing articles on the site because I couldn&amp;rsquo;t use simple markup formats such as Markdown.

&lt;ul&gt;
&lt;li&gt;Drupal has no good editor plugins for markup languages.&lt;/li&gt;
&lt;li&gt;And its visual HTML editor generates messy HTML.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The theme I used for the site was complex and hard to modify.

&lt;ul&gt;
&lt;li&gt;And the CSS often interfered with my article markup, necessitating me to drop into HTML when editing certain articles.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;There was no sane way to test structural changes to the site locally and then automatically deploy them to production.

&lt;ul&gt;
&lt;li&gt;Normally this would be done by keeping the site structure in the filesystem and all user content in a database. This allows the filesystem contents to be easily deployed using &lt;code&gt;git push&lt;/code&gt;, &lt;code&gt;rsync&lt;/code&gt;, or similar techniques.&lt;/li&gt;
&lt;li&gt;Drupal, by contrast, keeps its site structure in both the filesystem &lt;em&gt;and&lt;/em&gt; in the database, along with user-generated content. Updating only the parts of the database related to site structure is cumbersome and error-prone.&lt;/li&gt;
&lt;li&gt;Thus, I couldn&amp;rsquo;t really change the site structure after my initial deployment to production.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nothing was in revision control, which made me nervous.&lt;/li&gt;
&lt;li&gt;I had to hack the Drupal core to get my contact form to work with my web hosting provider.&lt;/li&gt;
&lt;li&gt;Most of the features of the site weren&amp;rsquo;t being used by readers.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;So now I am rewriting my site yet again in straight HTML (via a simple static site generator) and outsourcing all user generated content (like comments) to third party service providers.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple simple simple.&lt;/li&gt;
&lt;li&gt;Automatic security. The web server just serves static files.&lt;/li&gt;
&lt;li&gt;Automatic scalability, for the same reason.&lt;/li&gt;
&lt;li&gt;Simple authoring in Markdown with powerful client-side text editors.&lt;/li&gt;
&lt;li&gt;Instant deployment with &lt;code&gt;git push&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Everything in revision control.&lt;/li&gt;
&lt;li&gt;I can use any web hosting provider. Hell, I can just use &lt;a href=&quot;http://pages.github.com&quot;&gt;GitHub Pages&lt;/a&gt; for free.&lt;/li&gt;
&lt;li&gt;Ultimate control over the site theme and CSS. I can fix problems myself.&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 
 <entry>
   <id>https://dafoster.net/articles/2010/09/17/comparing-writing-utensils</id>
   <title>Comparing Writing Utensils</title>
   <published>2010-09-17T00:00:00+00:00</published>
   <updated>2010-09-17T00:00:00+00:00</updated>
   
     <category term="Productivity"/>
   
   <link rel="alternate" href="https://dafoster.net/articles/2010/09/17/comparing-writing-utensils/?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=feed"/>
   <content type="html">&lt;p&gt;My experience using various kinds of writing utensils in school&amp;hellip;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;gt; = &amp;ldquo;is better than&amp;rdquo;&lt;/i&gt;&lt;/p&gt;

&lt;h3&gt;Why Pens &gt; Pencils&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Don&amp;rsquo;t smudge ∴ Archive well&lt;/li&gt;
&lt;li&gt;Force you to think about what you are writing

&lt;ul&gt;
&lt;li&gt;Mistakes are more costly, since you cannot simply use an eraser on pen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Have brighter contrast ∴ Easier to read&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Why Mechanical Pencils &gt; Traditional Pencils&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Don&amp;rsquo;t need to be sharpened ∴

&lt;ul&gt;
&lt;li&gt;No sawdust to clean up&lt;/li&gt;
&lt;li&gt;No special sharpener hardware needed&lt;/li&gt;
&lt;li&gt;Lifetime is not limited to a certain number of sharpenings

&lt;ul&gt;
&lt;li&gt;Lifetime only limited to when the m-pencil is lost&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Seem to resist smearing in the short term

&lt;ul&gt;
&lt;li&gt;(but pens still win in the long term)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Why Writing Utensils &gt; Computer Keyboards [for creative projects]&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Force you to think about what you are writing

&lt;ul&gt;
&lt;li&gt;It takes a long time (comparatively) to write individual words,
which gives you time to think about what you are writing&lt;/li&gt;
&lt;li&gt;Mistakes are more costly, since you cannot just delete words&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Force you to think about the structure of what you are writing

&lt;ul&gt;
&lt;li&gt;Mistakes are more costly, since you cannot just cut and paste sections
which are poorly laid out in the first place&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;No mental overhead

&lt;ul&gt;
&lt;li&gt;Using computers always incurs at least a small bit of mental overhead
that interferes with the creative process&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Automatic revision control (in the case of pen)

&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s easier to strike through (rather than erase) rejected ideas with
pen, so these ideas are preserved for future analysis, which sometimes
comes in handy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Why Computer Keyboards &gt; Writing Utensils [for non-creative projects]&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Typing speed is much higher

&lt;ul&gt;
&lt;li&gt;Gets even better if you use typing expansion software&lt;/li&gt;
&lt;li&gt;Gets even better if you use dictation software [for prose]&lt;/li&gt;
&lt;li&gt;Gets even better if you use a stenotype machine&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hyperlinks are easy to create and maintain

&lt;ul&gt;
&lt;li&gt;This is especially powerful when writing reference documents&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 
</feed>