<rss version="2.0">
  <channel>
    <title>Software Development on Jamie Thingelstad</title>
    <link>https://www.thingelstad.com/categories/software-development/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Thu, 15 Oct 2026 21:21:12 -0500</lastBuildDate>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/10/15/i-added-a-new-upcoming.html</link>
      <pubDate>Thu, 15 Oct 2026 21:21:12 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/10/15/i-added-a-new-upcoming.html</guid>
      <description>&lt;p&gt;I added a new Upcoming feature to &lt;a href=&#34;https://notes.yourversionnumber.com&#34;&gt;Release Notes&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Release Notes now has a new section for what&amp;rsquo;s coming next. In Upcoming you can save birthdays, anniversaries, trips, and one-time events. You can choose when you would like these events to show up in your Release Notes. Trips include a destination with a start and end date. All of these upcoming events are private to only you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’m having a lot of fun journaling each days version.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/10/10/a-world-that-doesnt-need.html</link>
      <pubDate>Sat, 10 Oct 2026 08:01:44 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/10/10/a-world-that-doesnt-need.html</guid>
      <description>&lt;p&gt;A world that doesn’t need new software is a world without ideas.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/10/08/in-i-wrote-about-your.html</link>
      <pubDate>Thu, 08 Oct 2026 19:55:35 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/10/08/in-i-wrote-about-your.html</guid>
      <description>&lt;p&gt;In 2018 I wrote about &lt;a href=&#34;https://www.thingelstad.com/2018/02/24/your-version-number.html&#34;&gt;Your Version Number&lt;/a&gt;. A few months ago I made &lt;a href=&#34;https://yourversionnumber.com&#34;&gt;a website for it&lt;/a&gt; (including a &lt;a href=&#34;https://yourversionnumber.com/work/&#34;&gt;work edition&lt;/a&gt;). Then I thought &amp;ldquo;I wish I got my version number in email&amp;rdquo; and what if you could add notes for each version!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://notes.yourversionnumber.com&#34;&gt;Release Notes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is brand new today. Let me know what you think!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>mb 2.0 with MCP support</title>
      <link>https://www.thingelstad.com/2026/10/05/mb-with-mcp-support.html</link>
      <pubDate>Mon, 05 Oct 2026 21:30:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/10/05/mb-with-mcp-support.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.thingelstad.com/2026/03/03/i-have-ottoi-exercising-the.html&#34;&gt;In March&lt;/a&gt; I created &lt;a href=&#34;https://github.com/jthingelstad/mb&#34;&gt;mb&lt;/a&gt;, a command-line micro.blog client that is specifically created for agents to use. This is what Otto uses to &lt;a href=&#34;https://ottoai.thingelstad.com&#34;&gt;publish on its blog&lt;/a&gt;. It can also read the micro.blog timeline, follow people on micro.blog, and a variety of other features.&lt;/p&gt;
&lt;p&gt;Since I&amp;rsquo;ve been playing with MCP a lot I wanted to explore adding MCP support to mb which is now landed in mb 2.0! In addition to MCP support I also created a &lt;a href=&#34;https://brew.sh&#34;&gt;Homebrew&lt;/a&gt; &amp;ldquo;tap&amp;rdquo; for it to make it super easy to install, added support for an &lt;code&gt;mb --doctor&lt;/code&gt; command to help with setup, and a bunch more.&lt;/p&gt;
&lt;p&gt;To try it the easiest thing is to use &lt;a href=&#34;https://brew.sh/&#34;&gt;Homebrew&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;brew install jthingelstad/tap/mb&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then sign in:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mb auth&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mb auth&lt;/code&gt; walks you through signing in. It sends you to micro.blog&amp;rsquo;s app token page (Account, then Edit Apps) and helps you set the token. It checks the token with micro.blog, and if your account has more than one blog it asks which one to use. Run &lt;code&gt;mb doctor&lt;/code&gt; afterward to confirm everything is set up correctly.&lt;/p&gt;
&lt;p&gt;From there:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mb heartbeat  # what changed since last time
mb inbox. # mentions that might deserve a reply
mb timeline --count 10
mb post new --draft &amp;#34;Hello from mb&amp;#34;  # saved as a draft, not published
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The default output is compact plain text tuned for agents. Add &lt;code&gt;--human&lt;/code&gt; for something easier to read, or &lt;code&gt;--format json&lt;/code&gt; for scripts. Use &lt;code&gt;--draft&lt;/code&gt; or &lt;code&gt;--dry-run&lt;/code&gt; to check a post before it goes live. Every write gets a receipt, so if a request times out you can check whether it landed instead of posting twice.&lt;/p&gt;
&lt;p&gt;mb now has an MCP server, so Claude, Codex and other AI tools can work with your micro.blog account directly. To add it to Claude Code in read-only mode:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;claude mcp add mb -- mb mcp --consumer claude-code --read-only&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Remove &lt;code&gt;--read-only&lt;/code&gt; when you&amp;rsquo;re ready to let it post, and keep the approval prompts on.&lt;/p&gt;
&lt;p&gt;Homebrew installs a prebuilt version on Apple Macs running macOS 15 or later, and on Linux. Each release is tested against the real micro.blog API using a dedicated test account. If you&amp;rsquo;d rather skip Homebrew, the &lt;a href=&#34;https://github.com/jthingelstad/mb#install&#34;&gt;README&lt;/a&gt; covers installing with &lt;code&gt;uv&lt;/code&gt;. Feedback and issues are welcome &lt;a href=&#34;https://github.com/jthingelstad/mb/issues&#34;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/10/04/working-with-otto-this-morning.html</link>
      <pubDate>Sun, 04 Oct 2026 07:02:07 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/10/04/working-with-otto-this-morning.html</guid>
      <description>&lt;p&gt;Working with &lt;a href=&#34;https://ottoai.thingelstad.com&#34;&gt;Otto&lt;/a&gt; this morning to create a new version of my &lt;a href=&#34;https://github.com/jthingelstad/mb&#34;&gt;mb&lt;/a&gt; utility that will extend features and &lt;strong&gt;provide an MCP interface&lt;/strong&gt; for agents to interact with micro.blog.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/09/26/i-used-some-of-my.html</link>
      <pubDate>Sat, 26 Sep 2026 14:52:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/09/26/i-used-some-of-my.html</guid>
      <description>&lt;p&gt;I used some of my Claude Cloud credits to put in place a truly secure pipeline for &lt;a href=&#34;https://github.com/jthingelstad/elixir-mcp-collector&#34;&gt;Elixir Collector&lt;/a&gt;. Starting at v3.0.0 all releases are signed using a private key that I manage and the entire pipeline is signed all the way to ingestion. It also got safety improvements in the auto-update process.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/screenshot-2026-09-26-at-2.42.49pm.png&#34; alt=&#34;Dark dashboard listing five collectors run by King Thing, four marked signed and one unverified, beside an ASCII key fingerprint.&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/screenshot-2026-09-26-at-2.44.09pm.png&#34; alt=&#34;Detail page for the Mini P.E.K.K.A collector on jamie-mac, v3.0.4, with binary hash, trusted key, and Drain and Stage buttons.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/09/26/i-guess-im-getting-my.html</link>
      <pubDate>Sat, 26 Sep 2026 08:44:28 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/09/26/i-guess-im-getting-my.html</guid>
      <description>&lt;p&gt;I guess I’m getting my money&amp;rsquo;s worth for my $200 Claude Max account.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I went through the local Claude Code history on this Mac: 120 sessions and 254 subagent runs from Aug 6 to Sep 26, about 52k model calls. At API list prices that comes to about $13.7k. If you&amp;rsquo;re on a subscription, treat the dollar figures as a measure of how fast you use up your limits rather than a bill. Recent weeks run about $2.1–2.5k each.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are obvious efficiency improvements for me to make. 😬&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/09/24/this-most-recent-issue-of.html</link>
      <pubDate>Thu, 24 Sep 2026 20:01:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/09/24/this-most-recent-issue-of.html</guid>
      <description>&lt;p&gt;This most recent issue of &lt;a href=&#34;https://arenamag.com&#34;&gt;Arena&lt;/a&gt; all about &lt;strong&gt;Software&lt;/strong&gt; looks really good. So much to dig into.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/32bfc1a5-bfa6-4fe4-aebd-59dfb62ea46c.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;Open magazine on a desk showing the dark &amp;quot;Hello, World&amp;quot; contents page for Arena Issue 009, Q3 2026.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/09/20/some-screenshots-of-my-wt.html</link>
      <pubDate>Sun, 20 Sep 2026 16:41:57 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/09/20/some-screenshots-of-my-wt.html</guid>
      <description>&lt;p&gt;Some screenshots of my &lt;a href=&#34;https://github.com/jthingelstad/wt-builder&#34;&gt;WT Builder&lt;/a&gt; custom app to create issues of the Weekly Thing. This was fun to work on and will give me a great base to build off of as the &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly Thing&lt;/a&gt; evolves.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/wt-builder-index.png&#34; width=&#34;600&#34; height=&#34;440&#34; alt=&#34;WT Builder issue list in Safari, rows for WT351 through WT345 with site, mail, and pod tags and archive status.&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/wt-builder-350.png&#34; width=&#34;600&#34; height=&#34;440&#34; alt=&#34;WT Builder editor for WT350 with a section outline on the left and the rendered website edition on the right.&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/wt-builder-publish.png&#34; width=&#34;600&#34; height=&#34;440&#34; alt=&#34;Send screen for WT350 with podcast, website, and Buttondown cards, each marked sent and listing completed steps.&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/wt-builder-log.png&#34; width=&#34;600&#34; height=&#34;440&#34; alt=&#34;Dialog titled WT350 — the log, listing timestamped send, edit, and publish entries from Sep 20.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Building and Puzzling about Software</title>
      <link>https://www.thingelstad.com/2026/09/17/building-and-puzzling-about-software.html</link>
      <pubDate>Thu, 17 Sep 2026 20:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/09/17/building-and-puzzling-about-software.html</guid>
      <description>&lt;p&gt;&lt;em&gt;This originally started as a commentary on a link for the &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly Thing&lt;/a&gt; and then got so long it became a blog post of its own. Many themes in this article start from my &lt;a href=&#34;https://www.thingelstad.com/2026/04/20/software-is-liquid.html&#34;&gt;Software is Liquid&lt;/a&gt; article from April.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The craft of building software is in the largest state of disruption I&amp;rsquo;ve experienced in my 30+ year career. AI is changing everything. All the inputs and outputs are in flux. And the fundamental patterns we&amp;rsquo;ve worked on are all being redefined.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t the first time I&amp;rsquo;ve seen major disruption like this. My career starts with the web being born so I have no perspective before that, but I was part of the mobile and cloud transformations, and they profoundly impacted our craft. Releasing software thousands of times a month was an unlock to velocity that only the cloud could make happen.&lt;/p&gt;
&lt;p&gt;Laurie Voss suggests that &lt;a href=&#34;https://seldo.com/posts/we-are-all-product-engineers-now/&#34;&gt;we are all product engineers now&lt;/a&gt;. I think he is on the right path here, and one of his assertions landed hard with me. &lt;strong&gt;The demand for software is infinite.&lt;/strong&gt; You may nitpick with infinite, but roll with it for a bit. As an industry we have gotten faster and faster, but the demand has always grown even faster than that. Now with AI our ability to build software has increased radically. Along with that, not surprising at all to me, the opportunities to build have increased even more.&lt;/p&gt;
&lt;p&gt;With &amp;ldquo;agentification&amp;rdquo; of work, developers have the &lt;em&gt;potential&lt;/em&gt; to work on every function in a company. Every single part of it.&lt;/p&gt;
&lt;p&gt;Said another way, the &lt;a href=&#34;https://a16z.com/why-software-is-eating-the-world/&#34;&gt;software is eating the world&lt;/a&gt; meme introduced by &lt;a href=&#34;https://en.wikipedia.org/wiki/Marc_Andreessen&#34;&gt;Marc Andreessen&lt;/a&gt; is going to be accelerated by AI, with the lower cost and faster speed of software creation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;rsquo;ve made this argument before: look at the website of your dentist, your insurance company, your kid&amp;rsquo;s school, or literally any department of any government, and you&amp;rsquo;re looking at software that is terrible not because nobody knows how to build better software, but because the people who need it can&amp;rsquo;t afford to pay for better at current prices. Then think about all the things software hasn&amp;rsquo;t touched at all, which is most things. Every small business runs on a spreadsheet and a group chat and a person who remembers stuff.&lt;/p&gt;
&lt;p&gt;That means there isn&amp;rsquo;t now and isn&amp;rsquo;t going to be a glut of software developers, and anything that looks like one right now is a temporary transitional state. The demand for software, at least inside my 10 year horizon, is for practical purposes infinite, or software developers wouldn&amp;rsquo;t be as highly paid as they are.&lt;/p&gt;
&lt;p&gt;But the job of a &amp;ldquo;programmer&amp;rdquo; is about to get very, very different. So different that you might not even recognize it as &amp;ldquo;programming&amp;rdquo; anymore, while still being recognizably &amp;ldquo;software development&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;ve been working with Claude Code and Codex for months now building software of all kinds. Building &lt;a href=&#34;https://thingy.thingelstad.com&#34;&gt;my own agent&lt;/a&gt;, building &lt;a href=&#34;https://escape.thingelstad.com&#34;&gt;fun websites for hobbies&lt;/a&gt;, building &lt;a href=&#34;https://elixir.poapkings.com&#34;&gt;data products&lt;/a&gt;, building my own bespoke tools, building &lt;a href=&#34;https://github.com/jthingelstad/mb&#34;&gt;tools for other agents&lt;/a&gt;, even &lt;a href=&#34;https://drop.poapkings.com/#/&#34;&gt;making a game&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Through that I&amp;rsquo;ve been learning what is still hard, what is now easy, what do we need more of, what are the pitfalls, where can you go off the rails? The craft is in flux. I think Voss captures what I&amp;rsquo;ve also come to believe our craft is becoming — &lt;strong&gt;Product Engineering&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I love the history he shared.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Then software went commercial and, especially, consumer-facing, and the translation job changed shape. Consumers don&amp;rsquo;t want to sit in requirements meetings: they just want to be handed a thing they like. So the person whose job was understanding what people wanted stopped being an analyst who interviewed the business and became a product manager who studied the market, a role &lt;a href=&#34;https://cacm.acm.org/practice/evolution-of-the-product-manager/&#34;&gt;borrowed more or less directly&lt;/a&gt; from Procter &amp;amp; Gamble&amp;rsquo;s brand managers by way of Intuit and then Microsoft, where a programmer named Jabe Blumenthal invented &amp;ldquo;program manager&amp;rdquo; in the late 1980s because Excel for the Mac needed somebody to own what it should do.&lt;/p&gt;
&lt;p&gt;The function moved into Product, and Product got separated from engineering as a career, and for the last twenty-five years we&amp;rsquo;ve had two professions where there used to be one and a half. I bring this up because it means the job I&amp;rsquo;m describing isn&amp;rsquo;t a speculative new thing that we&amp;rsquo;d have to invent. It&amp;rsquo;s a thing we&amp;rsquo;ve had for sixty years under two names. My speculation is that it&amp;rsquo;s about to collapse back into one job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In the beginning we built things. And then because of the limitations of the work we split that up into a bunch of different roles. Some people should talk to the users. Some people should create the interfaces. Some people shall write the code and work with the machines. Other people shall run it and deploy it. And yet others should test and validate it. I share those last two because they are roles that collapsed in many ways with the advent of DevOps. Role collapsing isn&amp;rsquo;t new in our craft.&lt;/p&gt;
&lt;p&gt;Honestly it makes me chuckle a bit to sit back and reflect. &lt;strong&gt;My whole career has been undoing this fragmentation that started so long ago.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The web changed dramatically how user experience is created and understood. It needed to live in the product and be dynamic and move. You wanted to get signals from your users beyond formal feedback cycles.&lt;/li&gt;
&lt;li&gt;DevOps and the cloud fundamentally changed the &amp;ldquo;over the wall&amp;rdquo; mentality of building and running software. Everyone runs the software.&lt;/li&gt;
&lt;li&gt;Going back even more we used to have tons of specialization even on the build side. Much of that has collapsed as languages and infrastructure became more resilient, easier-to-use, and self-optimizing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now with coding agents we can create software at a pace that is reasonable for customers to engage with. We again have to collapse the walls. We can all engage in the product experience.&lt;/p&gt;
&lt;h3 id=&#34;so-what-about-programming&#34;&gt;So what about programming?&lt;/h3&gt;
&lt;p&gt;Let&amp;rsquo;s look at this on a long scale. Go back to the 80&amp;rsquo;s or 90&amp;rsquo;s. Programming back then was about writing linked lists and managing memory. You were typically writing in low-level languages like C. Interpreted languages were ridiculously slow and lacked real power so we all lived by the law of the compiler. Memory was precious so you managed it precisely. Mind you, not as precisely as the machine language folks that preceded that era.&lt;/p&gt;
&lt;p&gt;If you got in a time machine and showed those programmers the code folks are writing today they would laugh and say &amp;ldquo;that&amp;rsquo;s not programming!&amp;rdquo; You are just declaring a dictionary and shoving data in it? Where is that memory and how are you managing it? You don&amp;rsquo;t know? They would scoff at your lack of &lt;code&gt;malloc&lt;/code&gt;, &lt;code&gt;realloc&lt;/code&gt;, and &lt;code&gt;free&lt;/code&gt; discipline.&lt;/p&gt;
&lt;p&gt;Now we are back at that same spot but with agents. You don&amp;rsquo;t know how the functions are specifically implemented to make that feature work? You don&amp;rsquo;t know the precise database schema and how the thread pool is managed? Nope, but instead that engineer should and must be able to answer how context is managed, how the architecture is structured, how the event model works, and the most important of all — &lt;strong&gt;what is it we are trying to solve!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Personally I find the paradigm shift refreshing and invigorating. I can build and create things while ignoring a lot of the &amp;ldquo;how&amp;rdquo; that used to be required. For me personally, a lot of that &amp;ldquo;how&amp;rdquo; I couldn&amp;rsquo;t even do, so it wasn&amp;rsquo;t that it slowed me down, it was impossible for me. This is why AI makes your &amp;ldquo;impossible list&amp;rdquo; possible.&lt;/p&gt;
&lt;p&gt;But for the folks doing the coding, I&amp;rsquo;ve seen different approaches based on two things people love to do: building and puzzling. All developers do both, but often identify their impact more strongly with one or the other.&lt;/p&gt;
&lt;p&gt;The builders I know are loving AI and having a blast creating things. Builders have tended to be the folks that love to work on a specific domain and create something new. They love the act of building and creating something from nothing. Some builders (I fall in this camp) love to build so much that they really don&amp;rsquo;t even care that anyone uses it. It is almost like art — you build because it is fundamentally rewarding to create new things. Builders have taken to AI fast because it allows you to build so much more.&lt;/p&gt;
&lt;p&gt;Puzzlers are the developers that we have always given the hardest problems to. Puzzlers can work on a problem for hours, days, weeks and can never put it down. These are the folks that achieve flow states where time stops and the only thing that exists is to find the next step in the puzzle. They feel rewarded because the puzzle was solved. These folks thrive on the hard, the complex, the esoteric. And technology teams need them badly because to get much of anything to scale you need puzzlers. The puzzlers I know are less excited about AI. It takes on work that is closer to what they love and value.&lt;/p&gt;
&lt;p&gt;The funny thing to me is that we&amp;rsquo;ve had builders and puzzlers working hand-in-hand on the same projects for decades and they may not even know themselves the difference. The craft is the same after all. The difference is the reward cycle.&lt;/p&gt;
&lt;p&gt;I do think puzzlers will also find the AI transformation rewarding but it will come in solving massively bigger puzzles, or perhaps solving dozens of puzzles at the same time. Here the cycle is less about the fast build, and more about the expansive data analysis. I was doing work on a large data set and it was so amazing to have Claude build several models, run them all for real, and see the variances. Supercharged puzzling! I think the puzzlers may be the best folks we have to build software factories today.&lt;/p&gt;
&lt;h3 id=&#34;where-does-this-leave-us&#34;&gt;Where does this leave us&lt;/h3&gt;
&lt;p&gt;Voss suggests that we have &amp;ldquo;ten years of turmoil&amp;rdquo; ahead and I think he is likely right but I might put a different flavor on it.&lt;/p&gt;
&lt;p&gt;Some things I think we&amp;rsquo;ll see:&lt;/p&gt;
&lt;p&gt;The entry-level path into software development or product engineering will need to be redefined. The reason senior developers are so highly sought after is that they have the expertise and experience to make this transition now. We will need to redefine how people get started in this career. This has happened many times in the past. Each major technology transformation has disrupted the career ladder and then it re-stabilizes on the other side.  That is cold comfort for someone hit by that transition now, but my main suggestion is to focus heavily on where the trend is going and get there as fast as possible.&lt;/p&gt;
&lt;p&gt;I think a lot of people are going to build really terrible software, and the pain is going to be real. Just because you can use an agent to make software doesn&amp;rsquo;t mean you should. Running software isn&amp;rsquo;t a one-time job. And however you build it most software that starts life as a cute puppy eventually becomes a big smelly dog that you have to pick up after. Folks that are building their own systems with no expertise will not realize when they are already in a bad spot, and then something will fail or a security event will happen and it will hurt badly.&lt;/p&gt;
&lt;p&gt;Lastly I do expect we will see an even greater unification of functions back to &amp;ldquo;creating products&amp;rdquo;. The specialization that pace and complexity introduced has been a complicating and challenging issue for decades. Ask any product team and development team to talk about the other one. They have all sorts of opinions about how the other could do their job better. The reality is they are all doing the same job — attempting to build amazing solutions for people! We&amp;rsquo;ve gotten confused as an industry that these are two things not one. It will be great for everyone to see this fade away.&lt;/p&gt;
&lt;p&gt;All in it is an amazing time to be in this craft, and also one of the hardest times. I&amp;rsquo;ve never felt the need to learn so much, the fire to create so much, and the excitement of what we can make happen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/09/05/ive-had-claude-working-on.html</link>
      <pubDate>Sat, 05 Sep 2026 16:59:20 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/09/05/ive-had-claude-working-on.html</guid>
      <description>&lt;p&gt;I’ve had Claude working on a new project and since I have the tokens I’ve used Fable 5.0 for nearly all of it. It has done an incredibly good job with a very complex system.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/09/03/i-had-an-idea-to.html</link>
      <pubDate>Thu, 03 Sep 2026 20:24:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/09/03/i-had-an-idea-to.html</guid>
      <description>&lt;p&gt;I had an idea to &amp;ldquo;flip&amp;rdquo; &lt;a href=&#34;https://poapkings.com/elixir/&#34;&gt;Elixir&lt;/a&gt;, the &lt;a href=&#34;https://supercell.com/en/games/clashroyale/&#34;&gt;Clash Royale&lt;/a&gt; agent I created, upside-down and open up MCP use — &lt;a href=&#34;https://elixir.poapkings.com&#34;&gt;Elixir MCP&lt;/a&gt;! Every single part of this I&amp;rsquo;ve created in other solutions. Claude (Fable 5.0) and I spec&amp;rsquo;d it out and I put Claude Code in a &lt;code&gt;/loop&lt;/code&gt; and six hours later we had a working system.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/elixir-mcp-1.png&#34; alt=&#34;&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/elixir-mcp-2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Elixir&#39;s Agentic Product Team</title>
      <link>https://www.thingelstad.com/2026/06/22/elixirs-agentic-product-team.html</link>
      <pubDate>Mon, 22 Jun 2026 21:30:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/06/22/elixirs-agentic-product-team.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been exploring and engaging in agentic software deeply for a couple of months now with a number of my own projects to learn with. Thus far, nearly all of what I&amp;rsquo;ve done has been driven by me often with an LLM assisting in the framing of the thing I&amp;rsquo;m looking to build. I decided to try using &amp;ldquo;agents&amp;rdquo; (of a sort) to create an entire execution loop to autonomously drive one of these projects. I decided to focus on &lt;a href=&#34;https://poapkings.com/elixir/&#34;&gt;Elixir&lt;/a&gt;, the agent I&amp;rsquo;ve created to run &lt;a href=&#34;https://poapkings.com&#34;&gt;our Clash Royale clan&lt;/a&gt;, and have now created six discrete automations for it.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/automations.png&#34; width=&#34;600&#34; height=&#34;373&#34; alt=&#34;Claude desktop app Automations panel showing 7 scheduled automations for elixir-bot and rwbookclub.com projects, running daily or weekly&#34;&gt;
&lt;p&gt;Here is a brief overview of what each does, along with a link to the full instructions they use. I created the instructions for each using Claude Cowork and this is the AI-generated summary of each entity.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data Analyst&lt;/strong&gt; — Watches the &lt;a href=&#34;https://developer.clashroyale.com/&#34;&gt;Clash Royale API&lt;/a&gt; data, raw payloads, event streams, detections, and battle telemetry to find new data patterns, game changes, schema drift, unused data, and capability that the Product Manager should consider. &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/blob/main/scripts/product-team/data-analyst.md&#34;&gt;Data Analyst definition&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product Manager&lt;/strong&gt; — Turns evidence into direction: reviews clan needs, leader feedback, quality reports, &lt;a href=&#34;https://discord.com&#34;&gt;Discord&lt;/a&gt; history, &lt;a href=&#34;https://royaleapi.com&#34;&gt;RoyaleAPI&lt;/a&gt; content for editorial context, and data briefs, then files proposed issues for improvements that drive Elixir’s mission and await approval before build work begins. &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/blob/main/scripts/product-team/product-manager.md&#34;&gt;Product Manager definition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build Manager&lt;/strong&gt; — Converts approved, ready issues into small, tested code; owns feature and bug-fix implementation, respects issue scope, runs tests/evals, and hands deploy/restart needs to Operations. &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/blob/main/scripts/product-team/build-manager.md&#34;&gt;Build Manager definition&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quality Manager&lt;/strong&gt; — Judges whether Elixir is actually working: checks recommendation accuracy, silence/noise problems, routing failures, prompt failures, leader/member feedback, and regressions, then files actionable bugs, regressions, quality issues, or eval requests. &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/blob/main/scripts/product-team/quality-manager.md&#34;&gt;Quality Manager definition&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operations Manager&lt;/strong&gt; — Owns production health: monitors runtime status, logs, telemetry, Event Core health, costs, retries, scheduled jobs, and delivery systems; fixes operational/reliability issues and handles deploys or restarts when needed. &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/blob/main/scripts/product-team/operations-manager.md&#34;&gt;Operations Manager definition&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluator&lt;/strong&gt; — Owns measurement: builds and maintains eval harnesses, datasets, scoring rules, benchmarks, and regression tests so the team can tell whether changes improve or degrade Elixir with evidence instead of vibes. &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/blob/main/scripts/product-team/evaluator.md&#34;&gt;Evaluator definition&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The common interface that all of this runs through are &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/issues&#34;&gt;Elixir&amp;rsquo;s Github Issues&lt;/a&gt;. All agents interface there and that is where &amp;ldquo;human in the loop&amp;rdquo; is happening before moving forward with changes. The automations are all setup in &lt;a href=&#34;https://openai.com/codex/&#34;&gt;Codex&lt;/a&gt;, which is super simple and easy to engage with. I&amp;rsquo;m super curious to see where this goes!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/06/21/my-claude-code-codex-day.html</link>
      <pubDate>Sun, 21 Jun 2026 07:56:02 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/06/21/my-claude-code-codex-day.html</guid>
      <description>&lt;p&gt;My Claude Code + Codex 30-day token usage versus my subscription cost looks good. Just about 2B tokens. I suspect this is going to go up even more as I&amp;rsquo;m venturing into autonomous coding agents.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/codex-30day.png&#34; width=&#34;600&#34; height=&#34;146&#34; alt=&#34;Two side-by-side API usage dashboards showing 30-day token usage of 1.1B and 822M with costs of $844.96 and $585.78 respectively.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/06/19/well-see-how-this-goes.html</link>
      <pubDate>Fri, 19 Jun 2026 17:25:09 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/06/19/well-see-how-this-goes.html</guid>
      <description>&lt;p&gt;We’ll see how this goes…&lt;/p&gt;
&lt;p&gt;I asked Codex to watch one of my agents, Elixir, and using suggestions from Elixir and its own observations automatically modify Elixir as needed with a GitHub Issue as a tracker.&lt;/p&gt;
&lt;p&gt;I’ll be curious to see what they do together.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/06/10/im-asking-fable-to-look.html</link>
      <pubDate>Wed, 10 Jun 2026 06:46:19 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/06/10/im-asking-fable-to-look.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m asking Fable 5 to look at some of the projects I&amp;rsquo;ve been working on and so far I&amp;rsquo;m very impressed with the level of analysis and recommendations it can make. Opus (via Claude Code) and GPT 5.5 (via Codex) were not able to see the structural issues in the code that Fable can.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Thingy Evolved</title>
      <link>https://www.thingelstad.com/2026/06/07/thingy-evolved.html</link>
      <pubDate>Sun, 07 Jun 2026 07:36:27 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/06/07/thingy-evolved.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;I rebuilt &lt;a href=&#34;https://thingy.thingelstad.com&#34;&gt;Thingy&lt;/a&gt; into the archive agent I always wanted.&lt;/strong&gt; Thingy started a month ago as an agent that acted as a librarian in front of the Weekly Thing archive. It did a great job at that and even if nobody else used it I found it super helpful to explore the archive. However, I quickly found that I also wanted Thingy to know about the 12,000+ posts on my blog in addition to the Weekly Thing. Oh, and my one episode Another Thing podcast should be available too. I wanted Thingy to know all of the information I have published.&lt;/p&gt;
&lt;p&gt;Core to making this happen was to create semantic archives for not just the Weekly Thing, but also my blog and Another Thing. Once I had that foundation, I gave Thingy super powers!&lt;/p&gt;
&lt;p&gt;The changes…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A New Home&lt;/strong&gt;: Thingy is now its own dedicated website at &lt;a href=&#34;https://thingy.thingelstad.com&#34;&gt;thingy.thingelstad.com&lt;/a&gt;. That gave it room to become a full chat experience, with a cleaner interface, mobile-first interaction, conversation history, and a user experience that feels like Thingy rather than a search box.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search Box to Agent&lt;/strong&gt;: The biggest conceptual shift is that Thingy no longer feels like you are querying a database. It welcomes you, remembers prior conversations, understands which archives are available, and can help connect threads across the &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly Thing&lt;/a&gt;, &lt;a href=&#34;https://www.thingelstad.com&#34;&gt;thingelstad.com&lt;/a&gt;, and &lt;a href=&#34;https://another.thingelstad.com&#34;&gt;Another Thing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three Archives, One Conversation&lt;/strong&gt;: Thingy now works across all three semantic archives: the newsletter, the blog, and the podcast. The source selector lets you focus or broaden the conversation, and the backend has been improved so each archive has similar and robust capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistent Conversations&lt;/strong&gt;: Conversations moved from browser local storage to the server. That means Thingy can remember conversations across devices, show recent chats, reload prior threads, and provide robust evals as well as user-friendly naming.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Curiosity Maps!&lt;/strong&gt;: This is probably the &amp;ldquo;show, don&amp;rsquo;t tell&amp;rdquo; feature. Instead of only answering questions, Thingy can draw a map of adjacent ideas from the archive. You can start with Thingy&amp;rsquo;s suggested map or seed it with your own topic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Richer Responses&lt;/strong&gt;: Responses can now render tables, trails, maps, citations, action buttons, copy/share/play controls, and better markdown. This makes Thingy feel less like a chatbot bolted onto an archive and more like an interface for wandering through ideas. Thingy also shares its thinking process with you as it works!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Voice Input&lt;/strong&gt;: You can talk to Thingy now. It is not a full voice conversation mode, but speech-to-prompt makes the experience feel more natural, especially on mobile.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile Experience&lt;/strong&gt;: The mobile interface got a major rethink: chat-style header, conversation drawer, floating composer, cleaner controls, and a more app-like feel. This matters because Thingy now feels usable on a phone, not merely responsive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory and Personalization&lt;/strong&gt;: Thingy can remember user preferences like name and use prior conversation context. It can welcome returning users differently from new ones, and the experience can become more personal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thingy Identity&lt;/strong&gt;: The UI moved away from a publication aesthetic and toward a dedicated chat client with Thingy&amp;rsquo;s own visual presence. The larger rail image, cleaner composer, and simplified interaction model make it feel like its own thing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://thingy.thingelstad.com&#34;&gt;Thingy&lt;/a&gt; requires you to be subscribed to the &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly Thing&lt;/a&gt;, and it will do the subscribing for you as you sign in. Give it a try! 🤩&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/thingy-screenshot.png&#34; width=&#34;600&#34; height=&#34;431&#34; alt=&#34;&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/05/23/a-pattern-ive-adopted-when.html</link>
      <pubDate>Sat, 23 May 2026 08:50:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/05/23/a-pattern-ive-adopted-when.html</guid>
      <description>&lt;p&gt;A pattern I&amp;rsquo;ve adopted when I&amp;rsquo;m heavily engaged with Claude Code or Codex is to have an open text file where I&amp;rsquo;m keeping the &amp;ldquo;next prompts&amp;rdquo; that I&amp;rsquo;m considering. While the agent is working I&amp;rsquo;m continuing to refine these so we are ready to move to the next feature or task.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Massive Weekly Thing Website Build</title>
      <link>https://www.thingelstad.com/2026/05/07/massive-weekly-thing-website-build.html</link>
      <pubDate>Thu, 07 May 2026 22:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/05/07/massive-weekly-thing-website-build.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve commented that agentic coding makes things that were previously on your &amp;ldquo;list of impossible projects&amp;rdquo; into things that you can do. I have long had on my &amp;ldquo;impossible project&amp;rdquo; list the desire to create a website for the Weekly Thing that let the archive shine in ways that I knew were possible but no solution out there delivered. With 9 years of writing and 345 issues in the archive there is so much to surface.&lt;/p&gt;
&lt;p&gt;To do this I knew I would need to build it on my own. I could use the Buttondown API to get the issues and make them accessible. But then I needed a website. I needed a content pipeline. Oh, and that archive has old formats from different platforms that were a mangled mess of HTML.&lt;/p&gt;
&lt;p&gt;This was truly on the &amp;ldquo;impossible list&amp;rdquo; for me personally. If I wanted to spend tens-of-thousands of dollars, or probably even more, I maybe could have hired someone to build it. A laughable idea really.&lt;/p&gt;
&lt;p&gt;So I decided to take my experiences with Claude Code, Claude Design, and Codex and point it at this problem. Over the last couple of weeks I&amp;rsquo;ve been working on the new Weekly Thing website experience.&lt;/p&gt;
&lt;p&gt;I just have to say I&amp;rsquo;m so thrilled with the results that I can barely handle it. Rather than type a novel here I&amp;rsquo;m just going to list out what the site has. Even better, go there and explore:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://weekly.thingelstad.com/&#34;&gt;&lt;strong&gt;https://weekly.thingelstad.com&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is what the new site has!&lt;/p&gt;
&lt;p&gt;1️⃣ Completely reimagined &lt;strong&gt;landing page to describe the Weekly Thing&lt;/strong&gt;. Gone is the basic Buttondown paragraph of text and a signup button. The home page hopefully gives a much better feel for what the Weekly Thing is.&lt;/p&gt;
&lt;p&gt;2️⃣ &lt;a href=&#34;https://weekly.thingelstad.com/archive/&#34;&gt;&lt;strong&gt;Archive&lt;/strong&gt;&lt;/a&gt; page has full index of every issue back to number 1. This is also now optimized for the Weekly Thing with issue images, link counts, organized by year.&lt;/p&gt;
&lt;p&gt;3️⃣ &lt;strong&gt;&lt;a href=&#34;https://weekly.thingelstad.com/thingy/&#34;&gt;Thingy&lt;/a&gt;, the Weekly Thing librarian&lt;/strong&gt; that has read every issue of the Weekly Thing and is ready to converse with you about all of it. I have wanted to make an agent like this for over a year and it is finally real. I&amp;rsquo;ve found this fascinating to play with and ask questions of.&lt;/p&gt;
&lt;p&gt;You will see this feature requires you to provide your subscriber email address. It is only available to confirmed subscribers of the Weekly Thing.&lt;/p&gt;
&lt;p&gt;You may recall in &lt;a href=&#34;https://weekly.thingelstad.com/archive/311/&#34;&gt;WT311&lt;/a&gt; I shared a custom GPT that was sort of like this. That was grade school level. Thingy is much smarter!&lt;/p&gt;
&lt;p&gt;Some prompts that are fun to explore with Thingy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://weekly.thingelstad.com/thingy/?prompt=How+has+the+arc+of+AI+evolved+in+the+Weekly+Thing%3F&#34;&gt;How has the arc of AI evolved in the Weekly Thing?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://weekly.thingelstad.com/thingy/?prompt=Compare+Tik+Tok%2C+Facebook%2C+and+X+from+the+archive.&#34;&gt;Compare Tik Tok, Facebook, and X from the archive.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://weekly.thingelstad.com/thingy/?prompt=Explain+to+me+how+Jamie+connects+Indie+Web+and+Crypto%3F+They+seem+very+opposite+to+me.&#34;&gt;Explain to me how Jamie connects Indie Web and Crypto? They seem very opposite to me.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4️⃣ &lt;strong&gt;&lt;a href=&#34;https://weekly.thingelstad.com/search/&#34;&gt;Search&lt;/a&gt; is now super powered.&lt;/strong&gt; The searching is indexed into the section of the weekly thing. This works way better than before.&lt;/p&gt;
&lt;p&gt;5️⃣ On the page for each issue you will see that there is a &lt;strong&gt;Table of Contents&lt;/strong&gt; on the left. It is a little thing, but another example of something I&amp;rsquo;ve wanted for a long time. The Weekly Thing is long and this gives a way to navigate. Also, each of those items is a hyperlink so you can now send a link to a specific notable link in a specific issue.&lt;/p&gt;
&lt;p&gt;6️⃣ Big one &amp;ndash; &lt;strong&gt;you can now LISTEN to the Weekly Thing&lt;/strong&gt;. I&amp;rsquo;ve filled this in for the last 10 issues. On the issue page there is a &amp;ldquo;Listen&amp;rdquo; button where it will be read for you.&lt;/p&gt;
&lt;p&gt;7️⃣ &lt;strong&gt;Podcast?&lt;/strong&gt; Well if I have an audio file for each issue why not bundle that into a podcast. So I did. You should be able to find the Weekly Thing on &lt;a href=&#34;https://podcasts.apple.com/us/podcast/weekly-thing/id1895865769&#34;&gt;Apple Podcasts&lt;/a&gt; and &lt;a href=&#34;https://open.spotify.com/show/43A9fytZDKaZhrkp3qbukh&#34;&gt;Spotify&lt;/a&gt;. It is propagating through other platforms. Should be on &lt;a href=&#34;https://overcast.fm/itunes1895865769/weekly-thing&#34;&gt;Overcast&lt;/a&gt; too.&lt;/p&gt;
&lt;p&gt;8️⃣ &lt;strong&gt;Support for LLMs.txt!&lt;/strong&gt; This is a bit hidden, but if you want to talk with the LLM of your choice about the Weekly Thing, give the LLM this link:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://weekly.thingelstad.com/llms.txt&#34;&gt;https://weekly.thingelstad.com/llms.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That provides an LLM optimized index of the entire 345 issues, as well as links to LLM optimized versions of every email! This means ChatGPT or Claude or whatever else can dive deep into the content. I have actually used this myself when asking a model to do some research with me.&lt;/p&gt;
&lt;p&gt;A quick note about the audio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This doesn&amp;rsquo;t replace or remove my actual podcast, &lt;a href=&#34;https://another.thingelstad.com/&#34;&gt;Another Thing&lt;/a&gt;. There is still just one episode there but I&amp;rsquo;m not giving up on that.&lt;/li&gt;
&lt;li&gt;The audio for the Weekly Thing is text-to-speech using a transformed version of the email text. It announces sections, gives links numbers, announces quotes, and cuts some sections. I&amp;rsquo;ve listened to a few and think it works reasonably well.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ll probably evolve the generated audio, and right now it only exists for the last 10 issues, but I plan to backfill all issues with audio over time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Take a look. Try out the archive, search, Thingy. Listen to an issue. And let me know what you think… anything not work right? Read wrong? Something missing? Or just that you think it is all cool?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Your Version Number: The Website</title>
      <link>https://www.thingelstad.com/2026/05/06/your-version-number-the-website.html</link>
      <pubDate>Wed, 06 May 2026 22:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/05/06/your-version-number-the-website.html</guid>
      <description>&lt;p&gt;In 2018 I wrote about &lt;a href=&#34;https://www.thingelstad.com/2018/02/24/your-version-number.html&#34;&gt;Your Version Number&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think the version metaphor works. You are a different person in your 20s, 30s, 40s and so on. Your life changes in meaningful ways! MAJOR version! Each year we tend to think of new things and new goals, but we don&amp;rsquo;t break backwards compatibility. MINOR version! And I think most people try to make each day a bit better than the last. PATCH level!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;ve had a &lt;a href=&#34;https://www.thingelstad.com/2025/02/25/jamie.html&#34;&gt;shortcut that shows my version&lt;/a&gt; on my phone for the last year. And now I decided to make this a fun website!&lt;/p&gt;
&lt;p&gt;Now available…&lt;/p&gt;
&lt;h3 id=&#34;your-version-number&#34;&gt;&lt;a href=&#34;https://yourversionnumber.com/&#34;&gt;Your Version Number&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://yourversionnumber.com/&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/your-version-number.png&#34; alt=&#34;Screenshot of yourversionnumber.com showing a confetti birthday theme with the name Jamie and version number 5.4.126 displayed in large pink and purple text.&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Super simple single-page app that allows you to add one or more birthdays and see the version number. The magic here is all the data is held in the URL so you can bookmark, set as your homepage, or share with others. And sure it is fun seeing you and your friends daily versions, but it is even more fun with all the custom themes!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dark&lt;/code&gt; — Minimalist dark mode with violet accents.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;family&lt;/code&gt; — Warm cream + handwritten Caveat, family-album feel.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pastel&lt;/code&gt; — Soft gradient haze with pastel cards.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;birthday&lt;/code&gt; — Confetti, balloons, and party-hat pink.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nature&lt;/code&gt; — Scattered leaves on linen, earthy serif.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ocean&lt;/code&gt; — Wavy gradients with a tiny shoreline wave.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;galaxy&lt;/code&gt; — Deep-space gradient with neon numerals.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zen&lt;/code&gt; — Quiet cream with a vermillion first-letter.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weather&lt;/code&gt; — Sky-blue card with a sun/cloud per row.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;polaroid&lt;/code&gt; — Taped Polaroid grid with a slight tilt.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tarot&lt;/code&gt; — Purple stars and Fool / Priestess / Empress cards.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;newspaper&lt;/code&gt; — Broadsheet typography with section rules.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subway&lt;/code&gt; — Black NYC subway map with route bullets.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;receipt&lt;/code&gt; — Thermal-printer monospace with QTY 1.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;steampunk&lt;/code&gt; — Sepia gear-and-cog ledger.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brutalist&lt;/code&gt; — Yellow + red + black, oversized type.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comic&lt;/code&gt; — Comic panels with POW / ZAP / BOOM stickers.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memphis&lt;/code&gt; — 80s squiggles, triangles, and dots.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vinyl&lt;/code&gt; — Spinning 33⅓ records.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;terminal&lt;/code&gt; — Green-on-black CLI prompt.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arcade&lt;/code&gt; — Pixel-fonted hi-score CRT cabinet.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vaporwave&lt;/code&gt; — Pink/cyan grid with a palm-tree sunset.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;y2k&lt;/code&gt; — Frosted-glass chrome and blur.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pixel&lt;/code&gt; — Eight-bit pixel font on a dark green field.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gameboy&lt;/code&gt; — Classic GB DMG palette and cart silhouette.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wait though, there is more.&lt;/p&gt;
&lt;h3 id=&#34;your-version-number-work-edition&#34;&gt;&lt;a href=&#34;https://yourversionnumber.com/work/&#34;&gt;Your Version Number: Work Edition&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://yourversionnumber.com/work/&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/your-version-number-work.png&#34; alt=&#34;Dark-themed browser screenshot of yourversionnumber.com showing a Work Edition board update for Jamie with version number 12.3.10, ARR 11.3M, burn multiple 0.8, and rule of 40 score 72.&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I decided to bring the same version number semantics to your job! Here we have YEARS.QUARTERS.BUSINESS_DAYS! Add your whole team in and share the URL with everyone.&lt;/p&gt;
&lt;p&gt;And of course the Work Edition has work themes!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;boardroom&lt;/code&gt; — Board-update slide with KPI rail (ARR, NPS, payback).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;slack&lt;/code&gt; — Slack channel feed with reactions and avatars.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;slidedeck&lt;/code&gt; — Confidential business-review slide with three bullets.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;earnings&lt;/code&gt; — Live stock-ticker on a black trading screen.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;github&lt;/code&gt; — GitHub PR list with avatars, labels, and the Open pill.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;whiteboard&lt;/code&gt; — Sticky-note grid in primary colors.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inbox&lt;/code&gt; — Gmail-style inbox with subject lines and senders.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;okr&lt;/code&gt; — Q-scorecard with progress bar and ON-TRACK pill.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cubicle&lt;/code&gt; — Manila-folder corporate newsletter.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kanban&lt;/code&gt; — Jira-style cards in an In-Progress column.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;standup&lt;/code&gt; — Daily-standup card with Yesterday / Today / Blockers.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;invite&lt;/code&gt; — Calendar invite with Accepted check.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;confluence&lt;/code&gt; — Wiki page with breadcrumbs and comment counts.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zoom&lt;/code&gt; — Gallery-view tiles with reactions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;spreadsheet&lt;/code&gt; — Excel grid with row numbers.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pomodoro&lt;/code&gt; — Tomato-timer Deep Work card.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ooo&lt;/code&gt; — Out-of-office auto-reply with handwritten signature.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A fun little project made possible with Claude Code and I. 🤩&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/05/06/prompt-i-gave-claude-code.html</link>
      <pubDate>Wed, 06 May 2026 21:26:34 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/05/06/prompt-i-gave-claude-code.html</guid>
      <description>&lt;p&gt;Prompt I gave Claude Code on a recent project.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I would like to iterate faster. I would like you to use the ANTHROPIC API key and ask Haiku to generate 20 questions for each agent persona that Jamie (me) would reasonably ask. Then run those questions to each agent and see how they respond. Adjust based on that and keep iterating until all 4 agents respond to the 20 questions okay. Make sense?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Worked well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Software Is Liquid</title>
      <link>https://www.thingelstad.com/2026/04/20/software-is-liquid.html</link>
      <pubDate>Mon, 20 Apr 2026 19:52:27 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/04/20/software-is-liquid.html</guid>
      <description>&lt;p&gt;&lt;em&gt;This started as a talk I gave internally to a group of technology leaders. I&amp;rsquo;ve adapted it here, stripping out the company-specific material, because the core ideas apply well beyond any one organization.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I want to throw out some ideas about what I think is changing in our industry. What I&amp;rsquo;m going to describe is one of the most rapidly evolving, most dynamic changes I have ever seen in a twenty-plus-year career in technology. I believe there are things changing right now that will fundamentally redefine how we practice our craft.&lt;/p&gt;
&lt;h3 id=&#34;where-we-are&#34;&gt;Where we are&lt;/h3&gt;
&lt;p&gt;Let&amp;rsquo;s bookmark where we are. Agents are real. I&amp;rsquo;ve watched one go from nothing &amp;ndash; zero, no code, no design &amp;ndash; to a working alpha with real users making real decisions on it, in about five weeks. A year ago, this was an idea. Now there are production agents running.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agentification is the next major milestone our industry is going through.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m old enough to say this: there was a time before the web and a time after. A time before mobile and after. A time before the cloud and after. And now, a time before AI and agents and after.&lt;/p&gt;
&lt;p&gt;I think this is going to be the most transformative of all of those.&lt;/p&gt;
&lt;p&gt;You have to acknowledge one paradox of where we are: &lt;strong&gt;we are building the best practices before they exist.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve been here before. Those of us who lived through the cloud transformation remember being ahead of the industry, figuring out how this ephemeral compute stuff works, how to make it all function. There weren&amp;rsquo;t patterns the industry had settled on. That&amp;rsquo;s where we are today. There are no clear patterns for how agentification happens. We&amp;rsquo;re going to build those patterns and learn alongside the industry.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s okay. Just be aware of where you are. It&amp;rsquo;s fine to be out ahead of the curve; you just have to always &lt;em&gt;know&lt;/em&gt; when you&amp;rsquo;re there, because it&amp;rsquo;s a risky spot. You don&amp;rsquo;t want to be too far out.&lt;/p&gt;
&lt;h3 id=&#34;getting-philosophical-software-is-becoming-liquid&#34;&gt;Getting philosophical: software is becoming liquid&lt;/h3&gt;
&lt;p&gt;I want to get a little philosophical.&lt;/p&gt;
&lt;p&gt;For the last two months, I&amp;rsquo;ve pushed myself into a level of AI engagement that is probably unhealthy long-term, honestly. If you ask my family, they would agree. But what I&amp;rsquo;ve been trying to do is really wrap my head around the core concepts that I think change how we do what we do.&lt;/p&gt;
&lt;p&gt;Connect this back to other transformations. When we adopted a mobile world, we all knew we needed to &lt;em&gt;be&lt;/em&gt; mobile users to lead it. Can anybody build a great mobile app if they&amp;rsquo;ve never used a mobile phone? Obviously not. So to lead through AI agentification, we have to be really close to it. I&amp;rsquo;ve been pushing myself hard to do that, because as you build experience, it gets harder to refactor how you think.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s something I&amp;rsquo;ve been thinking a lot about: &lt;strong&gt;what is the cost of being wrong?&lt;/strong&gt; And how do we fold that into how we create things?&lt;/p&gt;
&lt;p&gt;Step back for a moment and think about how we do our craft. Say we&amp;rsquo;re building software. We spend time on discovery. We create stories. We have designers go off and make wireframes. We do all kinds of things to make sure that, when we actually get to the point of building, we know we&amp;rsquo;re doing the right thing.&lt;/p&gt;
&lt;p&gt;Why? Because the act of building software has been incredibly expensive. The last twenty years of my career have been about figuring out how to effectively turn ideas into working software and how to make sure that, when we do, we&amp;rsquo;re not wrong &amp;ndash; that we&amp;rsquo;re producing valuable capability. That&amp;rsquo;s what technology teams around the world have been focused on. The teams that do it well do these things better than the teams that don&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I&amp;rsquo;ve come to think about it: &lt;strong&gt;software has historically been a solid.&lt;/strong&gt; It&amp;rsquo;s chiseling something out of granite. We have our ideas, we sit down, it&amp;rsquo;s hard work, it&amp;rsquo;s challenging, and we chisel it out of granite.&lt;/p&gt;
&lt;p&gt;I think that&amp;rsquo;s changing. I first heard this from somebody online and it didn&amp;rsquo;t land for me at first &amp;ndash; I thought, that doesn&amp;rsquo;t make sense. But the more I thought about it, the more I thought it was spot on. The assertion was: &lt;strong&gt;software is becoming liquid.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve operated for two decades in a world where software is an incredibly difficult solid to shape. With AI and agentic development &amp;ndash; automatic programming &amp;ndash; software is becoming malleable. If you&amp;rsquo;ve worked with agents on software, you&amp;rsquo;ve had the experience of thinking: I can refactor this code faster than it would have taken me to do all the guardrail work to make sure I didn&amp;rsquo;t make the wrong decision in the first place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When the economics of what you do change that profoundly, you have to question everything.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;every-paradigm-built-on-software-is-expensive-needs-re-examination&#34;&gt;Every paradigm built on &amp;ldquo;software is expensive&amp;rdquo; needs re-examination&lt;/h3&gt;
&lt;p&gt;Go back further. Most of us spent the early parts of our careers in agile flows. Before that, everybody did waterfall. Why? Were they just not as smart? No &amp;ndash; they were operating under a different set of assertions. If you made a mistake writing C code, it was really difficult to unwind. You&amp;rsquo;d take months to refactor a mistake in your domain model that showed up in C code.&lt;/p&gt;
&lt;p&gt;Then we got Python, PHP, interpreted environments, continuous integration. The paradigm changed. Suddenly: what if I&amp;rsquo;m wrong? Fine, I&amp;rsquo;ll refactor. Refactoring Python is cheaper than refactoring C. That&amp;rsquo;s just a fact.&lt;/p&gt;
&lt;p&gt;So here comes agile. We can do this differently. We can be more responsive.&lt;/p&gt;
&lt;p&gt;The cloud is the second part of that story. The cloud says we can do the same thing with hardware &amp;ndash; we don&amp;rsquo;t have to worry about where we put the server. The cost of being wrong, if I put a server in the wrong data center, is not easy to undo. But in the cloud, that&amp;rsquo;s a couple of commands.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We are in that same spot again.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI is transforming the cost of creating software in a way that should make us question every single process we have that is fundamentally built on the assertion that creating software is expensive.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d argue that maybe &lt;strong&gt;proof of concept doesn&amp;rsquo;t make sense anymore.&lt;/strong&gt; What we used to call a proof of concept is now discovery. And how do you do discovery? I think you do it in code. Your discovery process is entirely in code. Do you then throw the code away? No. Why would I? It&amp;rsquo;s liquid. I bend it, move it around, get it where I want it.&lt;/p&gt;
&lt;p&gt;The act of discovering &lt;em&gt;through creating&lt;/em&gt; changes things pretty fundamentally. That paradigm is going to take us a while to absorb. I really want you to think about what you have in your world that makes assertions that building this stuff is extremely expensive. And when I say &amp;ldquo;cost,&amp;rdquo; don&amp;rsquo;t just think dollars &amp;ndash; think organizational cost.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s assertion one: software is becoming liquid.&lt;/p&gt;
&lt;h3 id=&#34;managers-belong-in-the-code&#34;&gt;Managers belong in the code&lt;/h3&gt;
&lt;p&gt;Here&amp;rsquo;s my second assertion. If you&amp;rsquo;re a people leader, this one is for you.&lt;/p&gt;
&lt;p&gt;I used to have a very firm belief. When I saw a people leader &amp;ndash; a director or a manager &amp;ndash; in code, that was a warning sign. Almost always, when I saw a director or manager in code, they were probably avoiding something harder that they were supposed to be doing. &amp;ldquo;Oh, you&amp;rsquo;re working on the actual software? I bet you have a personnel problem you&amp;rsquo;re not dealing with.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t think that&amp;rsquo;s true anymore. &lt;strong&gt;Agentic engineering changes that fundamentally.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The issue historically was a simple one of context window. As a manager, you couldn&amp;rsquo;t truly know the codebase because it was too complicated. It was a solid asset your craftspeople were working on. You had to focus on the people systems. You just couldn&amp;rsquo;t hold both of those things in your head and be effective.&lt;/p&gt;
&lt;p&gt;Agents change that paradigm entirely. There is no reason, as a director or a manager, why you shouldn&amp;rsquo;t be talking to an agent and asking about the quality of the asset you&amp;rsquo;re accountable for. And as a people leader, &lt;strong&gt;you are accountable for the assets your people create.&lt;/strong&gt; So why aren&amp;rsquo;t you having that conversation?&lt;/p&gt;
&lt;p&gt;Why would I ever start a conversation with an engineer with, &amp;ldquo;how long do you think that&amp;rsquo;ll take?&amp;rdquo; I should have had that conversation with Claude Code first &amp;ndash; looked at the source, asked: is this a big refactor? If we went this direction, how would that look?&lt;/p&gt;
&lt;p&gt;This flips even further on its head when we think about agentification, because increasingly we&amp;rsquo;re going to be creating software not for &lt;em&gt;people&lt;/em&gt; to use, but for &lt;em&gt;agents&lt;/em&gt; to use. Think about how that works. You work with an agent to create the software. Another agent uses it. The agent using it gives you feedback on how it&amp;rsquo;s working. You take that feedback back to the coding agent and ask it to iterate.&lt;/p&gt;
&lt;p&gt;What are you in that loop? I don&amp;rsquo;t know &amp;ndash; a product manager, I guess.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m doing this today on multiple projects at home &amp;ndash; using agents to give each other feedback. This speed and paradigm shift is foundational to how we have to adjust our thinking.&lt;/p&gt;
&lt;h3 id=&#34;rethinking-velocity&#34;&gt;Rethinking velocity&lt;/h3&gt;
&lt;p&gt;The last thing I want you to really think about: as an industry, we need a step-function change in how we think about &lt;strong&gt;velocity.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;How long is something going to take? I&amp;rsquo;d argue every paradigm you have for answering that question is broken now. The cost understanding is broken. The complexity understanding is broken. It&amp;rsquo;s all broken.&lt;/p&gt;
&lt;p&gt;The only way to truly gauge it is through the second thing I mentioned &amp;ndash; getting closer to the asset you&amp;rsquo;re accountable for, getting closer to the code and the product.&lt;/p&gt;
&lt;p&gt;Just like mobile &amp;ndash; where you couldn&amp;rsquo;t understand how to build an app until you&amp;rsquo;d experienced one &amp;ndash; &lt;strong&gt;you can&amp;rsquo;t understand agentic transformation until you&amp;rsquo;ve experienced it firsthand.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t be scared to go close to the code. Don&amp;rsquo;t be scared to ask your team, &amp;ldquo;Hey, how do I get that code out of Git? I&amp;rsquo;d like to look at it and do some analysis.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;These are superpowers. Every single one of us can put a cape on. You didn&amp;rsquo;t have these before. I think it&amp;rsquo;s amazing. And the whole industry is going to go through this transformation.&lt;/p&gt;
&lt;h3 id=&#34;the-change-curve-and-the-rate-of-change&#34;&gt;The change curve, and the rate of change&lt;/h3&gt;
&lt;p&gt;I want to close with something about change itself.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a model called the Satir change curve. Every one of us sits at a different point on it right now. But just like every transformation before it, your progress is gated by your own engagement &amp;ndash; by your own willingness to rethink the craft you have and to let go of things that may have been important for the last two decades but aren&amp;rsquo;t important anymore.&lt;/p&gt;
&lt;p&gt;I invite you to come down this path.&lt;/p&gt;
&lt;p&gt;Personally, it&amp;rsquo;s not easy. And what&amp;rsquo;s not easy is the &lt;strong&gt;rate.&lt;/strong&gt; Think about it: we had two or three or four years to figure out mobile. We had half a decade for cloud. The web took an eternity &amp;ndash; it was the first one. Here, we&amp;rsquo;re trying to do this in about a year.&lt;/p&gt;
&lt;p&gt;Why? Because it&amp;rsquo;s enabled by all the other capability we&amp;rsquo;ve built, &lt;em&gt;and&lt;/em&gt; because the potential is so big. The return on investment, once we identify things, is measured in weeks or months &amp;ndash; not years. That&amp;rsquo;s a completely different thing than any of these previous transformations.&lt;/p&gt;
&lt;p&gt;I hope you heard something here that grounds you.&lt;/p&gt;
&lt;p&gt;Software is liquid. The fundamental economic paradigms have changed. You are able to lead through this.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/04/09/great-live-demos-at-the.html</link>
      <pubDate>Thu, 09 Apr 2026 15:37:50 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/04/09/great-live-demos-at-the.html</guid>
      <description>&lt;p&gt;Great live demos at The Agentic Workflow: A Live Demo of Autonomous Execution Across the
SDLC from TeamSPS at MnTech Connect.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/70ca4f2269.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Audience seated at tables in a conference room watching two presenters at a podium with a projected slide showing headshots and bios.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/03/20/im-very-happy-with-how.html</link>
      <pubDate>Fri, 20 Mar 2026 08:47:47 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/03/20/im-very-happy-with-how.html</guid>
      <description>&lt;p&gt;I’m very happy with how our &lt;a href=&#34;https://escape.thingelstad.com&#34;&gt;Escaping Thjngs&lt;/a&gt; website has shaped up. It showcases our escape room history in fun ways, including special support for trips like our current &lt;a href=&#34;https://escape.thingelstad.com/trip/escape-in-europe/&#34;&gt;Escape in Europe&lt;/a&gt; 12-room trip. More to come!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/03/14/codex-the-codebase-feels-much.html</link>
      <pubDate>Sat, 14 Mar 2026 10:41:45 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/03/14/codex-the-codebase-feels-much.html</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Codex: The codebase feels much healthier after the recent changes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I agree Codex.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Automatic Programming Speed</title>
      <link>https://www.thingelstad.com/2026/03/10/automatic-programming-speed.html</link>
      <pubDate>Tue, 10 Mar 2026 07:55:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/03/10/automatic-programming-speed.html</guid>
      <description>&lt;p&gt;This morning with my morning coffee (skipped meditation, intermingled with getting ready) I shipped three new features in &lt;a href=&#34;https://poapkings.com/elixir/&#34;&gt;Elixir&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/blob/main/docs/tasks/elixir-memory-system.md&#34;&gt;Stronger memory&lt;/a&gt; for clan continuity&lt;/strong&gt; (&lt;a href=&#34;github.com/jthingelstad/elixir-bot/compare/2f4c31ff72a330e1d9a2b86bc1028704d7ce97d2...bf4570c4f5820e4403d4731d48be20f38fa95298&#34;&gt;diff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Track fresh &lt;strong&gt;ladder and Path of Legend momentum&lt;/strong&gt; to celebrate hot streaks (feature Codex suggested from &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/tree/main/docs/cr-api-docs&#34;&gt;cr-api-docs&lt;/a&gt;, &lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/commit/a3aec472d1d86a5d1b630b89a741a341c5515961&#34;&gt;commit&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;weekly clan recap&lt;/strong&gt; (&lt;a href=&#34;https://github.com/jthingelstad/elixir-bot/commit/d7117b22f5a7552ccfd522a5ccf00a3f317367f8&#34;&gt;commit&lt;/a&gt;) next week to highlight our ongoing story and progress.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Making Elixir Smarter</title>
      <link>https://www.thingelstad.com/2026/03/07/making-elixir-smarter.html</link>
      <pubDate>Sat, 07 Mar 2026 10:49:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/03/07/making-elixir-smarter.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://poapkings.com/elixir/&#34;&gt;Elixir&lt;/a&gt; has come a super long way and is very agentic. In usage though its intelligence was really limited due to the data layer. In the midst of a total refactoring of the data and tools with Codex using GPT-5.4 and it is pretty amazing.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I asked Codex to do an analysis of the current data and tools and provide me an ERD to see as well as an assessment of shortcomings and gaps. It found so much that was problematic.&lt;/li&gt;
&lt;li&gt;I asked it to do a full reconnaissance of the Clash Royale API to get a better understanding of what was available.&lt;/li&gt;
&lt;li&gt;We redesigned the entire tool set to represent state better.&lt;/li&gt;
&lt;li&gt;Claude and I developed a list of 50 test questions that we used 10 at a time to test the new data model and tools.&lt;/li&gt;
&lt;li&gt;Codex finalized the new design and data model and is now refactoring.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pretty amazing for 45 minutes.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/03/01/just-told-claude-okay-im.html</link>
      <pubDate>Sun, 01 Mar 2026 19:45:01 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/03/01/just-told-claude-okay-im.html</guid>
      <description>&lt;p&gt;Just asked Claude to test &lt;a href=&#34;https://github.com/jthingelstad/mb&#34;&gt;mb&lt;/a&gt; for an extended run:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Okay. I&amp;rsquo;m going to go on a walk for about an hour. This whole project is still pretty new. Can you exercise it extensively using the test blog permissions you have now and give it a thorough work through various features. Fix anything that comes up and we&amp;rsquo;ll check in when I&amp;rsquo;m back.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/02/15/my-poaprss-project-needed-some.html</link>
      <pubDate>Sun, 15 Feb 2026 18:06:17 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/02/15/my-poaprss-project-needed-some.html</guid>
      <description>&lt;p&gt;My &lt;a href=&#34;https://poap2rss.com&#34;&gt;POAP2RSS&lt;/a&gt; project needed some form of an icon and the design was super bland so I had ChatGPT help me with an image and Claude Code revamped the design. Now it has some style. And I&amp;rsquo;m using beta feature from &lt;a href=&#34;https://tinylytics.app/&#34;&gt;Tinylytics&lt;/a&gt; so RSS feed calls are now included in site analytics! 🎉&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/poap2rss.png&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;Glowing green neon text on black reading POAP divided by a horizontal line above 2RSS in a retro digital display style&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/02/01/easy-and-just-are-four.html</link>
      <pubDate>Sun, 01 Feb 2026 21:02:37 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/02/01/easy-and-just-are-four.html</guid>
      <description>&lt;p&gt;Easy and just are &amp;ldquo;four letter words&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Can we &lt;strong&gt;just&lt;/strong&gt; add one more option?&lt;/p&gt;
&lt;p&gt;It seems &lt;strong&gt;easy&lt;/strong&gt; to do.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2026/01/14/good-data-visualizations-showing-ice.html</link>
      <pubDate>Wed, 14 Jan 2026 23:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2026/01/14/good-data-visualizations-showing-ice.html</guid>
      <description>&lt;p&gt;Good data visualizations showing &lt;a href=&#34;https://www.startribune.com/how-ice-numbers-compare-to-twin-cities-largest-police-forces/601562617&#34;&gt;ICE presence versus police in Twin Cities area&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/dhs-tc-police.png&#34; width=&#34;600&#34; height=&#34;364&#34; alt=&#34;Two pie charts compare the number of Department of Homeland Security personnel in Minnesota with police forces in the ten largest Twin Cities metro areas.&#34;&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/dhs-recent-deploy.png&#34; width=&#34;600&#34; height=&#34;620&#34; alt=&#34;A series of colored dot clusters visually represents various groups.&#34;&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2026/dhs-allocation.png&#34; width=&#34;600&#34; height=&#34;349&#34; alt=&#34;Two circle charts compare the number of Immigration and Customs Enforcement personnel to the estimated number of unauthorized immigrants in 2023 across the U.S.&#34;&gt;
</description>
    </item>
    
    <item>
      <title>MnTech Outlook 2026</title>
      <link>https://www.thingelstad.com/2025/12/11/mntech-outlook.html</link>
      <pubDate>Thu, 11 Dec 2025 20:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/12/11/mntech-outlook.html</guid>
      <description>&lt;p&gt;Interesting comments on big goals for their organizations and the community this morning at MnTech Outlook 2026.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/f7429f0971.jpg&#34; alt=&#34;Six panelists seated on stools across a stage, one holding a microphone and speaking, others listening attentively.&#34;&gt;
&lt;p&gt;Some observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No surprise that &lt;strong&gt;AI&lt;/strong&gt; and &lt;strong&gt;transformation&lt;/strong&gt; was top of everyone&amp;rsquo;s list.&lt;/li&gt;
&lt;li&gt;Pratt: &amp;ldquo;we are going to have a reduction in our white collar workforce&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Tomes shared his personal experiences vibe coding. Playing and directly engaging with new tech is critical.&lt;/li&gt;
&lt;li&gt;Bahner: we still need coding cause somebody has to read and verify the code. I agree we need talented developers but I don&amp;rsquo;t think this is why. Nobody can read machine language or assembly. Abstraction matters. Is agentic developmetn just a new abstraction?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to
&lt;a href=&#34;https://www.linkedin.com/in/renee-edwards-6a29521/&#34;&gt;Renee Edwards&lt;/a&gt; (Optum),
&lt;a href=&#34;https://www.linkedin.com/in/ericprattmn/&#34;&gt;Eric Pratt&lt;/a&gt; (Senator),
&lt;a href=&#34;https://www.linkedin.com/in/angieschulke/&#34;&gt;Angie Schulke&lt;/a&gt; (Star Tribune),
&lt;a href=&#34;https://www.linkedin.com/in/kristinbahner/&#34;&gt;Kristin Bahner&lt;/a&gt; (Representative), and
&lt;a href=&#34;https://www.linkedin.com/in/tarek-tomes/&#34;&gt;Tarek Tomes&lt;/a&gt; (State of Minnesota)
for sharing with everyone.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/12/06/i-love-the-words-play.html</link>
      <pubDate>Sat, 06 Dec 2025 15:20:17 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/12/06/i-love-the-words-play.html</guid>
      <description>&lt;p&gt;I love the words &lt;strong&gt;play&lt;/strong&gt; and &lt;strong&gt;tinker&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It is very important for me to have &lt;strong&gt;projects&lt;/strong&gt; that I can &lt;strong&gt;play&lt;/strong&gt; and &lt;strong&gt;tinker&lt;/strong&gt; with.&lt;/p&gt;
&lt;p&gt;Thankfully I have more than enough of them. 😆&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Gall&#39;s Law</title>
      <link>https://www.thingelstad.com/2025/11/16/galls-law.html</link>
      <pubDate>Sun, 16 Nov 2025 18:41:56 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/11/16/galls-law.html</guid>
      <description>&lt;p&gt;I was listening to The Omni Show — &lt;a href=&#34;https://theomnishow.omnigroup.com/episode/how-jorge-arango-uses-omnifocus&#34;&gt;How Jorge Arango Uses OmniFocus&lt;/a&gt;. It was an overall good episode and at the end Arango shared a reference to &lt;a href=&#34;https://en.wikipedia.org/wiki/John_Gall_(author)#Gall&#39;s_law&#34;&gt;Gall&amp;rsquo;s Law&lt;/a&gt;. I had not heard of this before so I looked it up:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Arango was sharing this in reference to GTD systems — build a simple system that works and then figure out what you need from there. But I keep coming back to this because I think this happens in software and technology frequently.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been thinking about big enterprise system changes that companies have to make and the huge challenge that you face is really fighting Gall&amp;rsquo;s Law. These systems are always complex and due to the domain you cannot start simple — you have to start complex.&lt;/p&gt;
&lt;p&gt;Gall&amp;rsquo;s Law is worth keeping in mind.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Things 4 Good Five Year Impact</title>
      <link>https://www.thingelstad.com/2025/11/16/things-good-five-year-impact.html</link>
      <pubDate>Sun, 16 Nov 2025 15:24:32 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/11/16/things-good-five-year-impact.html</guid>
      <description>&lt;p&gt;We&amp;rsquo;ve now done our &lt;strong&gt;Things 4 Good Candle Fundraiser&lt;/strong&gt; for five years. With the amazing support of this community we have raised &lt;strong&gt;$31,787&lt;/strong&gt; for non-profits! Thank you so much. This year was an incredible jump from last year &lt;a href=&#34;https://www.thingelstad.com/2025/11/16/things-good-candle-fundraiser-insights.html&#34;&gt;selling 321 candles&lt;/a&gt;! ❤️&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/t4g-annaul-sum.png&#34; width=&#34;600&#34; height=&#34;324&#34; alt=&#34;A bar graph displays the annual fundraising totals for Things 4 Good Fall Fundraiser from 2021 to 2025, showing a gradual increase each year, reaching $9,048 in 2025.&#34;&gt;
&lt;p&gt;Last year we did the first day of the sale at &lt;a href=&#34;https://mtolivet.org/event/mpls-holiday-boutique/&#34;&gt;Mount Olivet Holiday Boutique&lt;/a&gt; and that resulted in a lot of new people finding our candles — and a lot of transactions. This year we returned to our at home model but still saw a lot of people participating in the fundraiser with 73 unique transactions!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/t4g-annual-count.png&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;A bar chart displays the number of Things 4 Good Fall Fundraiser transactions by year from 2021 to 2025, showing a steady increase.&#34;&gt;
&lt;p&gt;I also noticed this year that I felt like the distribution of funds between the non-profits seemed much tighter than usual. I went back and did the math and sure enough it was. The &amp;ldquo;range&amp;rdquo; between the four non-profits was only 2.4%, less than any previous year.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/t4g-org-variance.png&#34; width=&#34;600&#34; height=&#34;327&#34; alt=&#34;A bar chart displays the variance in distribution for the Things 4 Good Fall Fundraiser from 2021 to 2025, showing a decreasing trend from 17.7% in 2021 to 2.4% in 2025.&#34;&gt;
&lt;p&gt;Here is another look at this data. In a completely even distribution each non-profit would get 25%. Here we look at the percent over-achievement of the highest performing organization and the percent under-achievement of the lowest. The first year had the highest range ever.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/t4g-org-ranges.png&#34; width=&#34;600&#34; height=&#34;324&#34; alt=&#34;A line graph shows the variance to the mean for the Things 4 Good Fall Fundraiser from 2021 to 2025.&#34;&gt;
&lt;p&gt;This event has become a treasured tradition for our family and I think it has for some of the folks that come as well. Sign up to our &lt;a href=&#34;https://family.thingelstad.com&#34;&gt;family mailing list&lt;/a&gt; and check &amp;ldquo;Candle Fundraiser&amp;rdquo; to be notified of future sales.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;https://www.thingelstad.com/2024/11/10/things-good-four.html&#34;&gt;Four Year Impact&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Things 4 Good 2025 Candle Fundraiser Insights</title>
      <link>https://www.thingelstad.com/2025/11/16/things-good-candle-fundraiser-insights.html</link>
      <pubDate>Sun, 16 Nov 2025 15:13:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/11/16/things-good-candle-fundraiser-insights.html</guid>
      <description>&lt;p&gt;We have wrapped up the 5th annual Candle Fundraiser. I’m proud to say that &lt;a href=&#34;https://www.thingelstad.com/2025/11/16/things-good-candle-fundraiser-results.html&#34;&gt;we raised $9,048 in donations&lt;/a&gt;! That is a $2,000 jump (29.1%) from last year&amp;rsquo;s results. &lt;strong&gt;Amazing!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Last year we made &lt;strong&gt;252 candles&lt;/strong&gt; and we sold out on Sunday. This year we sold &lt;strong&gt;321 candles&lt;/strong&gt; and only had 10 remaining after the sale. We didn’t necessarily set out to make 321 candles. It was a struggle to get the components that we needed to make all the candles. Vessels were all out of stock so I would order any vessels as soon as they came in stock but it was dribbles. Scent was also challenging. On Wednesday before the sale we had &lt;strong&gt;no Winter Wonderland&lt;/strong&gt; candles and had made a bunch of True North to compensate. Then an order of 8 lbs of scent arrived a few days early and we got to making a bunch of candles!&lt;/p&gt;
&lt;p&gt;Many people buy candles as gifts so we tend to see some larger orders. Our largest order this year was 16 candles. You can see folks tend to by in pairs — even numbers are more common than odd. We also saw a &lt;strong&gt;big difference&lt;/strong&gt; this year versus last in the number of single candle sales. Last year at the &lt;a href=&#34;https://mtolivet.org/event/mpls-holiday-boutique/&#34;&gt;Mount Olivet Holiday Boutique&lt;/a&gt; we had 32 sales of one candle, and this year there were only 9 sales with one candle.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/t4g-unit-distribution.png&#34; width=&#34;600&#34; height=&#34;307&#34; alt=&#34;A bar chart shows the distribution of transactions by count, with most transactions occurring at a candle count of 2.&#34;&gt;
&lt;p&gt;This year we had &lt;strong&gt;eleven&lt;/strong&gt; different scents, three more than last year. The new scent was &lt;strong&gt;Charcoal Rose&lt;/strong&gt;. We also introduced two new &amp;ldquo;types&amp;rdquo; of candles — &lt;strong&gt;T4G Labs&lt;/strong&gt; and &lt;strong&gt;Rekindled&lt;/strong&gt;. Both of these candles were in a random scent distribution, requiring you to smell each one since they were different. The Labs candles are the result of our scent experimentation. Rekindled were all made using vessels that had been returned to us and then reused. Here is a look at rolling inventory as sales were happening.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/t4g-inventory-rolling.png&#34; width=&#34;600&#34; height=&#34;381&#34; alt=&#34;A line graph titled Things 4 Good 2025 Candle Fundraiser: Rolling Inventory displays the decreasing inventory of various candle scents over a series of transaction counts.&#34;&gt;
&lt;p&gt;Here is the same data but using a different visualization.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/t4g-inventory.png&#34; width=&#34;600&#34; height=&#34;376&#34; alt=&#34;A stacked area chart displays the rolling inventory of various candle types during the Things 4 Good 2025 Candle Fundraiser, with labels indicating the number of candles and transaction counts.&#34;&gt;
&lt;p&gt;This year was also the first year we offered XL 24oz candles for a $50 donation. I had no way of knowing demand for this so we only made 12 of them to start with and thankfully the preorders allowed me to oversell them and get more made the week after the sale — totally 22 sold. This added $1,100 to the fundraiser. (Note: XL candles are not in the graphs above.)&lt;/p&gt;
&lt;p&gt;The last new thing this year were lids. We have been asked in the past if we have lids and I decided we should just have some available. These were $10 each, are very high quality, and can be used repeatedly on different candles. We sold 40 of these. These seemed to be mostly sold when people were giving them as gifts. This added $400 to the fundraiser.&lt;/p&gt;
&lt;p&gt;Other observations from the sale:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Having T4G Labs and Rekindled both be random scents did not make any sense. Next year the T4G Labs will be our experiments and include a list of scent lookup so folks know what each one is, using a number. Rekindled will likely become a consistent and reused scent just for that candle. We are thinking something that smells &amp;ldquo;fresh and clean&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;The XL candles were hard for us to pour because they are double wicked. I have ideas how we can set the wicks next year to make that much easier.&lt;/li&gt;
&lt;li&gt;I’m not sharing the payment preferences as I did in previous years because we really steered people to Venmo this year which made the reconciling of payments much easier.&lt;/li&gt;
&lt;li&gt;Adding more products completely broke our sales checkout process and I did a &lt;a href=&#34;https://www.thingelstad.com/2025/11/09/realized-we-had-some-big.html&#34;&gt;refactor of that&lt;/a&gt; for Sunday that was so much better.&lt;/li&gt;
&lt;li&gt;For years I&amp;rsquo;ve wanted to create a handout to include with the candles for folks that have questions. I finally made this for Sunday and also have it online — &lt;a href=&#34;http://files.thingelstad.com/things4good/fundraiser-2025/burn-instructions.pdf&#34;&gt;Burn Instructions&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are already busy thinking of improvements and how we will run next year&amp;rsquo;s sale! We hope to see you there! Sign up to our &lt;a href=&#34;https://family.thingelstad.com&#34;&gt;family mailing list&lt;/a&gt; and check &amp;ldquo;Candle Fundraiser&amp;rdquo; to be notified.&lt;/p&gt;
&lt;p&gt;Also see &lt;a href=&#34;https://www.thingelstad.com/2025/11/16/things-good-candle-fundraiser-results.html&#34;&gt;2025 Fundraiser Results&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Plausible Analytics Plug-in for Micro.blog</title>
      <link>https://www.thingelstad.com/2025/10/06/plausible-analytics-plugin-for-microblog.html</link>
      <pubDate>Mon, 06 Oct 2025 19:42:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/10/06/plausible-analytics-plugin-for-microblog.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using &lt;a href=&#34;https://plausible.io/&#34;&gt;Plausible Analytics&lt;/a&gt; for over a year and have been using the &lt;a href=&#34;https://github.com/LukasRos/plugin-plausible&#34;&gt;Plausible Analytics Plug-in&lt;/a&gt; created by &lt;a href=&#34;https://micro.blog/lukas&#34;&gt;@lukas&lt;/a&gt; to add it to my blog. It hasn&amp;rsquo;t been updated for a long time and the embed code, while still working, is very outdated. I finally decided to take a few minutes to fork that plug-in and create my own &lt;a href=&#34;https://github.com/jthingelstad/microdotblog-plausible&#34;&gt;Plausible Analtyics 2&lt;/a&gt; for micro.blog.&lt;/p&gt;
&lt;p&gt;It now uses the current code snippet and also sports a Plausible icon as well. Plus, I now have a plug-in in the directory. If you use Plausible Analytics on micro.blog I would definitely suggest switching.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/a3a97c4d51.png&#34; width=&#34;600&#34; height=&#34;429&#34; alt=&#34;Micro.blog plug-in directory showing four available plug-ins including Plausible Analytics 2, Video streaming, Open Graph basics, and Chess.com Profile&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/09/27/drivethru-metrics-needs-some-sparklines.html</link>
      <pubDate>Sat, 27 Sep 2025 10:30:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/09/27/drivethru-metrics-needs-some-sparklines.html</guid>
      <description>&lt;p&gt;Drive-thru metrics. Needs some &lt;a href=&#34;https://www.edwardtufte.com/notebook/sparkline-theory-and-practice-edward-tufte/&#34;&gt;sparklines&lt;/a&gt;. Too many numbers, not enough easy to read lines.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/da0ff44240.jpg&#34; width=&#34;600&#34; height=&#34;449&#34; alt=&#34;Acer monitor mounted on wall showing fast food drive-thru performance dashboard with timers, averages, and service metrics.&#34;&gt;
</description>
    </item>
    
    <item>
      <title>Blogging with Messages</title>
      <link>https://www.thingelstad.com/2025/08/18/blogging-with-messages.html</link>
      <pubDate>Sun, 17 Aug 2025 15:20:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/08/18/blogging-with-messages.html</guid>
      <description>&lt;div class=&#34;chat&#34;&gt;
&lt;div class=&#34;action&#34;&gt;Conversation named &#34;Blogging with Messages&#34;.&lt;/div&gt;
&lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
&lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;Hey Matt,&lt;/p&gt;
&lt;p&gt;An ask for Tiny Theme new feature to consider.&lt;/p&gt;
&lt;p&gt;There is a general case where I would like to blog and include a conversation. Two examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mimicking a back and forth in Messages&lt;/li&gt;
&lt;li&gt;Sharing a dialog with an AI and the back and forth&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&#34;author left&#34;&gt;Matt&lt;/div&gt;
&lt;div class=&#34;message left&#34;&gt;That seems like a pretty cool idea!&lt;/div&gt;
&lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
&lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;Ideally I&amp;rsquo;d like to be able to show:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &amp;ldquo;left side&amp;rdquo; versus &amp;ldquo;right side&amp;rdquo; component of the dialog.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;name&amp;rdquo; of the author of that side.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&#34;author left&#34;&gt;Matt&lt;/div&gt;
&lt;div class=&#34;message left&#34;&gt;
&lt;p&gt;Great! Add this to your &lt;strong&gt;Custom CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
&lt;div class=&#34;message right&#34;&gt;
That is great! I added author styling as well which looks really good. Oh, and an action as well.
&lt;/div&gt;
&lt;div class=&#34;author left&#34;&gt;Matt&lt;/div&gt;
&lt;div class=&#34;message left&#34;&gt;
That looks great. Awesome idea with the author&#39;s name.
&lt;/div&gt;
&lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
&lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;Cool. I put &lt;a href=&#34;https://files.thingelstad.com/posts/2025/chat.css&#34;&gt;chat.css&lt;/a&gt; up so people can play with it.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;action&#34;&gt;Conversation ended.&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/08/02/i-upgraded-to-chatgpt-pro.html</link>
      <pubDate>Sat, 02 Aug 2025 17:21:47 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/08/02/i-upgraded-to-chatgpt-pro.html</guid>
      <description>&lt;p&gt;I upgraded to ChatGPT Pro a couple months ago and it has been amazing. Now I upgraded to Claude Max as well, mostly because Claude Code is that useful. I use both for research, ChatGPT is way better for images and creative. Claude for building projects and executing things. Incredible stuff. 👨‍💻&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/07/26/updownio-affiliate-link-is-a.html</link>
      <pubDate>Sat, 26 Jul 2025 20:36:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/07/26/updownio-affiliate-link-is-a.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://updown.io/r/LWiEL&#34;&gt;updown.io&lt;/a&gt; (affiliate link) is a great example of a near perfect web service. Simple to use. Clear and easy pricing — pay only for what you use. Fast and easy to setup. I started monitoring &lt;a href=&#34;https://www.poap2rss.com&#34;&gt;POAP2RSS&lt;/a&gt; with it tonight and was just reminded how great it is. See &lt;a href=&#34;https://updown.io/p/3hibx&#34;&gt;POAP2RSS Status&lt;/a&gt;. 👏👏👏&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/07/20/working-with-claude-code-to.html</link>
      <pubDate>Sun, 20 Jul 2025 08:47:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/07/20/working-with-claude-code-to.html</guid>
      <description>&lt;p&gt;Working with Claude Code to get the deployment working for what I created yesterday. In many ways the deployment to AWS is much harder than creating the thing!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/45d7cb29dd.png&#34; width=&#34;600&#34; height=&#34;408&#34; alt=&#34;Terminal window showing Claude Code agent debugging an AWS Lambda Docker manifest format error, writing a simplified Dockerfile using Python 3.9 runtime.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/07/06/first-time-for-me-submitted.html</link>
      <pubDate>Sun, 06 Jul 2025 16:08:36 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/07/06/first-time-for-me-submitted.html</guid>
      <description>&lt;p&gt;First time for me — &lt;a href=&#34;https://github.com/buttondown/rssrssrssrss/pull/9&#34;&gt;submitted a pull request&lt;/a&gt; to a public repo to make a small change that I&amp;rsquo;m hoping gets merged for &lt;a href=&#34;https://www.rssrssrssrss.com&#34;&gt;rssrssrssrss&lt;/a&gt;. ￼😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Vibe Coding POAP2RSS</title>
      <link>https://www.thingelstad.com/2025/07/06/vibe-coding-poaprss.html</link>
      <pubDate>Sun, 06 Jul 2025 12:05:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/07/06/vibe-coding-poaprss.html</guid>
      <description>&lt;p&gt;Ever since I created my first POAP drop I&amp;rsquo;ve wished that I could see claims of POAPs in Feedbin. What a great way to keep informed of the tokens that people are claiming! As I created more POAPs I realized that I also would like to subscribe to other people and see what POAP events they are claiming. And as I played around more with them I realized it would be so useful to be able to hook POAP claims up to automation platforms like IFTTT, Zapier, or Make — all of which support RSS out of the box!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been going deep on all things AI and I wanted to experience vibe coding for real versus just reading blog posts about others doing it. I’m a big believer in playing directly with tech to learn it. So, why not try creating the thing I&amp;rsquo;ve always wanted with POAPs by vibe coding it?&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve now successfully created, and already an extensive user of, &lt;strong&gt;&lt;a href=&#34;https://www.poap2rss.com&#34;&gt;POAP2RSS&lt;/a&gt;&lt;/strong&gt;! This simple service allows you to subscribe to RSS feeds for POAP events as well as addresses of collectors. It is magical and I love it already!&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t know what Vibe Coding is? Let&amp;rsquo;s keep the vibe and ask AI.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;What is vibe coding?&lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;GPT-4o&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
Vibe coding is a modern approach to software development that emphasizes creativity and collaboration with AI tools. It involves expressing coding intentions in plain language, allowing AI to transform these ideas into executable code, often without deep technical knowledge from the user. This method focuses on maintaining a creative flow and minimizing micromanagement in the coding process. The term was popularized by AI researcher Andrej Karpathy and is gaining traction as a way to democratize coding and make it more accessible to non-programmers. &lt;a href=&#34;https://x.com/karpathy/status/1886192184808149383?lang=en&#34;&gt;Karpathy&lt;/a&gt; &lt;a href=&#34;https://www.ibm.com/think/topics/vibe-coding&#34;&gt;IBM&lt;/a&gt; &lt;a href=&#34;https://simonwillison.net/2025/Mar/19/vibe-coding/&#34;&gt;Willison&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Let&amp;rsquo;s go! 🔥&lt;/p&gt;
&lt;h3 id=&#34;vibe-prototyping&#34;&gt;Vibe Prototyping&lt;/h3&gt;
&lt;p&gt;First I’m going to share that I only realized I was prototyping a solution in retrospect. What I really did was go to Claude and start a new conversation.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;Please create a Python function to run in AWS Lambda that will retrieve the list of collectors for a comma separated list of POAP Event ID&#39;s and then merge them into a single RSS feed. The items in the feed should include information for each token minted.&lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;I&#39;ll create a Python function for AWS Lambda that retrieves POAP collectors and generates an RSS feed. This will use the POAP API to fetch token information and create a properly formatted RSS feed.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;It created a new artifact and put about 250 lines of Python code in there. Voila! Now what?&lt;/p&gt;
&lt;p&gt;Let me qualify my skills here. I can bang around in most languages reasonably well. I can navigate Python the best. I can read code very well. I’m pretty basic when it comes to writing it. I’m a solid scripter but can quickly get out of my league. This Python code was better than anything I could do but I was able to navigate it easily enough.&lt;/p&gt;
&lt;p&gt;But what do I do now? I have an AWS account and have setup S3 buckets. I&amp;rsquo;ve never setup a Lambda function though. Let the vibes flow…&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;How do I setup the Lambda function?&lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;I&#39;ll guide you through setting up the Lambda function step by step. Here are the complete instructions:&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I got another artifact now with step-by-step directions on what to do in the AWS Console. Brilliant!&lt;/p&gt;
&lt;p&gt;I followed the directions and then actually ran a test, which Claude told me how to do.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;I ran this with a known valid event_id and I got this error:&lt;br/&gt;
&lt;br/&gt;
&lt;code&gt;{ &#34;statusCode&#34;: 404, &#34;body&#34;: &#34;{\&#34;error\&#34;: \&#34;No tokens found for provided event IDs\&#34;}&#34; }&lt;/code&gt;&lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;The issue is likely with the POAP API endpoint or authentication. Let me search for the current POAP API documentation to see what&#39;s changed.&lt;br/&gt;
…&lt;br/&gt;
Great! I found the issue. The POAP API now requires API keys for &lt;a href=&#34;https://documentation.poap.tech/docs/authentication&#34;&gt;authentication&lt;/a&gt;, and the endpoint documentation shows that you need to include the header &lt;code&gt;X-API-Key={apikey}&lt;/code&gt; where &lt;code&gt;{apikey}&lt;/code&gt; is your unique API key. Also, the correct endpoint for getting event tokens is &lt;code&gt;/event/{id}/poaps&lt;/code&gt; which returns paginated info on the token holders including the token ID, POAP transfer count, and the owner&#39;s information like address, amount of POAPs owned, and ENS.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Claude and I went back and forth like this for a while with me running the Lambda, an error coming back, me sharing the error back to Claude, it making updates and me applying those. And then…&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;it worked!&lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;Excellent! 🎉 That&#39;s fantastic news! You now have a fully working POAP RSS feed generator.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I hit a big stumble getting routing working through API Gateway to the Lambda function and Claude corrected me when I started going the wrong way.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;CORS is not enabled. Is that a problem?&lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;CORS isn&#39;t the issue here! CORS only affects browser-based requests when JavaScript tries to access your API from a different domain. Since you&#39;re getting a response (even if it&#39;s an error), the request is reaching your Lambda function fine.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Okay Claude — got it! 🫡&lt;/p&gt;
&lt;p&gt;After this session I had a working prototype. The code was ugly. It turned out we needed to include OAuth support and added that much later. The design of the API endpoint was bad but it was working. It only took about an hour but I had explored this surface area deeply. I knew broadly what the service should look like, what some of the edge cases were going to be, and what was required to integrate with the POAP API.&lt;/p&gt;
&lt;p&gt;Now to come back later and turn this into something that would be real. I was about &lt;strong&gt;1 hour&lt;/strong&gt; into exploring this topic and now knew a lot.&lt;/p&gt;
&lt;p&gt;I deleted the Lambda function and all of the configuration I had created. It was created trial and error and I wanted to now be more rigorous.&lt;/p&gt;
&lt;h3 id=&#34;expand-features&#34;&gt;Expand Features&lt;/h3&gt;
&lt;p&gt;Creating the prototype gave me a bunch of notes and a much better understanding of what was going to be needed to make the solution work right. I wanted to make sure I wasn&amp;rsquo;t missing some things so I decided to turn to ChatGPT o-3 and Deep Research to explore the necessary features.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;Please help me explore and expand the features for POAP2RSS service that provides an RSS feed to subscribe to claims from a POAP event. The POAP events do not have an RSS feed, so I want to create a service that provides an RSS feed for a user using the POAP API to populate the data.&lt;/p&gt;
&lt;p&gt;I’m already considering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Only include entries for most recent 20 claims&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If no claims in 4 weeks, add an entry that states that and suggests the user remove the feed. Change this for every additional week and change the RSS feed ID so it will show up as new to the user.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provide ENS names in the RSS item and set the Author of the item to the ENS name or address that claimed the token. Set the date and time of the item to the collected time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add an initial item to all feeds that shows the description of the POAP Event and uses the timestamp for the event.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use DynamoDB to cache results from POAP API for 15 minutes&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;author left&#34;&gt;GPT-4o Deep Research&lt;/div&gt;
&lt;div class=&#34;message left&#34;&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Could you share more about the user audience and the intended use cases for the POAP2RSS service? For example, is it for collectors to track participation, for event organizers to monitor engagement, or for public observers? Also, are you targeting a particular feed reader or platform? This will help tailor feature ideas to your goals.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;It is for any user including all three of those, however I suspect it will be most frequently used by the creator of the POAP event to monitor claims. I also expect it will be used in Automation &amp;ndash; for example to send a message anytime a claim is made by connecting the RSS feed to something like Zapier. The RSS feed should be fully standard so it can be used in any way desired.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;GPT-4o Deep Research&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
&lt;p&gt;Thanks, that context is very helpful. I&amp;rsquo;ll explore and expand on potential features for the POAP2RSS service that creates a standard RSS feed from POAP event claims, targeting usability for event creators, collectors, and automation tools like Zapier. I&amp;rsquo;ll also examine best practices from similar services and technical considerations for maximizing compatibility and reliability.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll get back to you shortly with ideas and suggestions.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;o-3 then went off for about 10 minutes to do some research. I decided to watch it and had a real chuckle when I noticed that Deep Research was reading my own blog! It turns out over the years I&amp;rsquo;ve written about things that POAP could add &lt;a href=&#34;https://www.thingelstad.com/2023/01/14/poap-wishlist.html&#34;&gt;including RSS feed support&lt;/a&gt;. Actually &lt;a href=&#34;https://www.thingelstad.com/2025/01/05/poap-rss-awesome.html&#34;&gt;multiple times&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;After this was done I had a &lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/blob/main/docs/service%20description.md&#34;&gt;full feature description&lt;/a&gt; for POAP2RSS!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I read through it all and felt together we had vibed the right set of things to consider in creating this solution. Now to make this thing work!&lt;/p&gt;
&lt;h3 id=&#34;create-service&#34;&gt;Create Service&lt;/h3&gt;
&lt;p&gt;With the features of POAP2RSS now figured out it was time to build the solution. I was comfortable with how Claude had worked for this Lambda function in the prototype so I went back to Claude and attached the full document for the features along with a prompt to code it.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;I&amp;rsquo;m attaching a description for a service I would like to create called POAP2RSS. I would like you to write the Lambda function that would meet these requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Relevant information&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Please write this using Python and structure it for a Lambda function.&lt;/li&gt;
&lt;li&gt;It is okay to use Python packages such as Requests, or others to make the code more manageable and readable.&lt;/li&gt;
&lt;li&gt;Make sure to include relevant information for logging to Cloudwatch.&lt;/li&gt;
&lt;li&gt;Note the caching requirements included and the use of DynamoDB.&lt;/li&gt;
&lt;li&gt;The POAP API requires an API token. I have obtained a token from POAP and it can be provided via an environment variable.&lt;/li&gt;
&lt;li&gt;The POAP API requires an authentication token. I have the necessary Client ID and Client Secret and can be provided by an environment variable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Regarding authentication&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here is an example from POAP to retrieve an authentication token.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl --location --request POST 
  --url &amp;#39;https://auth.accounts.poap.xyz/oauth/token&amp;#39; 
  --header &amp;#34;Content-Type: application/json&amp;#34; 
  -data &amp;#39;{
  &amp;#34;audience&amp;#34;: &amp;#34;https://api.poap.tech&amp;#34;,
  &amp;#34;grant_type&amp;#34;: &amp;#34;client_credentials&amp;#34;,
  &amp;#34;client_id&amp;#34;: &amp;#34;$clientid&amp;#34;,
  &amp;#34;client_secret&amp;#34;: &amp;#34;$clientsecret&amp;#34;   }&amp;#39;
&lt;/code&gt;&lt;/pre&gt;  &lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
&lt;p&gt;Looking at your POAP2RSS service requirements, I&amp;rsquo;ll create a comprehensive Lambda function that implements all the specified features. This will be a substantial implementation, so let me build this as a complete solution.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Claude&amp;rsquo;s comment on &amp;ldquo;substantial implementation&amp;rdquo; made me chuckle.&lt;/p&gt;
&lt;p&gt;I had a big miss in my ask though — I never told it what URL POAP2RSS would run on and what the path for the endpoints should be! Ugh.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;I forgot to tell you the URL that this service will run on. Please use the hostname &lt;code&gt;app.poap2rss.com&lt;/code&gt; and then put the API (or RSS feeds) endpoints at &lt;code&gt;/event&lt;/code&gt; and &lt;code&gt;/address&lt;/code&gt; instead of in a &lt;code&gt;/feed&lt;/code&gt; directory.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
&lt;p&gt;Perfect! I&amp;rsquo;ve updated the Lambda function to use the correct hostname and endpoint structure:&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This was a little interesting to me since an actual developer working with me would have &lt;strong&gt;never&lt;/strong&gt; just assumed they knew this. They would have stopped and requested clarification since this is such an obvious miss in the request.&lt;/p&gt;
&lt;p&gt;This version of POAP2RSS had more complexity with the caching in DynamoDB. I needed a good set of documentation to know how to create everything in AWS Console.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
&lt;p&gt;Excellent. Please create a document with the instructions to configure the necessary services in the AWS console.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Claude&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
&lt;p&gt;I&amp;rsquo;ve created a comprehensive AWS setup guide that covers all the necessary services and configurations for deploying your POAP2RSS service.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;With that Claude created a seven step detailed &lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/blob/main/docs/aws_setup_instructions.md&#34;&gt;deployment document&lt;/a&gt;. Nice!&lt;/p&gt;
&lt;p&gt;At some point here I hit a significant issue with the SSL Certificate being configured right to route through API Gateway and on to the Lambda function. I kept getting issues with the certificate being incorrect. This blocked me for about an hour as I was trying to debug things. I finally found that I had the Cloudfront configuration incorrect and pointing to the wrong resources. Ugh!&lt;/p&gt;
&lt;p&gt;With that issue solved I had a fully deployed service and it was working exactly how I wanted it to work. Notable to me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OAuth and API keys were never even something I needed to consider, it just worked.&lt;/li&gt;
&lt;li&gt;If Claude could have talked directly to the AWS APIs it could have set this up &lt;em&gt;way&lt;/em&gt; faster than I could. I could have had it create a Cloud Formation script as an alternative.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This round took me about &lt;strong&gt;2 hours&lt;/strong&gt; to get working entirely.&lt;/p&gt;
&lt;h3 id=&#34;get-professional&#34;&gt;Get Professional&lt;/h3&gt;
&lt;p&gt;I now had POAP2RSS working and working well. I now wanted to get this cleaned up and something I could maintain. I created a new repo in Github for POAP2RSS and moved the prompts, docs, and source into the repo.&lt;/p&gt;
&lt;p&gt;I now wanted to explore what I could do with OpenAI Codex. I attached Codex to the code and asked it. (I’m abbreviating Codex&amp;rsquo;s responses. It is fairly verbose and detailed and would be too much to include all of. It also has complicated buttons and links that are hard to replicate.)&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
Familiarize yourself with the repo.
  &lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Codex&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
The repository appears ready for deployment with AWS resources, focusing on delivering real-time POAP claim data through standard RSS feeds. The main Python Lambda implementation is self-contained and designed for use in an AWS environment with caching via DynamoDB and POAP API calls authenticated through environment variables.
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Codex operates much differently. It creates a whole development environment for every ask, gets all the code from the repo, and does whatever it needs. I then asked it a really general question.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
look for bugs in the lambda function
  &lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Codex&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
&lt;p&gt;&lt;strong&gt;Potential bugs in &lt;code&gt;src/poap2rss_lambda.py&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Typo in channel description&lt;/strong&gt;: The RSS channel description is spelled “Acvitity” instead of “Activity.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTML in item descriptions gets escaped&lt;/strong&gt;: The code builds HTML snippets for RSS descriptions but assigns them directly to &lt;code&gt;.text&lt;/code&gt;, causing &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; and other tags to be escaped rather than rendered.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incorrect link target for claimant address&lt;/strong&gt;: Claim items link to &lt;code&gt;https://collectors.poap.xyz/scan/{display_name}&lt;/code&gt;. If &lt;code&gt;display_name&lt;/code&gt; is shortened or an ENS name, the URL may not resolve properly.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These changes will correct output text and ensure the RSS feed renders HTML content and links reliably.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I thought it was hilarious that Claude had made a typo in the description and indeed it had. That was simple enough. The CDATA escaping of HTML in the descriptions was a notable miss for Claude, and frankly even for o-3 to miss in the features. Nice catch!&lt;/p&gt;
&lt;p&gt;I sequently asked it to fix each of these issues and it issued a pull request for each one.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/pull/3&#34;&gt;Fix description typo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/pull/2&#34;&gt;Use CDATA for HTML descriptions in RSS items&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/pull/1&#34;&gt;Fix claimant link to use owner address&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I reviewed and merged each of these pull requests.&lt;/p&gt;
&lt;p&gt;Very cool! 🔥 I now have a fully working service and a reasonably clear code base. I wasn&amp;rsquo;t entirely happy though with the HTML that was being put into the RSS feed descriptions. This is where I hit some &amp;ldquo;fit and finish&amp;rdquo; work that I ultimately did not find vibe coding a good approach for. I started to ask Codex &amp;ldquo;Please reformat the descriptions for events to look like…&amp;rdquo; and realized it was more work for me to ask Codex than to just go into the code and cleanup the strings myself.&lt;/p&gt;
&lt;p&gt;I did some actual coding here. 🛠️ It was fun to tweak and make it just what I wanted. I found a number of things that needed to be cleaned up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The descriptions of all events needed to be cleaned up.&lt;/li&gt;
&lt;li&gt;The RSS item GUIDs that Claude had used were not URL&amp;rsquo;s as they should be so I fixed all of those.&lt;/li&gt;
&lt;li&gt;A number of the links were not right so I cleaned them up.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I now have a fully working service and it is even sending information as I would want it!&lt;/p&gt;
&lt;h3 id=&#34;build-the-website&#34;&gt;Build the website!&lt;/h3&gt;
&lt;p&gt;Early in the project I had Claude create an &lt;code&gt;index.html&lt;/code&gt; that I could drop into the &lt;code&gt;www&lt;/code&gt; directory to have a simple website. It was okay but not at all the design I wanted. So, the next day I decided that this was a perfect ask for Codex so I asked it to build me a website.&lt;/p&gt;
&lt;div class=&#34;chat&#34;&gt;
  &lt;div class=&#34;author right&#34;&gt;Me&lt;/div&gt;
  &lt;div class=&#34;message right&#34;&gt;
The www directory contains the website for POAP2RSS. For this request work only inside that directory.
&lt;p&gt;I would like to create a new website for POAP2RSS. The website should have the following pages which should all be included in the primary navigation of the website.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;index.html: the landing page for the project&lt;/li&gt;
&lt;li&gt;about.html: information about the project, why it exists, who created it&lt;/li&gt;
&lt;li&gt;changelog.html: to share changes about the project&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally there should be.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dormant.html: the page POAP2RSS feeds direct users to when there is no activity in the feed and they should consider unsubscribing from the feed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All pages of the site should include references to Plausible for analytics. The tag is:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;script defer data-domain=&amp;quot;poap2rss.com&amp;quot; src=&amp;quot;https://plausible.io/js/script.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;For design and user experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I would like to use the Pico CSS framework found at &lt;code&gt;https://picocss.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I would like you to lean on the colors and feel of the POAP website at &lt;code&gt;https://poap.xyz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A simple and clean look is right for a project that has those same principles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You will find two HTML pages already in the www directory. The documentation in those files is good but they can be replaced with the new website.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&#34;author left&#34;&gt;Codex&lt;/div&gt;
  &lt;div class=&#34;message left&#34;&gt;
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Replaced the landing page with a Pico CSS design and added site navigation linking the new pages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provided project background and goals on a dedicated About page&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Created a simple Changelog outlining initial release updates&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated the dormant feed notice to use the same layout and encourage unsubscribing&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Wonderful! I merged in the &lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/pull/6&#34;&gt;Redesign POAP2RSS website&lt;/a&gt; and it was great.&lt;/p&gt;
&lt;p&gt;I found myself in another &amp;ldquo;fit and finish&amp;rdquo; situation where it was much easier for me to just edit the HTML to what I wanted rather than asking Codex to do it for me. So I tweaked away and in not much time had a site up and running on &lt;a href=&#34;https://www.poap2rss.com&#34;&gt;www.poap2rss.com&lt;/a&gt; that made me happy!&lt;/p&gt;
&lt;h3 id=&#34;good-vibes&#34;&gt;Good Vibes!&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve been playing with this service now a bit over the holiday weekend. It is working great. I&amp;rsquo;ve already used it to do a ton of automation for the &lt;a href=&#34;https://612.poapchallenge.com&#34;&gt;612 POAP Challenge&lt;/a&gt;. I&amp;rsquo;ve added subscriptions to several people that collect POAPs which is super fun.&lt;/p&gt;
&lt;p&gt;The experience of Vibe Coding this was incredible. It took something that was beyond my capabilities and made it accessible. I shared the project with someone that knows and they said the code looked like it would have taken &amp;ldquo;2 days&amp;rdquo; to create the source. I got this done much faster, and did a lot more than just the code.&lt;/p&gt;
&lt;p&gt;It also highlighted for me how this approach isn&amp;rsquo;t just about the code. I used AI to help create the stories as well as create the documentation and website. Those were huge helps.&lt;/p&gt;
&lt;p&gt;I’m tracking &lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/issues&#34;&gt;open issues&lt;/a&gt; so I have some items that I&amp;rsquo;ll likely use to test Cursor or do further work with Codex.&lt;/p&gt;
&lt;p&gt;Overall, this was a very rewarding project to create and I learned a lot from making it a reality.&lt;/p&gt;
&lt;p&gt;PS: Thank you to &lt;a href=&#34;https://mattlangford.com&#34;&gt;Matt&lt;/a&gt; for the slick message styling CSS for &lt;a href=&#34;https://tiny.micro.blog&#34;&gt;Tiny Theme&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/07/05/worked-with-openai-codex-this.html</link>
      <pubDate>Sat, 05 Jul 2025 07:25:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/07/05/worked-with-openai-codex-this.html</guid>
      <description>&lt;p&gt;Worked with &lt;a href=&#34;https://openai.com/index/openai-codex/&#34;&gt;OpenAI Codex&lt;/a&gt; this morning and &lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS/pull/6&#34;&gt;redesigned the website&lt;/a&gt; for &lt;a href=&#34;https://www.poap2rss.com&#34;&gt;POAP2RSS&lt;/a&gt;. It gave a clean structure as requested that I could fill in and make better.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/07/03/ive-created-my-first-project.html</link>
      <pubDate>Thu, 03 Jul 2025 21:50:01 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/07/03/ive-created-my-first-project.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve created my first project using AI to write nearly all of the code with me!&lt;/p&gt;
&lt;p&gt;Introducing &lt;strong&gt;&lt;a href=&#34;https://www.poap2rss.com&#34;&gt;POAP2RSS&lt;/a&gt;&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;For years I&amp;rsquo;ve wanted to get updates for POAP events and users in RSS. Now with the help of AI I&amp;rsquo;ve created it!&lt;/p&gt;
&lt;p&gt;Still cleaning to do. Check out the &lt;a href=&#34;https://github.com/jthingelstad/POAP2RSS&#34;&gt;code on Github&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>How to Newsletter: Lessons from 300 Issues of the Weekly Thing</title>
      <link>https://www.thingelstad.com/2025/05/06/how-to-newsletter-lessons-from.html</link>
      <pubDate>Tue, 06 May 2025 20:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/05/06/how-to-newsletter-lessons-from.html</guid>
      <description>&lt;em&gt;
&lt;p&gt;This is an article version of the presentation I gave at Minnebar 19 on &lt;a href=&#34;https://www.thingelstad.com/2025/04/28/minnebar-how-to-newsletter-session.html&#34;&gt;How to Newsletter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To create this I used &lt;a href=&#34;https://apps.apple.com/us/app/whisper-memos-speech-to-text/id6443658039&#34;&gt;Whisper Memos&lt;/a&gt; on my iPhone to capture the transcription. I did some general editing to remove some preamble and ad hoc dialog, did a read through to correct any obvious issues, and added images for each of my slides. I then asked GPT o3 to use the transcription to create an article using this prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I have a raw transcript of a talk. Please convert it into a well-structured written article that preserves the speaker&amp;rsquo;s voice, tone, and all content exactly as it was spoken&amp;ndash;do not omit or add anything. Improve readability by correcting grammar and sentence flow, organizing content into appropriate paragraphs, and inserting section breaks that follow the speaker&amp;rsquo;s original structure. Do not turn this into a summary or reinterpret the ideas. Use images from the transcript as section markers when available. Maintain the informal, personal tone of the speaker throughout.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not use bullet points unless the speaker clearly uses them.&lt;/li&gt;
&lt;li&gt;Preserve all first-person phrasing and casual language.&lt;/li&gt;
&lt;li&gt;Remove filler words like &amp;lsquo;so&amp;rsquo;, &amp;rsquo;like&amp;rsquo;, and &amp;lsquo;kind of&amp;rsquo; unless they assist readability.&lt;/li&gt;
&lt;li&gt;Ensure the article can stand alone for publication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;With a proofread here is that version of this presentation.&lt;/p&gt;
&lt;/em&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/98897cefa6.jpg&#34; width=&#34;600&#34; height=&#34;449&#34; alt=&#34;A speaker is presenting a session titled How to Newsletter in front of an audience.&#34;&gt;
&lt;p&gt;What I wanted to talk about is &amp;ldquo;How To Newsletter.&amp;rdquo; I&amp;rsquo;ve been sending a newsletter now for eight years, and I&amp;rsquo;ve learned a lot in that process. I thought it&amp;rsquo;d be fun to share that knowledge. I actually planned to do this session in 2023&amp;ndash;so if you&amp;rsquo;re thinking, &amp;ldquo;Didn&amp;rsquo;t he already do this?&amp;rdquo;&amp;ndash;I had to cancel it that year. Now we&amp;rsquo;re two years later, and I&amp;rsquo;ve got two more years of learnings and 50 more issues of my newsletter under my belt.&lt;/p&gt;
&lt;p&gt;As I put this talk together, I realized it&amp;rsquo;s not just about how to newsletter. It could also be about how to run a complex side project, or how to consistently do something for eight years. It&amp;rsquo;s also about how to apply automation to make that kind of work easier. So, depending on what you&amp;rsquo;re looking for, you might take away more than just newsletter tips&amp;ndash;this is also about managing a long-term, detailed endeavor.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.002.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A presentation slide introduces Jamie, highlighting a career as a technologist, CTO experience, board membership, a family in Minneapolis, blogging activities, and a photograph of Jamie with a bird on his hat.&#34;&gt;
&lt;p&gt;First, who am I? I&amp;rsquo;m Jamie Thingelstad. I&amp;rsquo;m a passionate technologist. I&amp;rsquo;ve been into tech since I was a kid, started programming BASIC on a TRS-80&amp;ndash;you can figure out my age from that&amp;ndash;and I&amp;rsquo;ve always loved building things. I&amp;rsquo;ve had a 20+ year career as a Chief Technology Officer, came into the field as the web was being born, built a couple of companies, and eventually started building things with groups to do even bigger work.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m on the board of the Minnesota Technology Association and previously served on the board of Minnestar. I live in Minneapolis with my wonderful family. I&amp;rsquo;ve also been a blogger for 20+ years&amp;ndash;which plays a big role when we talk about newsletters&amp;ndash;and I&amp;rsquo;ve been publishing &lt;em&gt;The Weekly Thing&lt;/em&gt; for eight years now.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.003.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;The image showcases two emails titled Weekly Thing and Weekly Thing 316, highlighting newsletter content along with a logo and contact details.&#34;&gt;
&lt;p&gt;Why a newsletter? What led me to start &lt;em&gt;The Weekly Thing&lt;/em&gt;? The image here shows the very first issue from May 13, 2007&amp;ndash;it looked totally different from current issues. The one shown here is issue 316 from two weeks ago.&lt;/p&gt;
&lt;p&gt;Back in 2017, newsletters were having a moment. People were launching them, companies were seeing them as a way to go directly to inboxes and bypass platforms. That intrigued me. I&amp;rsquo;d been blogging for over a decade and wanted to play with the newsletter medium. But then came the question: what would I put in it?&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve always been a voracious consumer of online content. I used bookmarking services like del.icio.us (anyone remember that?) and later Pinboard. My first bookmark is from August 2005. At one point, I thought about making a link blog, but it didn&amp;rsquo;t vibe with me. So I combined that impulse with the newsletter idea and decided I&amp;rsquo;d curate and share content I found interesting each week.&lt;/p&gt;
&lt;p&gt;Importantly, I ignored most of the newsletter &amp;ldquo;growth hacks.&amp;rdquo; I&amp;rsquo;m cynical about stuff like that. I just wanted to share good content, without any tricks. I didn&amp;rsquo;t have a specific topic, but I committed to doing it for a year. Now, eight years later, it&amp;rsquo;s still a fun and meaningful project, and I feel like I&amp;rsquo;m giving back by sharing useful information.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.004.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A slide presents three steps for finding good content: using Feedbin and Safari Reading List, quickly reading and filtering, and curating with Pinboard tags.&#34;&gt;
&lt;p&gt;The first thing I had to solve: how do I find content? For me, it&amp;rsquo;s RSS. I&amp;rsquo;m a huge fan. I don&amp;rsquo;t get content from social media&amp;ndash;it&amp;rsquo;s all RSS feeds and readers like Feedbin and Unread. No algorithms. I scan headlines efficiently and ask one question: is this interesting?&lt;/p&gt;
&lt;p&gt;If yes, it goes into my Safari Reading List. From there, I narrow it down&amp;ndash;maybe 100 items become 10. Then I read them more closely. The final step is saving them to Pinboard, my bookmarking tool. It&amp;rsquo;s super fast, hasn&amp;rsquo;t seen a new feature in a decade, and that&amp;rsquo;s totally fine. I also tag links there to mark if they&amp;rsquo;re a &amp;ldquo;featured item&amp;rdquo; or just a &amp;ldquo;brief.&amp;rdquo; That tagging helps structure my newsletter.&lt;/p&gt;
&lt;p&gt;I also blog every week and include a photo I&amp;rsquo;ve taken that week&amp;ndash;no cheating from the archive! That addition pushes my creative side and makes each issue more personal.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.005.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A workflow presentation outlines a GTD method using OmniFocus TaskPaper templates along with key phases and deadlines.&#34;&gt;
&lt;p&gt;Now let&amp;rsquo;s talk about workflow. You can&amp;rsquo;t just have one OmniFocus task that says &amp;ldquo;Send newsletter&amp;rdquo;&amp;ndash;there&amp;rsquo;s way too much involved. I&amp;rsquo;ve practiced GTD (Getting Things Done) for over a decade, and I use OmniFocus with TaskPaper templates.&lt;/p&gt;
&lt;p&gt;Each issue is a full project, with variables like the issue number and date. I run a Shortcut that sets the new issue, defines the date, the range of days it covers, and then creates a project in OmniFocus. I like templates more than repeating projects because they let me make adjustments for each issue.&lt;/p&gt;
&lt;p&gt;There are four main phases: create content, curate content, build it, and finalize it. And I spend very little time on the assembly because almost all of it is automated.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.006.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A layout of various app icons, including an automation app and a series of colorful shortcut icons labeled with tasks, is shown against a white background.&#34;&gt;
&lt;p&gt;The key tool for automation? Shortcuts. You have it on your iPhone and Mac. I&amp;rsquo;ve built dozens of Shortcuts to run everything from creating sections to finalizing output. Each section returns Markdown. One Shortcut runs the list, combines them, and boom&amp;ndash;newsletter built.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.007.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A diagram illustrates an automation process for generating and managing content using various shortcuts and APIs, with a focus on building issues, setting sections, and hosting images.&#34;&gt;
&lt;p&gt;Here&amp;rsquo;s how it works. One main Shortcut runs an array of other Shortcuts. Each returns a Markdown section like intro, quote, featured, currently, etc. They can pull from APIs, my blog (via RSS), Pinboard, and Drafts. I store shared data in Data Jar&amp;ndash;a kind of lightweight, shared memory for Shortcuts.&lt;/p&gt;
&lt;p&gt;So when I say &amp;ldquo;build the issue,&amp;rdquo; it runs each section, combines the results, and I&amp;rsquo;ve got a finished draft ready to go. All of this is lightweight&amp;ndash;no Python, no compiling, just using built-in tools.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.008.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;The image outlines a toolchain consisting of various tools for content curation, building, assembly, sending, running, and orchestration, including apps like Feedbin, Shortcuts, Buttondown, OmniFocus, Safari, Drafts, Stripe, Pinboard, and Data Jar.&#34;&gt;
&lt;p&gt;Here&amp;rsquo;s my toolchain and why I use each part:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Feedbin&lt;/strong&gt;: This is where all my RSS feeds live&amp;ndash;around 300 of them. It&amp;rsquo;s fast, stable, and does exactly what I need. For $30 a year, it&amp;rsquo;s an incredible value. No fluff, just the right features.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unread&lt;/strong&gt;: This is the mobile app I use to actually read those feeds. It&amp;rsquo;s ridiculously fast and makes getting through content frictionless. I don&amp;rsquo;t want to waste time loading or tapping around.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safari&lt;/strong&gt;: Specifically for the Reading List. I like that it&amp;rsquo;s integrated across all my Apple devices, and it&amp;rsquo;s a really handy staging area between &amp;ldquo;that looks cool&amp;rdquo; and &amp;ldquo;this is newsletter-worthy.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pinboard&lt;/strong&gt;: The workhorse. I have over 15,000 links in there and it&amp;rsquo;s still lightning fast. It hasn&amp;rsquo;t been updated in years&amp;ndash;and I love that. No surprises. It&amp;rsquo;s rock solid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drafts&lt;/strong&gt;: This is where my text starts. It&amp;rsquo;s not a notes app. It&amp;rsquo;s a place where text goes to live temporarily, get processed, get acted upon. I have a system in there for my Currently section, where I jot down stuff throughout the week.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Jar&lt;/strong&gt;: A magical tool. Think of it like shared memory across Shortcuts. Shortcut A writes something, Shortcut B can read it. Without it, this whole thing would be way more complex to stitch together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shortcuts&lt;/strong&gt;: This is the engine. Every section of the newsletter is its own Shortcut. The Build script just stitches them together. It&amp;rsquo;s modular, easy to extend, and Apple keeps improving it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buttondown&lt;/strong&gt;: The sending platform. I used Mailchimp for a while, and it made me feel like I needed to be a marketer. Buttondown talks like a newsletter author. It supports Markdown, doesn&amp;rsquo;t try to get fancy with HTML, and keeps things straightforward.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OmniFocus&lt;/strong&gt;: My GTD backbone. I track everything in here, and it gives me clarity on what needs to be done and when.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stripe&lt;/strong&gt;: This is tied to Buttondown to handle Supporting Memberships. Super easy to set up, and now I&amp;rsquo;m raising funds for digital nonprofits through it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI&lt;/strong&gt;: New to the stack. I&amp;rsquo;m using it for help with subject lines, fortunes, and membership messaging. But always with control&amp;ndash;I want it to help, not replace my voice.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each piece of this toolchain plays a role. They&amp;rsquo;re like instruments in an orchestra, and together, they make this weekly project sustainable and honestly kind of delightful to run.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.009.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A slide titled Genuine Use of AI outlines tasks such as not rewriting styles, generating subject-line options, matching link themes, and supporting a membership program, alongside a screenshot of a tool interface.&#34;&gt;
&lt;p&gt;Let&amp;rsquo;s talk AI. I don&amp;rsquo;t use it to write for me&amp;ndash;I&amp;rsquo;m protective of my voice. But there are areas where it helps. One is creating the subject line. I give it instructions: avoid publication names, maybe use alliteration, avoid negative terms, and be fun. Then it suggests five options. I pick the one I like&amp;ndash;or modify it.&lt;/p&gt;
&lt;p&gt;I also use AI to generate a fortune at the end of each issue, based on that week&amp;rsquo;s themes. And the Supporting Membership emails? Those are written in a different voice, and I let AI take more control there. It&amp;rsquo;s actually kind of fun to create a character out of that voice&amp;ndash;something that feels separate from me.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.010.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A presentation slide outlines strategies for sustaining a newsletter, highlighting scheduled breaks, cutoff times, and experimental approaches.&#34;&gt;
&lt;p&gt;Sustainability over eight years requires boundaries. I cut off new content Friday night, giving me time to assemble and write. I also build buffers&amp;ndash;if I miss Saturday, it goes Sunday.&lt;/p&gt;
&lt;p&gt;And I take real breaks: July and August, plus mid-December through mid-January. These breaks keep me from burning out. I think I&amp;rsquo;d have quit long ago if I didn&amp;rsquo;t step away like that.&lt;/p&gt;
&lt;p&gt;And this is a big one&amp;ndash;I don&amp;rsquo;t look at analytics. I don&amp;rsquo;t track opens or clicks. I don&amp;rsquo;t want to be influenced by what gets engagement. I&amp;rsquo;m doing this to share what I find valuable. I don&amp;rsquo;t want to chase metrics. Every week, some people unsubscribe. Every week, new people join. That&amp;rsquo;s the rhythm. And it&amp;rsquo;s okay.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.011.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A presentation slide details fundraising for Second Harvest, outlines a community initiative called Weekly Thing Forum on Ponder, and highlights an AI use case with 20 members contributing approximately $560.&#34;&gt;
&lt;p&gt;I&amp;rsquo;ve also treated the newsletter like a playground. During the pandemic, I raised over $12,000 for Second Harvest in Weekly Thing 141. I&amp;rsquo;ve tried launching a forum using Ponder. Community engagement is tough, especially via email. People see a newsletter as a message, not a conversation starter.&lt;/p&gt;
&lt;p&gt;And I&amp;rsquo;ve started Supporting Memberships. Each year, I pick a nonprofit to support. This year, it&amp;rsquo;s Creative Commons&amp;ndash;we&amp;rsquo;re on track to raise around $560. Next year I&amp;rsquo;m thinking Electronic Frontier Foundation.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/how-to-newsletter.012.png&#34; width=&#34;600&#34; height=&#34;337&#34; style=&#34;border: 3px grey outset;&#34; alt=&#34;A slide lists suggestions such as automating tasks, shipping on a rhythm, and subscribing to Weekly Thing, with a small emblem on the top right.&#34;&gt;
&lt;p&gt;So, some final thoughts:&lt;/p&gt;
&lt;p&gt;Automate the drudgery. Save your energy for your words. Really preserve your voice. I do some spellcheck with AI, but I avoid grammar checks&amp;ndash;they over-correct and erase personality. I&amp;rsquo;ll ask AI to point out unclear sections, but I always make the edits myself.&lt;/p&gt;
&lt;p&gt;And if you&amp;rsquo;re thinking about doing this, start small. A newsletter doesn&amp;rsquo;t have to be forever. You could do one for a project, or a trip. Newsletters are a great medium&amp;ndash;no platform noise, no algorithm drama. Just you and your readers.&lt;/p&gt;
&lt;p&gt;And if you want to subscribe, head over to &lt;a href=&#34;https://weekly.thingelstad.com/&#34;&gt;Weekly Thing&lt;/a&gt;. The eighth anniversary edition is coming up soon&amp;ndash;and yes, there&amp;rsquo;s a POAP for that too.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all I&amp;rsquo;ve got. Happy to take any questions!&lt;/p&gt;
&lt;h3 id=&#34;related-articles&#34;&gt;Related Articles&lt;/h3&gt;
&lt;p&gt;Further reading…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2023/10/07/how-i-find.html&#34;&gt;How I Find Links for the Weekly Thing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2023/10/01/task-management-for.html&#34;&gt;Task Management for the Weekly Thing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2023/09/24/how-i-build.html&#34;&gt;How I Build the Weekly Thing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2025/03/09/how-i-use-ai-in.html&#34;&gt;How I Use AI in the Weekly Thing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2022/12/28/on-audience-capture.html&#34;&gt;On Audience Capture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2021/05/13/four-years-of.html&#34;&gt;Four Years of the Weekly Thing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2024/11/17/weekly-thing-supporting.html&#34;&gt;Weekly Thing Supporting Memberships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.thingelstad.com/2023/09/22/introducing-weekly-thing.html&#34;&gt;Introducing the Weekly Thing Forum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2025/05/01/i-had-siri-read-me.html</link>
      <pubDate>Thu, 01 May 2025 12:03:42 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2025/05/01/i-had-siri-read-me.html</guid>
      <description>&lt;p&gt;I had Siri read me a long email while walking and it was like stepping back to olden times. The TTS was lacking, not recognizing acronyms and with poor inflection. And I couldn’t even just ask “read this”, that failed. Instead I had to manually select the text and then press “Speak”. 😬&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2024/12/28/ive-been-enjoying-the-snow.html</link>
      <pubDate>Sat, 28 Dec 2024 09:57:28 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/12/28/ive-been-enjoying-the-snow.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been enjoying the &lt;a href=&#34;https://github.com/microdotblog/plugin-snowfall&#34;&gt;Snow Fall plug-in&lt;/a&gt; by &lt;a href=&#34;https://micro.blog/manton&#34;&gt;@manton&lt;/a&gt; on my website and it has me thinking that it would be really fun to have a web version of &lt;a href=&#34;https://simonbs.dev&#34;&gt;Simon Støvring&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://www.festivitas.app&#34;&gt;Festivitas&lt;/a&gt;. A string of lights along the top of the browser with various configuration options would be cool.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2024/12/27/i-created-a-hierarchal-view.html</link>
      <pubDate>Fri, 27 Dec 2024 20:36:40 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/12/27/i-created-a-hierarchal-view.html</guid>
      <description>&lt;p&gt;I created a hierarchal view of my blog pages so that I could try to organize this better. This shows why I wish the Pages section of micro.blog was a bit more sophisticated. I took the outline and then gave it to ChatGPT and asked it to recommend a better way to structure it.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/e577b9e47f.png&#34; width=&#34;600&#34; height=&#34;519&#34; alt=&#34;Mind map diagram in a Mac app titled Blog Pages showing a large hierarchical tree of blog page categories and subcategories.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2024/12/22/i-spent-some-time-this.html</link>
      <pubDate>Sun, 22 Dec 2024 19:23:53 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/12/22/i-spent-some-time-this.html</guid>
      <description>&lt;p&gt;I spent some time this morning doing analysis of our electricity usage. I was pleasantly surprised by how easy &lt;a href=&#34;https://www.xcelenergy.com/&#34;&gt;XcelEnergy&lt;/a&gt; makes it to retrieve your historical data at frequencies as low as every 15 minutes! Related — we use a lot of electricity&amp;hellip; ⚡️&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/278a9f412b.png&#34; width=&#34;600&#34; height=&#34;348&#34; alt=&#34;Bar chart of combined daily electrical usage in kWh for Magic Pines and Knox Ave properties from July to December 2024.&#34;&gt;
</description>
    </item>
    
    <item>
      <title>Weekly Thing Christmas Blogs</title>
      <link>https://www.thingelstad.com/2024/12/21/weekly-thing-christmas.html</link>
      <pubDate>Sat, 21 Dec 2024 12:04:25 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/12/21/weekly-thing-christmas.html</guid>
      <description>&lt;p&gt;The random five winners of the &lt;a href=&#34;https://www.thingelstad.com/2024/12/08/i-love-to.html&#34;&gt;Weekly Thing Christmas Blog&lt;/a&gt; gift have been selected!&lt;/p&gt;
&lt;p&gt;A little Python to do the selection&amp;hellip;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; random
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Define list of names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;values &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;…&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Shuffle the list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;random&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shuffle(values)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Randomly selected values:&amp;#34;&lt;/span&gt;, values[:&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And the winners are!&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jamie@tangerine ~ % python3 ./pick.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Randomly selected values: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Marcos&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Claudia&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Jesse&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Phil&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;David&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sending notices to everyone now!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Things 4 Good 2024 Fall Fundraiser Insights</title>
      <link>https://www.thingelstad.com/2024/11/10/213429.html</link>
      <pubDate>Sun, 10 Nov 2024 22:34:29 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/11/10/213429.html</guid>
      <description>&lt;p&gt;We had a great time hosting our 4th annual &lt;strong&gt;&lt;a href=&#34;https://https://www.thingelstad.com/candles/&#34;&gt;Things 4 Good&lt;/a&gt; Fall Fundraiser&lt;/strong&gt;. We &lt;strong&gt;&lt;a href=&#34;https://www.thingelstad.com/2024/11/10/things-good-fall.html&#34;&gt;raised $7,010 in donations&lt;/a&gt;&lt;/strong&gt; for our four non-profits. I also like to take a look at the data from the sale to learn more for next year.&lt;/p&gt;
&lt;p&gt;We made &lt;strong&gt;252 candles&lt;/strong&gt; in preparation for the sale. We had 72 Winter Wonderland, 36 Old Fashioned, and 24 of the other six scents. We really had no idea what to do for inventory since this was the first year we sold to the public at the Mt. Olivet Holiday Boutique.&lt;/p&gt;
&lt;p&gt;We had 78 candle purchases which is a huge &lt;strong&gt;42% jump&lt;/strong&gt; from last year. On average people purchased 3 candles, down from 4 last year. However averages don&amp;rsquo;t tell the story. Most people got one candle, and there are a smaller number of people that get a large number — usually as gifts for the holidays. We had 5 transactions for more than 8 candles, accounting for a whopping &lt;strong&gt;76 candles&lt;/strong&gt;, 30% of our inventory.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/t4g-2024-distribution.png&#34; width=&#34;600&#34; height=&#34;300&#34; alt=&#34;A bar graph displays the distribution of transactions by count, with the highest frequency at the candle count of 1.&#34;&gt;
&lt;p&gt;This year we had eight different scents, the exact same as last year. We renamed Plain Jane to Just Crackle, and it was similarly popular for folks wanting an unscented candle. We did fine tune the scents though and increased the scent load on some of them. Here is a look at rolling inventory as sales were happening.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/t4g-2024-velocity.png&#34; width=&#34;600&#34; height=&#34;399&#34; alt=&#34;A line graph depicts the rolling inventory of various candle scents, showing a general decline across multiple transaction counts.&#34;&gt;
&lt;p&gt;Some observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can see the early inventory trend drops quick which is a reflection of preorders that folk sent in.&lt;/li&gt;
&lt;li&gt;True North was the first scent to sell out and sold just as fast as Winter Wonderland until they were all gone.&lt;/li&gt;
&lt;li&gt;Just Crackle was popular with people buying many candles as gifts.&lt;/li&gt;
&lt;li&gt;Old Fashioned had more than other scents but still sold out quickly.&lt;/li&gt;
&lt;li&gt;Apple of My Eye underperformed and was the least popular scent until the end when there wasn&amp;rsquo;t as many options.&lt;/li&gt;
&lt;li&gt;Winter Wonderland seems to sell faster when it is on display and people can see there are so many of them. On Saturday we kept 5 of each candle on the table and added more as they were sold. The rate of sales were slower. On Sunday there were 30+ of them on the table. Do people buy more when they see there are so many?&lt;/li&gt;
&lt;li&gt;We sold out! Inventory went negative? Indeed we ran out of candles and I sent an email to let folks know if they were still planning to come. We did have a few people show up after we were out and I realized I had a couple dozen candles downstairs I had poured for myself. I brought them up and we kept raising more money for our causes!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We offer folks a number of ways to donate and again Venmo was by far the most popular method, 3.5 times more popular than cash. More people knew what Zelle was this year. I continue to be surprised at how few people have Apple Pay setup. Three checks! I did not offer a method to pay via crypto this year. We&amp;rsquo;ve only ever had one candle sale in all the years we&amp;rsquo;ve done it using Bitcoin Lightning.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/t4g-2024-payment-method.png&#34; width=&#34;600&#34; height=&#34;292&#34; alt=&#34;A bar chart shows the frequency of different payment methods, with Venmo being the most used at 51 instances.&#34;&gt;
&lt;p&gt;We are already keeping notes for things we want to do to make next year&amp;rsquo;s Things 4 Good Fall Fundraiser even better. Send us an email if you have any suggestions!&lt;/p&gt;
&lt;p&gt;Also see &lt;a href=&#34;https://www.thingelstad.com/2024/11/10/things-good-fall.html&#34;&gt;2024 Fall Fundraiser Results&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Tyler&#39;s Playdate Game: The 5 Piece Sword</title>
      <link>https://www.thingelstad.com/2024/09/07/tylers-playdate-game.html</link>
      <pubDate>Sat, 07 Sep 2024 11:41:23 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/09/07/tylers-playdate-game.html</guid>
      <description>&lt;p&gt;The most open of the &lt;a href=&#34;https://www.thingelstad.com/collections/summer-challenge-2024/&#34;&gt;Summer Challenges&lt;/a&gt; I gave &lt;a href=&#34;https://tyler.thingelstad.com&#34;&gt;Tyler&lt;/a&gt; was to &lt;a href=&#34;https://www.thingelstad.com/2024/07/10/summer-challenge-create.html&#34;&gt;create a Playdate Experience&lt;/a&gt;. No requirements other than something that could be played on the &lt;a href=&#34;https://play.date&#34;&gt;Playdate&lt;/a&gt; and created in &lt;a href=&#34;https://play.date/pulp/&#34;&gt;Pulp&lt;/a&gt;. Tyler really got into this and created a full interactive game experience — &lt;strong&gt;&lt;a href=&#34;https://tyler.thingelstad.com/2024/08/30/i-made-a.html&#34;&gt;The 5 Piece Sword&lt;/a&gt;&lt;/strong&gt;. 🗡️&lt;/p&gt;
&lt;p&gt;He wrote additional blog posts on the &lt;a href=&#34;https://tyler.thingelstad.com/2024/08/31/this-post-is.html&#34;&gt;simple enemies&lt;/a&gt; in the game, how the &lt;a href=&#34;https://tyler.thingelstad.com/2024/09/06/heart-system-in.html&#34;&gt;heart system&lt;/a&gt; for health works, and the &lt;a href=&#34;https://tyler.thingelstad.com/2024/09/07/spikes-spikballs-ect.html&#34;&gt;spikes and spike balls&lt;/a&gt; in the game.&lt;/p&gt;
&lt;p&gt;The game is fun to play and has a lot of challenging levels. He&amp;rsquo;s still crafting the final boss stage and at that point he may publish the file so others could load it. Nicely done! 👏&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Shopping via Terminal</title>
      <link>https://www.thingelstad.com/2024/07/20/shopping-via-terminal.html</link>
      <pubDate>Sat, 20 Jul 2024 07:34:38 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/07/20/shopping-via-terminal.html</guid>
      <description>&lt;p&gt;My cousin &lt;a href=&#34;https://quinnchrest.com?ref=thingelstad.com&#34;&gt;Quinn&lt;/a&gt; had mentioned this place that sold coffee via the Terminal using &lt;code&gt;ssh&lt;/code&gt; but I hadn&amp;rsquo;t remembered to check it out. He recently &lt;a href=&#34;https://quinnchrest.com/2024/07/19/terminal-task-tracking.html&#34;&gt;built his own terminal-based task tracker&lt;/a&gt; and mentioned terminal.shop again so I gave it a try.&lt;/p&gt;
&lt;p&gt;Clearly the goal here is to appeal to the techies and they are doing it great. They also did a good job with &lt;code&gt;curses&lt;/code&gt; support as I tested resizing the window and everything was nicely responsive.&lt;/p&gt;
&lt;p&gt;You start in the shopping experience. Who needs pictures? I know what coffee beans look like…&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/terminal-shop.png&#34; width=&#34;600&#34; height=&#34;438&#34; alt=&#34;SSH terminal shop interface showing a coffee product listing with a rendering bug where the product name displays as object Object, priced at 22 dollars&#34;&gt;
&lt;p&gt;The FAQ page…&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/terminal-shop-faq.png&#34; width=&#34;600&#34; height=&#34;438&#34; alt=&#34;terminal.shop FAQ page shown in an SSH terminal session with green background, displaying answers about shipping, ethical sourcing, and security&#34;&gt;
&lt;p&gt;And I even placed an order. The email I got said it was order #000, and made sure to indicate it was zero-indexed. 🤣&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/terminal-shop-order.png&#34; width=&#34;600&#34; height=&#34;438&#34; alt=&#34;SSH terminal.shop order confirmation screen showing a thank-you message from Terminal Products Inc signed by Dax Adam Prime Teej and David&#34;&gt;
&lt;p&gt;We&amp;rsquo;ll see how the coffee tastes! If you want to order some coffee of your own, just type &lt;code&gt;ssh terminal.shop&lt;/code&gt; in your terminal.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2024/07/18/resurrecting-two-raspberry.html</link>
      <pubDate>Thu, 18 Jul 2024 19:35:50 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/07/18/resurrecting-two-raspberry.html</guid>
      <description>&lt;p&gt;Resurrecting two &lt;a href=&#34;https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/&#34;&gt;Raspberry Pi 3 Model B+&lt;/a&gt; units that I had from when I was running &lt;a href=&#34;https://pi-hole.net&#34;&gt;Pi-hole&lt;/a&gt;. Putting new images on them and will be a fun host for &lt;a href=&#34;https://tyler.thingelstad.com?ref=thingelstad.com&#34;&gt;Tyler&lt;/a&gt; to learn some Linux skills on. Not sure what I&amp;rsquo;m going to do with mine yet.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/raspberry-pi-imager.png&#34; width=&#34;600&#34; height=&#34;446&#34; alt=&#34;Raspberry Pi Imager v1.8.5 writing Raspberry Pi OS 64-bit to a SanDisk SD card for a Raspberry Pi 3, progress at 6%&#34;&gt;
</description>
    </item>
    
    <item>
      <title>Summer Challenge: Create a Playdate Experience</title>
      <link>https://www.thingelstad.com/2024/07/10/summer-challenge-create.html</link>
      <pubDate>Wed, 10 Jul 2024 20:35:10 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/07/10/summer-challenge-create.html</guid>
      <description>&lt;p class=&#34;callout&#34;&gt;This post is part of the &lt;a href=&#34;https://www.thingelstad.com/collections/summer-challenge-2024/ &#34;&gt;Summer Challenge Collection&lt;/a&gt;, a collection of tasks or projects for our kids to do over the summer.&lt;/p&gt;
&lt;p&gt;This is a very open ended challenge to use the Playdate &lt;a href=&#34;https://play.date/dev/#cardPulp&#34;&gt;Pulp&lt;/a&gt; web-based game editor to create some kind of experience for the &lt;a href=&#34;https://play.date&#34;&gt;Playdate&lt;/a&gt;. This could be a game, something educational, or just silly. There is no complexity requirement but it should have some goal that it is designed for.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Importing 240 Word Documents to Micro.blog</title>
      <link>https://www.thingelstad.com/2024/06/30/importing-word-documents.html</link>
      <pubDate>Sun, 30 Jun 2024 21:29:44 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/06/30/importing-word-documents.html</guid>
      <description>&lt;p&gt;This weekend I helped get my cousin Josh setup &lt;a href=&#34;https://www.ramblingjosh.com?ref=thingelstad.com&#34;&gt;Rambling Josh&lt;/a&gt;, a &lt;a href=&#34;https://www.thingelstad.com/2024/06/30/rambling-josh.html&#34;&gt;new website&lt;/a&gt; to host the column he&amp;rsquo;s been writing for 20 years. He knew I used micro.blog and was game to use that. I suggested he get a domain name at NameCheap which he did. I got in and twiddled some settings and I had the site up and running easy enough.&lt;/p&gt;
&lt;p&gt;The challenge here was going to be the content. He had shared some documents with me earlier and it seemed like he wrote each column in Microsoft Word. They were very minimal on formatting (like almost none) since the target is a printed newspaper. In the end he had 240 Word documents, each representing an article, that we needed to get into Markdown and posted to the Micro.blog API.&lt;/p&gt;
&lt;p&gt;I figured there were two steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Convert these files to Markdown&lt;/li&gt;
&lt;li&gt;Post the Markdown to Micro.blog&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;converting-to-markdown&#34;&gt;Converting to Markdown&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve used &lt;a href=&#34;https://pandoc.org&#34;&gt;Pandoc&lt;/a&gt; for this kind of thing before so knew it should handle this pretty easily. I tried with one file passing the source DOCX file and it did good with the MD file. However, it was word wrapped at 72 characters. I did a similar use of Pandoc when I imported content into my website at one time and didn’t realize the word wrapping was happening and now I have hundreds of posts that are word wrapped at 72 characters. In reality, nobody but me ever will see the Markdown so it has no impact. But it still bugs me. I found &lt;code&gt;--wrap=none&lt;/code&gt; and was happy with the output.&lt;/p&gt;
&lt;p&gt;A quick bash loop did the rest:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; FILE in docx/*.docx; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# Extract the filename without the extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  filename&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;basename -- &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$FILE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  filename&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;filename%.*&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Processing &lt;/span&gt;$filename&lt;span style=&#34;color:#e6db74&#34;&gt;...&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  pandoc -s &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$FILE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    -t markdown &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    -o &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;md/&lt;/span&gt;$filename&lt;span style=&#34;color:#e6db74&#34;&gt;.md&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --wrap&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;none
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;posting-to-microblog&#34;&gt;Posting to Micro.blog&lt;/h3&gt;
&lt;p&gt;So now I had a new directory with 240 Markdown files. First step done. Luckily Josh used a standard approach to each document. The files had names like:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;The Wall 3-20-2019.md
Coach2-2-11.md
Boxed Out 1-18-2017.md
Fantasia 11-15-2017.md
Brooklyn Bound 10-16-2019.md
Memories 6-17-2020.md
Genius 4-19-17.md
Mirror Mirror 4-18-2018.md
Floored 3-6-2019.md
Good Man7-19-2017.md
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So I had a fairly good way to get a title as well as a publish date from the filename.&lt;/p&gt;
&lt;p&gt;Inside of each file he had the title, byline, and date as well at the top of each article. These had less conformity so I decided to ignore those and just use the filename for metadata.&lt;/p&gt;
&lt;p&gt;As I put each article into Micro.blog I wanted to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure the title was set right.&lt;/li&gt;
&lt;li&gt;Make sure the publish date was the original publish date, not now.&lt;/li&gt;
&lt;li&gt;Add a static category.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I started to whack away at this script and then decided to ask my friend &lt;a href=&#34;https://chatgpt.com&#34;&gt;ChatGPT&lt;/a&gt; 4o to give me a hand. I could have written what it helped me with, but it did it about 10x faster. It also had an easier time frankly handling the fact that not all the years had 4 digits. 🤓&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Your Micro.blog token and API endpoint&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MICRO_BLOG_TOKEN&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SECRET TOKEN HERE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;API_ENDPOINT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://micro.blog/micropub&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Directory containing the markdown files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MARKDOWN_DIR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;md&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Function to post a markdown file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;post_to_microblog&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$1&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local filename&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;basename -- &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Extract the title (all characters before the date)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local title&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;filename%%[0-9]*&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Extract the date part (all characters from the first digit to the last dot)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local date_part&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$filename&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | grep -oE &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;[0-9]{1,2}-[0-9]{1,2}-[0-9]{2,4}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local month&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$date_part&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | cut -d&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; -f1&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local day&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$date_part&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | cut -d&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; -f2&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local year&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$date_part&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | cut -d&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; -f3&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Format the year to 4 digits (assuming 20xx)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;${#&lt;/span&gt;year&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt; -eq &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        local year_formatted&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;20&lt;/span&gt;$year&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        local year_formatted&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$year&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Format the date to Y-M-D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local timestamp_formatted&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$year_formatted&lt;span style=&#34;color:#e6db74&#34;&gt;-&lt;/span&gt;$month&lt;span style=&#34;color:#e6db74&#34;&gt;-&lt;/span&gt;$day&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Set the time to midnight Central Time (CT)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local timestamp_ct&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;timestamp_formatted&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;T12:00:00-06:00&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Read file content and remove the first three paragraphs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local content&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BEGIN{RS=&amp;#34;&amp;#34;;ORS=&amp;#34;\n\n&amp;#34;} NR&amp;gt;3&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Post to Micro.blog&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    curl -X POST &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$API_ENDPOINT&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;$MICRO_BLOG_TOKEN&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type: application/x-www-form-urlencoded&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;h=entry&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name=&lt;/span&gt;$title&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;published=&lt;/span&gt;$timestamp_ct&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;category[]=Ramblings&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;content=&lt;/span&gt;$content&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Iterate over markdown files in the directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; file in &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$MARKDOWN_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;/*.md; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    	echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Processing &lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        post_to_microblog &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I was impressed that ChatGPT had no issue knowing the signatures for the micro.blog API. It isn&amp;rsquo;t a super common API but it didn’t miss a beat. The regular expression on the filename was the same approach I would have used. I always forget about &lt;code&gt;cut&lt;/code&gt; but it was a smart use to pull apart the date. The part I would have struggled with was ignoring the first three paragraphs (not necessarily lines) in the file itself. These had the title, byline, and date. I just wanted to ignore it. I know a little &lt;code&gt;awk&lt;/code&gt; but not enough to have it do that for me.&lt;/p&gt;
&lt;p&gt;I ran this and voila I had 240 blog posts from all those Markdown files. I was honestly surprised it didn’t take me longer. ChatGPT probably saved me a couple of hours of banging around at different approaches.&lt;/p&gt;
&lt;p&gt;There were a couple of bugs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Articles that contained an ampersand caused problems with &lt;code&gt;curl&lt;/code&gt;. The content after the first ampersand was lost. There were only eight or so articles that had that (thanks &lt;code&gt;grep&lt;/code&gt;) so I remedied that by hand.&lt;/li&gt;
&lt;li&gt;I didn’t like what Pandoc did with superscript. Because Josh had written these in Word every occurence of 7th or 20th had superscript. There were a number of ^ that needed to get erased. I used &lt;a href=&#34;https://redsweater.com/marsedit/&#34;&gt;MarsEdit&lt;/a&gt; to both find the posts that had that, and do a quick find and replace with nothing. I wish that was a batch operation in MarsEdit but you have to do it one-by-one, but it is fast.&lt;/li&gt;
&lt;li&gt;Pandoc also littered a bunch of backslash characters attempting to do some formatting. I had to fix those by hand too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is entirely possible if I spent more time with the Pandoc testing I could have avoided the last two. Pandoc doesn&amp;rsquo;t have command line flags for those but it does have multiple Markdown targets and some of them may have made more suitable Markdown for me. Either way it only took about 10 minutes to clean up thanks to MarsEdit.&lt;/p&gt;
&lt;h3 id=&#34;wrapping-up&#34;&gt;Wrapping up&lt;/h3&gt;
&lt;p&gt;I was pretty happy that I go this all going and even completed in just a couple of hours. The rest of the archive will be less easy to get, but with this we got a great start!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2024/04/27/for-fun-i.html</link>
      <pubDate>Sat, 27 Apr 2024 11:18:40 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/04/27/for-fun-i.html</guid>
      <description>&lt;p&gt;For fun I added my website to the &lt;a href=&#34;https://xn--sr8hvo.ws&#34;&gt;IndieWeb Webring&lt;/a&gt;. 🕸💍 I also added an &lt;a href=&#34;https://microformats.org/wiki/h-card&#34;&gt;h-card microformat&lt;/a&gt; tucked away in the footer of my site. I styled it not to display but the &lt;a href=&#34;https://indiewebify.me/validate-h-card/?url=https://www.thingelstad.com/&#34;&gt;validator picks it up&lt;/a&gt; fine.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Today I Learned: DNS and Wildcard Records</title>
      <link>https://www.thingelstad.com/2024/04/02/today-i-learned.html</link>
      <pubDate>Tue, 02 Apr 2024 21:11:23 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/04/02/today-i-learned.html</guid>
      <description>&lt;p&gt;One of my favorite features of Fastmail is mail routing. I can use that to create any number of ad hoc email addresses in the format of &lt;code&gt;anything&lt;/code&gt; at &lt;code&gt;jamie.thingelstad.com&lt;/code&gt;. I&amp;rsquo;ve been using this feature for a while and to set it up you create a wildcard &lt;code&gt;MX&lt;/code&gt; entry for your domain pointing to Fastmail. This way it works for all users of your domain. A couple of weeks ago these addresses stopped working though and I had no idea why.&lt;/p&gt;
&lt;p&gt;I actually raised the issue with Fastmail support and they confirmed that there was no &lt;code&gt;MX&lt;/code&gt; entry for &lt;code&gt;jamie.thingelstad.com&lt;/code&gt;. They then asked if I had setup any &lt;code&gt;CNAME&lt;/code&gt;s or &lt;code&gt;A&lt;/code&gt; records recently for that name. Then it hit me, I had recently created a &lt;code&gt;TXT&lt;/code&gt; entry for &lt;code&gt;jamie.thingelstad.com&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It turns out the second that there is any record of any type on a name you no longer get the benefit of the wildcard entry. I created the specific &lt;code&gt;MX&lt;/code&gt; entries for &lt;code&gt;jamie.thingelstad.com&lt;/code&gt; and everything started to work just as it should.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2024/02/17/while-blog-gardening.html</link>
      <pubDate>Sat, 17 Feb 2024 15:49:01 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/02/17/while-blog-gardening.html</guid>
      <description>&lt;p&gt;While &lt;a href=&#34;https://www.thingelstad.com/2023/09/04/blog-gardening.html&#34;&gt;blog gardening&lt;/a&gt; today I found random &lt;code&gt;&amp;lt;0xa0&amp;gt;&lt;/code&gt; characters in over 100 blog posts. A quick search revealed it as the decimal for a non-breaking space. I used micro.blog replace function to replace with a space, except two that were in titles and manually replaced.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>New POAP Onboarding Process</title>
      <link>https://www.thingelstad.com/2024/01/14/new-poap-onboarding.html</link>
      <pubDate>Sun, 14 Jan 2024 15:01:35 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2024/01/14/new-poap-onboarding.html</guid>
      <description>&lt;p&gt;A year ago (exactly!) I shared my &lt;a href=&#34;https://www.thingelstad.com/2023/01/14/poap-wishlist.html&#34;&gt;POAP Wishlist&lt;/a&gt; which included three areas that I felt would be great additions to &lt;a href=&#34;https://poap.xyz&#34;&gt;POAP&lt;/a&gt;. It is a year later and I still think POAP is a wonderful product, and I continue to issue and collect these proof of attendance tokens.&lt;/p&gt;
&lt;p&gt;One of the areas that I called out was &lt;strong&gt;Web2/3 Onboarding&lt;/strong&gt;. Specifically I noted that while token claim codes could be used to reserve a POAP (not minting it), the reservations themselves weren&amp;rsquo;t actionable. There was no email engagement to encourage the person that reserved it to mint the token. I also highlighted that POAP should make it easier for people that do not otherwise have an Ethereum wallet, and create a non-custodial wallet for them to use instead.&lt;/p&gt;
&lt;p&gt;A couple weeks ago I noticed that POAP had a new beta onboarding process so I requested to be part of it, and they activated it for my &lt;a href=&#34;https://poap.gallery/event/166479&#34;&gt;52nd Birthday drop&lt;/a&gt;. I gave it a try myself and I was excited to see that they had addressed everything I had wished for in this process!&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at the new process!&lt;/p&gt;
&lt;h3 id=&#34;new-onboarding&#34;&gt;New Onboarding&lt;/h3&gt;
&lt;p&gt;Just as before, when you get a claim code you are presented with the option to get the token and you can provide a wallet address or Ethereum Name Service (ENS) name to directly mint it. You can also provide an email address to reserve the token to mint in the future.&lt;/p&gt;
&lt;p&gt;With the new onboarding process when you provide an email address to reserve the token you get an email informing you of the next steps. Critically it presents options for you to act on!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/1-email-options.png&#34; width=&#34;600&#34; height=&#34;248&#34; alt=&#34;Two options side by side: I have a wallet with a green checkmark icon to mint to an existing Ethereum wallet, and Create a new account with a purple plus icon.&#34;&gt;
&lt;p&gt;Smartly they use language that people should easily identify with. Rather than saying &amp;ldquo;I don&amp;rsquo;t have a wallet&amp;rdquo; instead saying &amp;ldquo;Create an account&amp;rdquo;. To give this a test I chose to Create an account.&lt;/p&gt;
&lt;p&gt;After clicking on this you are presented with a page where you can setup your account, which really means you are creating a brand new wallet address. I love that you can even specify an ENS name. I created &lt;a href=&#34;https://rainbow.me/thingelstad.onpoap.eth&#34;&gt;thingelstad.onpoap.eth&lt;/a&gt; which got a brand new address &lt;code&gt;0xb81B…2056&lt;/code&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/2-create-account.png&#34; width=&#34;600&#34; height=&#34;364&#34; alt=&#34;POAP account creation form with an email field pre-filled, a nickname field with onpoap.eth domain selector, and a Create account and mint button.&#34;&gt;
&lt;p&gt;Behind the scenes this is powered by &lt;a href=&#34;https://www.privy.io&#34;&gt;Privy&lt;/a&gt; to create an embedded wallet. The flow worked really well. After creating my new wallet I was then able to easily mint my POAP directly into that new wallet. Magic! 🪄&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/3-minted.png&#34; width=&#34;600&#34; height=&#34;334&#34; alt=&#34;Congratulations screen showing a new POAP account address 0xb81b70afee42e944b88d06a71e0531852c612056 and nickname thingelstad.onpoap.eth&#34;&gt;
&lt;p&gt;So this is great, and for a lot of people that only collect POAPs and do nothing else with crypto this is probably all that they ever need to do. But now that this wallet exists, I wanted to get access to it directly. After creating the wallet POAP send another email and this one includes those steps, and even points you to downloading Rainbow if you don&amp;rsquo;t know where to start.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/4-get-keys.png&#34; width=&#34;600&#34; height=&#34;241&#34; alt=&#34;3-step guide to move a POAP collection to another wallet showing download Rainbow, copy private keys, and import steps&#34;&gt;
&lt;p&gt;I followed the directions, copied my private key, and was able to easily add the new wallet that POAP had created for me into Rainbow. 🌈&lt;/p&gt;
&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;I’m incredibly happy about this new onboarding process. I&amp;rsquo;ve created &lt;a href=&#34;https://www.thingelstad.com/lists/poap-events/&#34;&gt;58 POAPs&lt;/a&gt; and most of my events are distributed to people that have never done anything with Ethereum before. I even created my own &lt;a href=&#34;https://www.thingelstad.com/how-to/claim-a-poap/&#34;&gt;how to claim a POAP&lt;/a&gt; instructions to give people.&lt;/p&gt;
&lt;p&gt;However, even with that it has proven too difficult for most people. With this new process, people will be able to claim &lt;strong&gt;and mint&lt;/strong&gt; POAPs with nothing other than an email address! This is a big deal! I also think there are many crypto native people that may choose to do this as well. I &lt;a href=&#34;https://www.thingelstad.com/2023/03/04/isolating-crypto-assets.html&#34;&gt;isolate by crypto assets&lt;/a&gt; so I keep all my POAPs in an address just for them. Having POAP manage the wallet for me would be an even easier way to do that.&lt;/p&gt;
&lt;p&gt;I’m eager for this new onboarding process to be the default and I think I can get rid of my &amp;ldquo;how to&amp;rdquo; page and simplify POAP distribution significantly. With this new process, POAP ease-of-use is much improved!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Things 4 Good 2023 Fall Fundraiser Insights</title>
      <link>https://www.thingelstad.com/2023/11/26/things-good-fall.html</link>
      <pubDate>Sun, 26 Nov 2023 11:46:11 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/11/26/things-good-fall.html</guid>
      <description>&lt;p&gt;We had a great time hosting our 3rd annual &lt;strong&gt;&lt;a href=&#34;https://https://www.thingelstad.com/candles/&#34;&gt;Things 4 Good&lt;/a&gt; Fall Fundraiser&lt;/strong&gt;. We &lt;a href=&#34;https://www.thingelstad.com/2023/11/12/things-good-fall.html&#34;&gt;raised nearly $6,000 in donations&lt;/a&gt; for our four non-profits. A fun thing for me about the fundraiser is it lets us play the role of a retailer for a weekend.&lt;/p&gt;
&lt;p&gt;This year we had 55 candle purchases which compares to 52 in 2022 and 51 in 2021. On average people purchased 4 candles. However averages don&amp;rsquo;t always tell the story. Most people get two candles, and then there are a smaller number of people that get a large number — usually as gifts for the holidays.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/distribution-candle-count.png&#34; width=&#34;600&#34; height=&#34;304&#34; alt=&#34;Bar chart showing most buyers purchased 2 candles (15 transactions), with counts dropping sharply for higher quantities, peaking again briefly at 4 and 12.&#34;&gt;
&lt;p&gt;We had some new scents this year, and had more scents than we have had the previous two years. The first year we had only four scents, and last year six. This year we had eight different scents. As the number of scents go up we need to be more planful with inventory. For the first time this year we tracked which scents people picked so that we could get better insight for future years. Here is a look at rolling inventory.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/fall-fundraiser-2023-inventory.png&#34; width=&#34;600&#34; height=&#34;401&#34; alt=&#34;Line chart showing rolling inventory of 8 candle scents across 52 transactions, with Winter Wonderland starting highest near 65 and all scents declining to near zero by the end.&#34;&gt;
&lt;p&gt;Some observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Winter Wonderland is always the most popular scent and we started with more than twice as many of those as any other scent.&lt;/li&gt;
&lt;li&gt;Old Fashioned was a very popular new scent this year and was the first to sell out.&lt;/li&gt;
&lt;li&gt;Plain Jane, also a new scent, had a lot of early sales and then slowed down a lot. This scent was most popular when someone bought a lot of candles as gifts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I fed the transaction data into ChatGPT and used its data analysis mode to make a run at doing inventory planning for next year. It did a reasonable job but with such a simple dataset I could have gotten most of the way there on my own. It recommended a 30% increase for True North and 20% increase for Old Fashioned. Even though it was a simple use case, it highlighted how powerful it could be at that use case.&lt;/p&gt;
&lt;p&gt;We offer folks a number of ways to donate and again Venmo was by far the most popular method, twice as popular as cash. I&amp;rsquo;ve offered the ability to pay with crypto for all three years, and this year we had our first donation made with Bitcoin via the Lightning Network!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/payment-methods.png&#34; width=&#34;600&#34; height=&#34;286&#34; alt=&#34;Bar chart showing payment methods used: Venmo leads with 28, Cash 15, Check 4, Apple Pay 3, Paypal 1, Bitcoin 1, Zelle 0.&#34;&gt;
&lt;p&gt;Interesting data for us which will help us with next years event. We are already keeping notes for things we want to do to make next year&amp;rsquo;s Things 4 Good Fall Fundraiser even better. Send us an email if you have any suggestions!&lt;/p&gt;
&lt;p&gt;Also see &lt;a href=&#34;https://www.thingelstad.com/2023/11/12/things-good-fall.html&#34;&gt;2023 Fall Fundraiser Results&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/10/01/i-received-an.html</link>
      <pubDate>Sun, 01 Oct 2023 07:35:12 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/10/01/i-received-an.html</guid>
      <description>&lt;p&gt;I received an email this morning from a service I have no recollection of informing me that their terms of service were updated. I have no idea what this service is. I looked in 1Password and have no entry record of it either, so it is very old. I don&amp;rsquo;t know the password on the account so I issue a password reset, just so I can then delete this account. It then requires me to provide a reason for cancellation. My reason is &amp;ldquo;This field should not be required.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;There should be a requirement similar to &amp;ldquo;1-click unsubscribe&amp;rdquo; but to delete your account.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/09/27/ive-had-the.html</link>
      <pubDate>Wed, 27 Sep 2023 07:03:26 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/09/27/ive-had-the.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve had the ScanSnap iX500 for years and the scanner is great but the software gets worse by the day. The &amp;ldquo;Scan to the Cloud&amp;rdquo; feature fails silently! You can be scanning away thinking it&amp;rsquo;s all going to my Box account to retrieve later, but in reality the scans are going nowhere, no error message, and no file to recover!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>WordPress 100-Year Plan</title>
      <link>https://www.thingelstad.com/2023/09/04/wordpress-year-plan.html</link>
      <pubDate>Mon, 04 Sep 2023 18:45:38 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/09/04/wordpress-year-plan.html</guid>
      <description>&lt;p&gt;Recently WordPress.com announced a profound new &lt;a href=&#34;https://wordpress.com/blog/2023/08/25/introducing-the-100-year-plan/&#34;&gt;100-Year Plan&lt;/a&gt; for hosting websites. I&amp;rsquo;ve thought a lot about how to keep websites (mostly personal blogs) alive after the authors of those blogs are no longer here so this is something I was curious about. I&amp;rsquo;ve &lt;a href=&#34;https://www.thingelstad.com/2023/07/08/preserving-your-writing.html&#34;&gt;written about preserving your writing&lt;/a&gt; as recent as July.&lt;/p&gt;
&lt;h3 id=&#34;love-this&#34;&gt;Love This&lt;/h3&gt;
&lt;p&gt;First, I applaud what WordPress is doing here and think that we need more organizations providing technology, infrastructure, and logistical solutions to help content stay online for a very long time, preferably many hundreds if not thousands of years. This offering strikes me as the most significant, and from an organization that I would be comfortable trusting, that has ever been provided.&lt;/p&gt;
&lt;p&gt;I hope this urges other tools and organizations to consider ways that they can provide similar capability, or even slightly different since this 100-Year plan doesn&amp;rsquo;t seem to differentiate between an active site versus an archived site. I would think that if you make a clear decision that a site is now archived and new content isn&amp;rsquo;t being created you could reduce the hosting costs dramatically.&lt;/p&gt;
&lt;h3 id=&#34;cost&#34;&gt;Cost&lt;/h3&gt;
&lt;p&gt;Much has been made about the fact that this 100-Year Plan costs $38,000. I think a lot of people are just looking at this number and reacting without parsing it through. Let&amp;rsquo;s break it down.&lt;/p&gt;
&lt;p&gt;This service is provided as part of WordPress VIP hosting solution which is their more advanced service. Your domain name is also baked into this. A domain costs approximately $12/year, or $1,200 for the duration.&lt;/p&gt;
&lt;p&gt;That leaves $36,800 for hosting, or $368 a year, or about $30/month of hosting cost. That seems like a reasonable cost for WordPress VIP.&lt;/p&gt;
&lt;p&gt;This also all has to be paid up-front, which makes sense since the paying entity is going to &amp;ldquo;disappear&amp;rdquo; at some point during the 100 years, and it isn&amp;rsquo;t predictable when that will be.&lt;/p&gt;
&lt;p&gt;Is $38,000 a lot of money? Very much so. But I don&amp;rsquo;t think this is terribly priced for the components that you are getting, and the need to pay up front makes logistical sense.&lt;/p&gt;
&lt;h3 id=&#34;probably-not-for-me&#34;&gt;Probably Not For Me&lt;/h3&gt;
&lt;p&gt;So, am I going to use this? Probably not, or at least for now. I don&amp;rsquo;t host on WordPress and I&amp;rsquo;d rather not start. The idea of having your content in a database with all of that complexity for 100 years seems like an odd approach. Of course that also depends on the use case. If it is a website that is meant to outlive you, a static site seems like a better solution. If it is a website that you plan to evolve and change for 100 years then maybe.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I’m happy seeing innovation here. Lets hope for continued activity to create even better solutions.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/09/03/funny-ux-thing.html</link>
      <pubDate>Sun, 03 Sep 2023 18:48:53 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/09/03/funny-ux-thing.html</guid>
      <description>&lt;p&gt;Funny UX thing I&amp;rsquo;ve noticed with &lt;a href=&#34;https://micro.blog&#34;&gt;micro.blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I use the &amp;ldquo;Reply&amp;rdquo; feature way more on the web than the macOS app.&lt;/p&gt;
&lt;p&gt;I suspect it is the difference between the &amp;ldquo;inline&amp;rdquo; interaction on the web opposed to a new window which macOS uses. I much prefer the web interaction. FYI &lt;a href=&#34;https://micro.blog/manton&#34;&gt;@manton&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/08/21/i-got-my.html</link>
      <pubDate>Mon, 21 Aug 2023 19:57:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/08/21/i-got-my.html</guid>
      <description>&lt;p&gt;I got my &lt;a href=&#34;https://goodenough.us&#34;&gt;Good Enough&lt;/a&gt; Zine today! Thanks &lt;a href=&#34;https://micro.blog/bjhess&#34;&gt;@bjhess&lt;/a&gt; and team — I&amp;rsquo;m looking forward to thoroughly going through this. 🥳 Want your own? See details in &lt;a href=&#34;https://goodenoughnews.substack.com/p/season-3-issue-16&#34;&gt;their newsletter&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/b6aef09eef.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;A Good Enough Zine issue 01 May 2023 showing pencil drawings of a llama, tortoise, chicken, hatching egg, prairie dog, and dog, resting on books including Outlive by Peter Attia&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/05/20/good-session-on.html</link>
      <pubDate>Sat, 20 May 2023 14:56:17 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/05/20/good-session-on.html</guid>
      <description>&lt;p&gt;Good session on “Bitcoin Core Maintainers &amp;amp; the Path Forward” with &lt;strong&gt;Gloria Zhao&lt;/strong&gt;, &lt;strong&gt;Niftynei&lt;/strong&gt;, and &lt;strong&gt;Jess Jonas&lt;/strong&gt; moderated by &lt;strong&gt;Steve Meyers&lt;/strong&gt; at &lt;a href=&#34;https://b.tc/conference/&#34;&gt;Bitcoin 2023&lt;/a&gt;. I appreciated three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Loved that this was an &lt;strong&gt;all women panel&lt;/strong&gt;!&lt;/li&gt;
&lt;li&gt;Great call out to help fund Bitcoin Core development via &lt;a href=&#34;https://brink.dev&#34;&gt;Brink&lt;/a&gt;. &lt;a href=&#34;https://brink.dev/donate&#34;&gt;Donate&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;Call to action for &lt;a href=&#34;https://bitcoindefense.org&#34;&gt;Bitcoin Legal Defense Fund&lt;/a&gt;. &lt;a href=&#34;https://bitcoindefense.org/donation/&#34;&gt;Donate&lt;/a&gt;!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Really great! 🙌&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/35251056e1.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Panel discussion on Bitcoin Core Maintainers and the Path Forward at Bitcoin 2023 Open Source Stage, with four panelists seated on stage before an audience.&#34;&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/b07b28f5b9.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Four panelists seated in white chairs on stage at Bitcoin 2023 Open Source Stage, speaking to a seated audience.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/05/06/minneapolisst-paul-business.html</link>
      <pubDate>Sat, 06 May 2023 14:28:34 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/05/06/minneapolisst-paul-business.html</guid>
      <description>&lt;p&gt;Minneapolis/St. Paul Business Journal&amp;rsquo;s &lt;a href=&#34;https://www.bizjournals.com/twincities/subscriber-only/2023/05/04/largest-software-development-firms-in-the-twin-cities.html&#34;&gt;Largest Software Development Firms in the Twin Cities&lt;/a&gt; ranked by software developers.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/9ce7286a24.png&#34; width=&#34;600&#34; height=&#34;470&#34; alt=&#34;Table ranking top 5 Twin Cities software firms by developer count, showing SPS Commerce leading with 499 developers and 450.9M revenue.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/03/26/tyler-has-been.html</link>
      <pubDate>Sun, 26 Mar 2023 22:11:56 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/03/26/tyler-has-been.html</guid>
      <description>&lt;p&gt;Tyler has been doing some coding projects and is liking it so I ordered some books to help him along:  &lt;a href=&#34;https://www.amazon.com/gp/aw/d/1641521759&#34;&gt;Coding for Kids: Python&lt;/a&gt; and &lt;a href=&#34;https://www.amazon.com/gp/aw/d/1465477349&#34;&gt;Coding Projects in Scratch&lt;/a&gt;. And same as I did with Mazie, sharing my enthusiasm about GTD with
&lt;a href=&#34;https://www.amazon.com/gp/aw/d/0143131931&#34;&gt;Getting Things Done for Teens&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/a53bcfa8a0.jpg&#34; width=&#34;600&#34; height=&#34;599&#34; alt=&#34;Stack of 3 books on a white surface: Coding for Kids Python, Coding Projects in Scratch, and Getting Things Done for Teens.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2023/01/21/i-have-never.html</link>
      <pubDate>Sat, 21 Jan 2023 15:19:44 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2023/01/21/i-have-never.html</guid>
      <description>&lt;p&gt;I have never seen a CAPTCHA on an unsubscribe form! That is a new level of obnoxious. 😤&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2023/c98d0cb483.png&#34; width=&#34;503&#34; height=&#34;600&#34; alt=&#34;CAPTCHA verification screen on an unsubscribe page showing distorted text J8UL4 in an image with a text input field and I am human button&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2022/12/24/i-really-dig.html</link>
      <pubDate>Sat, 24 Dec 2022 21:20:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2022/12/24/i-really-dig.html</guid>
      <description>&lt;p&gt;I really dig this &lt;a href=&#34;https://shop.mattdowney.co/products/cc0-is-punk-sticker?variant=42947771269353&#34;&gt;CC0 is Punk&lt;/a&gt; sticker from Matt Downey. &lt;strong&gt;CC0 is totally punk!&lt;/strong&gt;&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2022/6d8497e810.jpg&#34; width=&#34;600&#34; height=&#34;252&#34; alt=&#34;CC0 is Punk&#34;&gt;
</description>
    </item>
    
    <item>
      <title>Find Unique Addresses for Multiple POAP Events</title>
      <link>https://www.thingelstad.com/2022/12/13/find-unique-addresses.html</link>
      <pubDate>Tue, 13 Dec 2022 22:18:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2022/12/13/find-unique-addresses.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;How do you get a list of unique addresses that have claimed any set of POAPs?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Each POAP event allows you to download a CSV file that has the addresses that claimed it, along with other data. Download all the CSV files into a directory. Now, assuming you are on Unix-like system, the rest is pretty easy.&lt;/p&gt;
&lt;p&gt;First put all the CSVs together in one file. The download from POAP is missing a trailing newline, so loop in the shell.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; file in *.csv; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;&amp;gt; cat $file &amp;gt;&amp;gt; combined.csv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;&amp;gt; echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; combined.csv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;&amp;gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now lets spit the second column, the address, into another file. &lt;code&gt;awk&lt;/code&gt; does this well.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;awk -F &amp;quot;\&amp;quot;*,\&amp;quot;*&amp;quot; &#39;{print $2}&#39; combined.csv &amp;gt; addresses.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now the classic &lt;code&gt;sort&lt;/code&gt; and &lt;code&gt;uniq&lt;/code&gt; combination will give us what we want.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cat addresses.txt| sort | uniq &amp;gt; addresses-uniq.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And you have your list!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Four Letter Words</title>
      <link>https://www.thingelstad.com/2022/07/13/four-letter-words.html</link>
      <pubDate>Wed, 13 Jul 2022 22:01:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2022/07/13/four-letter-words.html</guid>
      <description>&lt;p&gt;&amp;ldquo;If we can do 10, then 12 is &lt;strong&gt;only&lt;/strong&gt; a little more.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;If we can &lt;strong&gt;just&lt;/strong&gt; add this button to the UI.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;That has to be really &lt;strong&gt;easy&lt;/strong&gt;, it is so simple.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Only, just, easy — all make presumptions about difficulty that the speaker frequently lacks the context and understanding to determine.&lt;/p&gt;
&lt;p class=&#34;callout&#34;&gt;Related: &lt;a href=&#34;https://www.thingelstad.com/lists/words/&#34;&gt;Word List&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2022/06/06/the-new-window.html</link>
      <pubDate>Mon, 06 Jun 2022 19:03:50 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2022/06/06/the-new-window.html</guid>
      <description>&lt;p&gt;The new window manager that Apple announced at WWDC today, Stage Manager, looks interesting. I like how the experience works on a variety of display sizes. It makes me chuckle that we’ve had GUIs for 30 years and we are still figuring out window managers. 🤓&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Zen of Python</title>
      <link>https://www.thingelstad.com/2021/07/22/zen-of-python.html</link>
      <pubDate>Thu, 22 Jul 2021 11:06:21 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2021/07/22/zen-of-python.html</guid>
      <description>&lt;p&gt;I joined a Zoom meeting today and &lt;a href=&#34;https://burgaud.com&#34;&gt;André Burgaud&lt;/a&gt; had this great background with a terminal screenshot. I had never heard of &lt;a href=&#34;http://www.thezenofpython.com&#34;&gt;The Zen of Python&lt;/a&gt; before. 💙&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;~ jthingelstad$ python3 -c &amp;#34;import this&amp;#34;
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren&amp;#39;t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you&amp;#39;re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it&amp;#39;s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let&amp;#39;s do more of those!
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Container Ship Queue</title>
      <link>https://www.thingelstad.com/2021/03/24/container-ship-queue.html</link>
      <pubDate>Wed, 24 Mar 2021 21:31:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2021/03/24/container-ship-queue.html</guid>
      <description>&lt;p&gt;Having the &lt;a href=&#34;https://www.cbc.ca/news/business/suez-canal-ever-given-1.5961615&#34;&gt;Ever Given, a massive container ship, stuck in the Suez Canal&lt;/a&gt; and halting all normal activity through the canal is a familiar problem to any technologist that has dealt with queue problems. Look at the &lt;a href=&#34;https://www.vesselfinder.com/?imo=9811000&#34;&gt;real-time vessel map&lt;/a&gt; and all the ships stuck waiting. 🚢&lt;/p&gt;
&lt;p&gt;They normally pass 50 ships a day through the canal. With so many backed up, it will be a few days before things get back to normal. 😬&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/7ea3150915.jpg&#34; width=&#34;600&#34; height=&#34;550&#34; alt=&#34;Map showing the Ever Given container ship stopped in the Suez Canal near Suez, Egypt, with dozens of vessels clustered and waiting at both ends of the canal.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/fcc0fff06e.jpg&#34; width=&#34;600&#34; height=&#34;553&#34; alt=&#34;Marine traffic map near Suez showing dozens of cargo vessels clustered in the Gulf of Suez with the Ever Given marked near the canal entrance.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bbc.com/news/world-middle-east-56516151&#34;&gt;These pictures&lt;/a&gt; tell the story well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/12/13/from-ny-times.html</link>
      <pubDate>Sun, 13 Dec 2020 22:52:57 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/12/13/from-ny-times.html</guid>
      <description>&lt;p&gt;From &lt;a href=&#34;https://www.nytimes.com/interactive/2020/us/coronavirus-us-cases.html&#34;&gt;NY Times Dec 13 2020&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/abd869c4ca.jpg&#34; width=&#34;600&#34; height=&#34;281&#34; alt=&#34;Bar chart of U.S. daily COVID-19 cases March to December 2020 showing a sharp surge past 200000 cases in late November and December.&#34; /&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/6480f9ab4d.jpg&#34; width=&#34;600&#34; height=&#34;284&#34; alt=&#34;Bar chart of US COVID-19 daily deaths March to December 2020, peaking near 2000 in April and rising past 2000 again in December.&#34; /&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/dcd56b36dc.jpg&#34; width=&#34;600&#34; height=&#34;281&#34; alt=&#34;Bar chart showing US Covid-19 hospitalizations March to December 2020, peaking near 100,000 in December, far exceeding prior April and August peaks.&#34; /&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/11/26/this-was-the.html</link>
      <pubDate>Thu, 26 Nov 2020 13:43:11 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/11/26/this-was-the.html</guid>
      <description>&lt;p&gt;This was the worst production outage I&amp;rsquo;ve experienced in Amazon Web Services, lasting &lt;strong&gt;over 21 hours&lt;/strong&gt;. AWS has also published the &lt;a href=&#34;https://aws.amazon.com/message/11201/&#34;&gt;full incident report&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Latest Update (1:18 AM PST):&lt;/strong&gt; We have restored all traffic to Kinesis Data Streams via all endpoints and it is now operating normally. We have also resolved the error rates invoking CloudWatch APIs. We continue to work towards full recovery for IoT SiteWise and details of the service status is below. All other services are operating normally. &lt;mark&gt;We have identified the root cause of the Kinesis Data Streams event, and have completed immediate actions to prevent recurrence.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previous Update (12:43 PM PST):&lt;/strong&gt; We have restored all traffic to Kinesis Data Streams via all endpoints and it is now operating normally. We have also resolved the error rates invoking CloudWatch APIs. We continue to work towards full recovery for IoT SiteWise and Elastic Container Service; details of these services&amp;rsquo; status is below. All other services are operating normally. We have identified the root cause of the Kinesis Data Streams event, and have completed immediate actions to prevent recurrence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previous Update (11:43 PM PST):&lt;/strong&gt; We have restored all traffic to Kinesis Data Streams via all endpoints, and have resolved the error rates invoking CloudWatch APIs. We are continuing to closely monitor Kinesis and work toward full recovery of all services. We have identified the root cause of the Kinesis Data Streams event, and have completed immediate actions to prevent recurrence. Kinesis and CloudWatch are operating normally.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previous Update (10:30 PM PST):&lt;/strong&gt; We have restored all traffic to Kinesis Data Streams from Internet-facing endpoints, and we are continuing to incrementally restore all requests to Kinesis Data Streams using VPC Endpoints. We are also beginning to observe incremental recovery of CloudWatch metrics functionality for new incoming metrics, and working towards full recovery. The backlog of metrics will take additional time to populate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previous Update (9:06 PM PST):&lt;/strong&gt; Over the past two hours, we have continued to bring more traffic in to Kinesis Data Streams, which is leading to gradual recovery of applications that use Kinesis directly, as well as dependent services within the US-EAST-1 Region. We are bringing traffic in more slowly than anticipated while we closely monitor each change to ensure continued stability. We expect that over the next few hours, we will complete restoring Kinesis Data Streams to normal operations.&lt;/p&gt;
&lt;p&gt;CloudWatch metrics remain delayed in the US-EAST-1 Region. Once we have restored the throttles for Kinesis to previous levels, we will be restoring CloudWatch metrics functionality. We expect to see recovery of CloudWatch metrics at that stage for new incoming metrics, but the backlog of metrics may take additional time to populate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previous Update (6:23 PM PST):&lt;/strong&gt; We’d like to provide an update on the issue affecting the Kinesis Data Streams API, and other dependent services, within the US-EAST-1 Region. We have now fully mitigated the impact to the subsystem within Kinesis that is responsible for the processing of incoming requests and are no longer seeing increased error rates or latencies. However, we are not yet taking the full traffic load and are working to relax request throttles on the service. Over the next few hours we expect to relax these throttles to previous levels. We expect customers to begin seeing recovery as these throttles are relaxed over this timeframe.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title>Link Blog Relaunched</title>
      <link>https://www.thingelstad.com/2020/11/08/i-got-my.html</link>
      <pubDate>Sun, 08 Nov 2020 23:22:06 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/11/08/i-got-my.html</guid>
      <description>&lt;p&gt;I got my &lt;a href=&#34;https://www.thingelstad.com/projects/link-blog&#34;&gt;Link Blog&lt;/a&gt; up and running again. It is still plenty rough around the edges. This gives the links that I share in the &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly Thing&lt;/a&gt; a permanent home on the web.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;As an experiment I&amp;rsquo;ve also put the &lt;a href=&#34;https://commento.io&#34;&gt;Commento&lt;/a&gt; commenting system on it to see if that is interesting.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;I also created Index pages for sites so you can see all links I’ve save for a site. See this Index for the EFF website as an example.&lt;/p&gt;
&lt;p&gt;On my to do list is Annum pages that show statistics for each year.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Two Second Test</title>
      <link>https://www.thingelstad.com/2020/09/14/two-second-test.html</link>
      <pubDate>Mon, 14 Sep 2020 18:40:18 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/09/14/two-second-test.html</guid>
      <description>&lt;p&gt;I spent a lot of my career in media and publishing on the web. During that time one of the things that I came to appreciate more completely was the unique journalistic voice that news organizations have. Being responsible for the websites of a number of these sites, I felt it was absolutely critical that whatever Content Management Systems (CMS for those in the business) and other publishing systems we had must allow the journalists to express that unique voice to the reader, via the website. To this end I coined something that I called the &lt;strong&gt;Two Second Test&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The Two Second Test is simple. You should be able to show any person the front page of a news website for just &lt;strong&gt;two seconds&lt;/strong&gt; and they should be able to have a feel for what is happening at that moment. Is there big news? Did something great just happen? Something bad? You should be able to intuit it from just those two seconds.&lt;/p&gt;
&lt;p&gt;I was reminded of this concept recently when Larry Kramer shared &lt;a href=&#34;https://medium.com/@lkramer_18658/how-9-11-looked-on-a-newly-created-internet-ed117d9083d&#34;&gt;How 9/11 looked on a newly created Internet on that day&lt;/a&gt;. His article includes pictures of two framed screen grabs of the MarketWatch page from that day.&lt;/p&gt;
&lt;p&gt;I looked at those in Two Seconds you knew something big was happening.&lt;/p&gt;
&lt;p&gt;This might seem easy, but the vast majority of news websites even today fail this test. Pick your favorite sites and go to them, look for two seconds, and see what you know. Ask yourself if you know anything? Mostly you don&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Most organizations fail this test because of the constraints of their content management system. In order to make their sites work, they have dozens of templates, and they flow articles and blurbs from their CMS into various templates. They change the template for what is going on in the world, but they are &lt;strong&gt;always working in a template&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In order to pass the Two Second Test you have to give your newsroom a canvas to work on, not a color-by-numbers template. Along with that power comes risk. The newsroom could put something on the site that has a technical flaw of some sort. Having a strong operational connection between the newsroom and the technology team limits that risk though.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/08/09/coronavirus-maps-via.html</link>
      <pubDate>Sun, 09 Aug 2020 08:09:14 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/08/09/coronavirus-maps-via.html</guid>
      <description>&lt;p&gt;Coronavirus maps via the New York Times.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/55352b6bb6.jpg&#34; width=&#34;600&#34; height=&#34;371&#34; alt=&#34;Bubble map of the US showing coronavirus case counts by state, with California 556,100 plus, Florida 526,500 plus, and Texas 502,500 plus among the largest.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/8ebda10b24.jpg&#34; width=&#34;600&#34; height=&#34;372&#34; alt=&#34;Choropleth map of the US showing coronavirus case density by county, with darker red-orange areas concentrated in the South and East.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/07/16/the-robbinsdale-water.html</link>
      <pubDate>Thu, 16 Jul 2020 22:16:19 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/07/16/the-robbinsdale-water.html</guid>
      <description>&lt;p&gt;The Robbinsdale water tower may be more accurately described as a cell tower that happens to have water too.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/1713bf188e.jpg&#34; width=&#34;450&#34; height=&#34;600&#34; alt=&#34;Robbinsdale water tower covered in cellular antennas on a steel lattice frame at dusk with trees below.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/07/09/we-capped-off.html</link>
      <pubDate>Thu, 09 Jul 2020 11:01:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/07/09/we-capped-off.html</guid>
      <description>&lt;p&gt;We capped off #TeamSPS TechJam 2020 with a keynote from &lt;a href=&#34;https://twitter.com/caseyrosenthal&#34;&gt;Casey Rosenthal&lt;/a&gt; on resilient systems and the practices that enable and support that transition. He filled it with fabulous stories relating the core resiliency topics to historical problems. 🙌&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/c5b7a23ddc.jpg&#34; width=&#34;600&#34; height=&#34;422&#34; alt=&#34;Zoom recording of a man in a dark red shirt and glasses presenting a slide about the Evolution of complex system operations covering CI, CD, and Continuous Verification to 171 participants.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/07/08/love-the-enthusiasm.html</link>
      <pubDate>Wed, 08 Jul 2020 09:18:49 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/07/08/love-the-enthusiasm.html</guid>
      <description>&lt;p&gt;Love the enthusiasm and passion that &lt;a href=&#34;http://www.agiledeveloper.com/aboutus.html&#34;&gt;Dr. Venkat Subramaniam&lt;/a&gt; is sharing with #TeamSPS during TechJam! “Spearheading the Future of Programming” His love for the craft of programming is overflowing! 👩‍💻👨‍💻&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/75f9903d96.jpg&#34; width=&#34;400&#34; height=&#34;400&#34; alt=&#34;Middle-aged man with mustache and glasses seated outdoors with rocky mountain peaks and pine trees behind him&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>Happy 23rd Birthday BigCharts!</title>
      <link>https://www.thingelstad.com/2020/05/15/happy-rd-birthday.html</link>
      <pubDate>Fri, 15 May 2020 23:56:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/05/15/happy-rd-birthday.html</guid>
      <description>&lt;p&gt;On this day, 23 years ago, we launched &lt;a href=&#34;https://bigcharts.marketwatch.com/&#34;&gt;BigCharts.com&lt;/a&gt;. The time before and after that was fun, stressful, and filled with unknowns. It was a great ride. One of the defining experiences of my life. I love that the site is still around, serving charts for all that want! I’m sure code I wrote is still running on it. 😬&lt;/p&gt;
&lt;p&gt;I bet that it is one of the very few sites that can show a graph of the Dow Jones Industrial Average back to 1970. I know because I was the one that backloaded that data into the database!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/749d60b164.jpg&#34; width=&#34;600&#34; height=&#34;364&#34; alt=&#34;DJIA yearly candlestick chart from 1970 to 2020 on a log scale showing long-term growth from under 1000 to near 29000 with a momentum indicator below.&#34; /&gt;
&lt;p&gt;I love that the size of chart bigger than Large is still called &lt;strong&gt;Big&lt;/strong&gt;! I remember the laughter when we came up with that obvious label.&lt;/p&gt;
&lt;p&gt;It still is one of the few sites that will give you a &lt;a href=&#34;https://bigcharts.marketwatch.com/historical/default.asp?symb=Msft&amp;amp;closeDate=5%2F16%2F12&amp;amp;x=0&amp;amp;y=0&#34;&gt;historical quote&lt;/a&gt;, with the price info for a given day in the past, backing out splits.&lt;/p&gt;
&lt;p&gt;I remember the &lt;a href=&#34;https://bigcharts.marketwatch.com/up2.aspx&#34;&gt;up2.aspx&lt;/a&gt; page that we used for the load balancers to make sure servers were healthy.&lt;/p&gt;
&lt;p&gt;Here is a team photo from June 9, 1999. It was a tech team dinner at Buca. What a great team!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/57c62c7544.jpg&#34; width=&#34;600&#34; height=&#34;400&#34; alt=&#34;Large group of roughly 20 people seated around a long table with red-checked tablecloths at Buca di Beppo restaurant, smiling at the camera.&#34; /&gt;
&lt;p&gt;I hope the site enjoys its 20s and is around for decades to come!&lt;/p&gt;
&lt;p&gt;I also &lt;a href=&#34;https://www.linkedin.com/posts/jthingelstad_on-this-day-23-years-ago-we-launched-bigchartscom-activity-6667291868579074048-M9Zy&#34;&gt;shared this on LinkedIn&lt;/a&gt; and hopefully we’ll get some old school BigCharts folks commenting.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Importing Jekyll site to micro.blog</title>
      <link>https://www.thingelstad.com/2020/05/02/importing-jekyll-site.html</link>
      <pubDate>Sat, 02 May 2020 08:43:07 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/05/02/importing-jekyll-site.html</guid>
      <description>&lt;p&gt;I successfully migrated my blog archive from &lt;a href=&#34;https://jekyllrb.com&#34;&gt;Jekyll&lt;/a&gt; to &lt;a href=&#34;https://micro.blog&#34;&gt;micro.blog&lt;/a&gt;. I haven&amp;rsquo;t seen much written about this, so let me share how I did it. This definitely requires a bit of hacking but the result worked very well. I followed the general pattern that &lt;a href=&#34;https://www.manton.org&#34;&gt;Manton Reece&lt;/a&gt; shared in his &lt;a href=&#34;https://www.manton.org/2018/11/12/timetable-migrated-to.html&#34;&gt;Timetable migration to micro.blog&lt;/a&gt; post.&lt;/p&gt;
&lt;p&gt;You can grab the code and use it as a starting point. The script won&amp;rsquo;t win any prizes for elegance, but it only needed to work once. Here is the &lt;a href=&#34;https://gist.github.com/jthingelstad/70ddb03da863f53c5ec622297c123db1&#34;&gt;Python code&lt;/a&gt; as well as the &lt;a href=&#34;https://gist.github.com/jthingelstad/e5ea874fcca7ff96b15fd84031211b81&#34;&gt;Jekyll template for JSONFeed&lt;/a&gt; that I used.&lt;/p&gt;
&lt;h3 id=&#34;get-content-ready&#34;&gt;Get Content Ready&lt;/h3&gt;
&lt;p&gt;Technically Jekyll is just a collection of Markdown files and image assets. it seems like it should be easy. However, Jekyll markdown files all have a variety of &lt;a href=&#34;https://jekyllrb.com/docs/front-matter/&#34;&gt;Front Matter&lt;/a&gt; metadata that is only meaningful to Jekyll. You almost certainly have &lt;a href=&#34;https://jekyllrb.com/docs/liquid/&#34;&gt;Liquid Tags&lt;/a&gt; in the content as well. So, let&amp;rsquo;s make Jekyll do the work of helping us out of its issues.&lt;/p&gt;
&lt;p&gt;I already had a &lt;a href=&#34;https://jsonfeed.org&#34;&gt;JSON Feed&lt;/a&gt; endpoint. I removed the post limit from it so it would generate a JSON Feed with all blog posts instead of just the most recent 10. I then told Jekyll to generate the site &lt;code&gt;jekyll build&lt;/code&gt; and I was pretty much ready. I now had a full JSON Feed file with every blog post with no Liquid Tags either.&lt;/p&gt;
&lt;p&gt;I didn’t want to bring categories or tags over, but if you did you could easily add that to the JSON Feed export and catch it in the import.&lt;/p&gt;
&lt;h3 id=&#34;content-is-in-html&#34;&gt;Content is in HTML&lt;/h3&gt;
&lt;p&gt;The JSON Feed file is great, but the content is in HTML and I need Markdown to give to micro.blog. &lt;a href=&#34;https://pandoc.org&#34;&gt;Pandoc&lt;/a&gt; and &lt;a href=&#34;https://pypi.org/project/pypandoc/&#34;&gt;pypandoc&lt;/a&gt; did an awesome job at this. I created a Python 3 script to open the JSON Feed file as a JSON object and then iterate through the posts. I used Pandoc to convert each &lt;code&gt;content_html&lt;/code&gt; element into Markdown. Note I for sure would use Python 3 for the sensible handling of &lt;a href=&#34;https://en.wikipedia.org/wiki/UTF-8&#34;&gt;UTF-8&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This one line of code just made me gleeful.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;md = pypandoc.convert_text(i[&#39;content_html&#39;], &#39;md&#39;, format=&#39;html&#39;)&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;images&#34;&gt;Images&lt;/h3&gt;
&lt;p&gt;Now that I had Markdown I was getting really close but I have thousands of linked images to import as well. I need to get the images uploaded to micro.blog, and then I need to update the URLs.&lt;/p&gt;
&lt;p&gt;I created a regular expression (magic!) match to all image links that pointed to my own website. I could key this off a well defined path, &lt;code&gt;/assets/&lt;/code&gt;. Since I was working out of a generated static site those images were all on the local file system so I parsed out the path from the URL, checked to make sure the file was found and uploaded it to micro.blog. I then used the generated URL returned from micro.blog to update the old one in the Markdown. Markdown made this a lot easier without all the HTML cruft.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;urls = re.findall(r&#39;(?:https://www.thingelstad.com)?(/assets/[\.\w\d\/\_\-]+)&#39;, md)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Testing if the file exists was a good validator. I found a few issues with my regular expression and a couple of badly formatted blog posts that failed and was able to fix the formatting before importing. Also, since I only needed to run this once for some of the issues it was easier to fix the JSON Feed source instead of coding around it.&lt;/p&gt;
&lt;h3 id=&#34;import&#34;&gt;Import!&lt;/h3&gt;
&lt;p&gt;With all posts successfully converting via Pandoc, and all images matching on the file system, I ran the script with a polite &lt;code&gt;sleep(2)&lt;/code&gt; wait in the loop to make things easier for micro.blog servers and it all worked like a charm. Imported over 1,600 posts and 800MB of images.&lt;/p&gt;
&lt;p&gt;I still have broken links internally. I don&amp;rsquo;t think there would be any way for me to fix internal links between posts because everything is changing for those, but I&amp;rsquo;ll use &lt;a href=&#34;https://peacockmedia.software/mac/integrity/free.html&#34;&gt;Integrity&lt;/a&gt; to scan for broken internal links and fix them manually.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Suggestions for importing Jekyll blog to micro.blog?</title>
      <link>https://www.thingelstad.com/2020/04/18/suggestions-for-importing.html</link>
      <pubDate>Sat, 18 Apr 2020 06:23:53 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/04/18/suggestions-for-importing.html</guid>
      <description>&lt;p&gt;Micro.blog community: I need to migrate about 8,000 blog posts from a Jekyll site to micro.blog. Does anyone have suggestions or pointers to existing tools?&lt;/p&gt;
&lt;p&gt;At first glance I thought I would write a Python script to recurse the &lt;code&gt;_posts&lt;/code&gt; directory and hit micro.blog&amp;rsquo;s API creating each post. However, I have Jekyll tags in those markdown files that will cause serious challenges. Now I&amp;rsquo;m thinking I should use Jekyll to publish the site and then use the RSS or even a custom file, perhaps JSONFeed, to then import into micro.blog? Then I can make Jekyll do the hardest work for me.&lt;/p&gt;
&lt;p&gt;Anyone done this and can recommend an approach? This seems to be similar to the method &lt;a href=&#34;https://manton.org&#34;&gt;Manton Reece&lt;/a&gt; used when &lt;a href=&#34;https://www.manton.org/2018/11/12/timetable-migrated-to.html&#34;&gt;importing his podcast&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Osmo Coding Duo</title>
      <link>https://www.thingelstad.com/2020/04/15/osmo-coding-duo.html</link>
      <pubDate>Wed, 15 Apr 2020 19:58:39 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/04/15/osmo-coding-duo.html</guid>
      <description>&lt;p&gt;Osmo was running a sale recently and I decided to fill out our collection. We got the &lt;strong&gt;&lt;a href=&#34;https://www.playosmo.com/en/mindracers/&#34;&gt;Hot Wheels™ MindRacers&lt;/a&gt;&lt;/strong&gt; which I didn’t think was going to be that fun, but surprised me by being super fun to play together. I also ordered &lt;strong&gt;&lt;a href=&#34;https://www.playosmo.com/en/landing-coding-duo/&#34;&gt;Coding Duo&lt;/a&gt;&lt;/strong&gt;, in part because we already had &lt;strong&gt;&lt;a href=&#34;https://www.playosmo.com/en/coding/&#34;&gt;Coding Awbie&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&#34;https://www.playosmo.com/en/coding-jam/&#34;&gt;Coding Jam&lt;/a&gt;&lt;/strong&gt;, so Coding Duo was just another $15 to get two pieces to put it all together. Tyler fired up Coding Duo and has been having a lot of fun with it, and I am very impressed with what a learning experience this is.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/26ab066a53.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;Osmo coding game setup on a white countertop with colorful physical coding tiles arranged in sequences next to an iPad on a stand showing a platformer game level.&#34; /&gt;
&lt;p&gt;Coding Duo uses all of the control pieces of both Coding Awbie and Coding Jam, and introduces the idea of having two characters that you write sequences of code for independently. To play the game, you have to write a distinct sequence of actions for each character, and to make it even more interesting each character has unique capabilities. To complete the levels, Tyler learned a bunch about debugging, getting the programs to interact with each other, and building complex sequences that interact with each other. You can also have two people play together by each writing a program of their own.&lt;/p&gt;
&lt;p&gt;It is a very impressive learning environment. I would highly recommend it for any kids that want to explore logic and coding concepts.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/03/13/im-surprised-the.html</link>
      <pubDate>Fri, 13 Mar 2020 20:25:49 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/03/13/im-surprised-the.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m surprised the NY Times isn&amp;rsquo;t making an animated version of &lt;a href=&#34;https://www.nytimes.com/interactive/2020/world/coronavirus-maps.html&#34;&gt;their Coronavirus maps&lt;/a&gt; available that shows the progression.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/57b3de212c.jpg&#34; width=&#34;600&#34; height=&#34;393&#34; alt=&#34;US map showing COVID-19 case counts by state with red circles sized by outbreak scale, largest in Washington, California, New York, and Florida.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2020/02/25/wow-pythonista-finally.html</link>
      <pubDate>Tue, 25 Feb 2020 21:07:28 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/02/25/wow-pythonista-finally.html</guid>
      <description>&lt;p&gt;Wow — &lt;a href=&#34;https://apps.apple.com/us/app/pythonista-3/id1085978097&#34;&gt;Pythonista 3&lt;/a&gt; finally got an upgrade to some of the newest iOS features! And release notes make it clear further Shortcuts support is on the way! 👏&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/12/21/you-could-tell.html</link>
      <pubDate>Sat, 21 Dec 2019 10:27:36 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/12/21/you-could-tell.html</guid>
      <description>&lt;p&gt;You could tell a thousand stories, probably more, from this graph in the Economist “&lt;a href=&#34;https://www.economist.com/graphic-detail/2019/10/18/the-strange-revival-of-vinyl-records&#34;&gt;The strange revival of vinyl records&lt;/a&gt;”.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/31b0b3dfd8.jpg&#34; width=&#34;600&#34; height=&#34;354&#34; alt=&#34;Stacked bar chart showing US recorded-music revenues 1973-2018 peaking near 21bn dollars around 2000 then declining as streaming rises.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/11/21/sounds-great-and.html</link>
      <pubDate>Thu, 21 Nov 2019 20:17:36 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/11/21/sounds-great-and.html</guid>
      <description>&lt;p&gt;Sounds great, and I&amp;rsquo;m having fun trying to virtually follow #KubeCon. Maybe next year I can join the fun!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Packed house listening to AuthN and AuthZ from the &lt;a href=&#34;https://x.com/Yelp?ref_src=twsrc%5Etfw&#34;&gt;@Yelp&lt;/a&gt; team sharing their ServiceMesh security story. This is a great talk to think through security requirements you’re trying to solve for with your mesh. I recommend the video! &lt;a href=&#34;https://x.com/hashtag/KubeCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#KubeCon&lt;/a&gt; &lt;a href=&#34;https://t.co/O09hKm80G2&#34;&gt;pic.twitter.com/O09hKm80G2&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/1197594117695406080?ref_src=twsrc%5Etfw&#34;&gt;November 21, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/11/21/great-to-see.html</link>
      <pubDate>Thu, 21 Nov 2019 20:16:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/11/21/great-to-see.html</guid>
      <description>&lt;p&gt;Great to see #TeamSPS wrapping up a fantastic trip to #KubeCon!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;It&amp;#39;s incredibly hard to leave &lt;a href=&#34;https://x.com/hashtag/KubeCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#KubeCon&lt;/a&gt; in sunny San Diego. I wish it was here every year! &lt;a href=&#34;https://x.com/hashtag/TeamSPS?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#TeamSPS&lt;/a&gt; had an awesome trip filled with tons of learning and new friends. Cheers to the continued growth of a great community! &lt;a href=&#34;https://t.co/awKFrxse4w&#34;&gt;pic.twitter.com/awKFrxse4w&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/1197672951581040641?ref_src=twsrc%5Etfw&#34;&gt;November 22, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/11/20/kubernetes-on-jets.html</link>
      <pubDate>Tue, 19 Nov 2019 22:37:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/11/20/kubernetes-on-jets.html</guid>
      <description>&lt;p&gt;Kubernetes on jets? Neat!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;I have to say, I’m really blown away by the &lt;a href=&#34;https://x.com/hashtag/DOD?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#DOD&lt;/a&gt; talk at &lt;a href=&#34;https://x.com/hashtag/KubeCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#KubeCon&lt;/a&gt;! Really impressive to see the stacks they are using. “We don’t run huge clusters, we run many little clusters, weapon systems, business systems, etc... “ They are even running &lt;a href=&#34;https://x.com/hashtag/kubernetes?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#kubernetes&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://x.com/hashtag/istio?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#istio&lt;/a&gt; on jets! &lt;a href=&#34;https://t.co/HwmTFi0Qrt&#34;&gt;pic.twitter.com/HwmTFi0Qrt&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/1196882449289998336?ref_src=twsrc%5Etfw&#34;&gt;November 19, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/11/14/afternoon-workshop-and.html</link>
      <pubDate>Thu, 14 Nov 2019 15:25:47 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/11/14/afternoon-workshop-and.html</guid>
      <description>&lt;p&gt;Afternoon workshop and training on Essential SAFe for our Technology and Product leaders! 🙌🏆 #TeamSPS&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/41c58d837e.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Dozens of professionals seated at white tables in a modern training room attend an Essential SAFe for SPS Tech Managers workshop, with multiple screens displaying the session title overhead.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/10/23/mark-oleary-and.html</link>
      <pubDate>Wed, 23 Oct 2019 20:19:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/10/23/mark-oleary-and.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/mark-o-leary-b939a31/&#34;&gt;Mark O&amp;rsquo;Leary&lt;/a&gt; and I shared context and excitement with one of our teams as we continue our adoption of Scaled Agile practices. #TeamSPS&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/20abbeeabb.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Gray-haired man in glasses and sweater addresses a large seated audience in an open office space with a Business Context slide on screen behind him.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>DevOpsDays MSP 2019 - Day 2</title>
      <link>https://www.thingelstad.com/2019/08/07/devopsdays-msp-day.html</link>
      <pubDate>Wed, 07 Aug 2019 09:12:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/08/07/devopsdays-msp-day.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt; has done a fabulous job creating an inclusive event. Hearing from so many diverse voices is refreshing. With all of that goodness, it is jarring when sponsors address the group with &amp;ldquo;hey guys&amp;rdquo;. Make sure your message reaches the entire audience.&lt;/p&gt;
&lt;p&gt;Day 2 opening keynote for DevOpsDays MSP from &lt;a href=&#34;https://twitter.com/johnrengelman&#34;&gt;John Engelman&lt;/a&gt; on Cascading Failure. &lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/dd503f8495.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Man standing on a conference stage presenting a Target-branded slide titled A Day A Week A Month in a Cascading Failure at a DevOpsDays event.&#34; /&gt;
&lt;p&gt;“We were super confident in that answer, and we were super wrong.” &lt;a href=&#34;https://twitter.com/johnrengelman&#34;&gt;John Engelman&lt;/a&gt;. I’ve been there many times in incidents. Whenever you are “super confident”, use that as a trigger for what you might be missing.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/4c78d2da0f.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on a conference stage at devopsdays presenting a graph about cascading failure, with live captions displayed on a side monitor and an audience seated in the foreground.&#34; /&gt;
&lt;p&gt;Great &lt;a href=&#34;https://spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt; overview from &lt;a href=&#34;https://www.linkedin.com/in/omnipitous/&#34;&gt;Nate Anderson&lt;/a&gt;, &lt;a href=&#34;https://www.linkedin.com/in/sanjesh-kumar-9b631630/&#34;&gt;Sanjesh Kumar&lt;/a&gt;, and &lt;a href=&#34;https://www.linkedin.com/in/olivia-alberts/&#34;&gt;Olivia Alberts&lt;/a&gt; sharing some of the amazing things our team does, the powerful tech we use, and our learning culture! Come &lt;a href=&#34;https://jobs.spscommerce.com&#34;&gt;join our team&lt;/a&gt;! #TeamSPS 🤩&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/efa15309d9.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Three presenters on a conference stage at DevOpsDays showing a slide featuring Fruit of the Loom, Target, Amazon, and Walmart logos&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/944ce8afe2.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Three presenters stand on a conference stage at DevOpsDays with an SPS Commerce SPS Gives Back slide projected behind them&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/4797a9444f.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Three presenters on a conference stage at DevOpsDays, with a large screen showing an SPS Commerce Gives Back slide featuring a group photo and live captions below.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/GreenReedTech&#34;&gt;Martez Reed&lt;/a&gt; now sharing with DevOpsDays MSP about Intelligent Deployment Pipelines.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/d31602bd0c.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker presenting Intelligent Deployment Pipelines by Martez Reed on stage at a DevOps Days MSP conference with live captions displayed on a side screen.&#34; /&gt;
&lt;p&gt;Next up at DevOpsDays MSP, &lt;a href=&#34;https://twitter.com/SerenaTiede&#34;&gt;Serena Tiede&lt;/a&gt; covering Security Logging and the keys to making it work well.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/7dbddefa0d.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at a DevOpsDays conference presenting a talk titled Timber Security Logging at UnitedHealth Group, with audience members seated in the foreground.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.alicegoldfuss.com&#34;&gt;Alice Goldfuss&lt;/a&gt; bringing an awesome closing keynote “The Container Operator’s Manual” for &lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays Minneapolis&lt;/a&gt;!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/e08c19c757.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays presenting a slide titled The Container Operators Manual with Twitter handle alicegoldfuss, audience seated in foreground&#34; /&gt;
&lt;p&gt;Super engaging, enlightening, and humorous container talk from &lt;a href=&#34;https://blog.alicegoldfuss.com&#34;&gt;Alice Goldfuss&lt;/a&gt;! 🙌😁&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/b03ed83c6d.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on a blue-lit conference stage at DevOpsDays presenting a slide reading Do you want containers or a blog post, with live captions displayed on a side screen and an audience seated in the&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>DevOpsDays MSP 2019 - Day 1</title>
      <link>https://www.thingelstad.com/2019/08/06/devopsdays-msp-day.html</link>
      <pubDate>Tue, 06 Aug 2019 09:13:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/08/06/devopsdays-msp-day.html</guid>
      <description>&lt;p&gt;I’m so happy that &lt;a href=&#34;https://www.spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt; can join these amazing sponsors in support of the organizers of &lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt; to create an amazing event for our community!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/efec4a45ae.jpg&#34; width=&#34;599&#34; height=&#34;600&#34; alt=&#34;DevOpsDays MSP 2019 sponsor banner listing Platinum, Gold, Silver, and A La Carte sponsors, with attendees networking in the hotel ballroom behind it.&#34; /&gt;
&lt;p&gt;We have a bunch of #TeamSPS members representing &lt;a href=&#34;https://www.spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt; at &lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt; today!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/31f831a8bd.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;Four people at an SPS Commerce conference booth with banners reading Infinite Retail Power and Our Growth Is Your Opportunity.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/dc8e615a71.jpg&#34; width=&#34;600&#34; height=&#34;599&#34; alt=&#34;Four people wearing conference lanyards smile around a tall round table with stickers and drinks at a tech conference.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; kicking off &lt;a href=&#34;http://www.devopsmsp.org&#34;&gt;DevOpsDays MSP&lt;/a&gt;! Bridget is such an amazing contributor to our great community!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/13bf1f8e51.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;A speaker stands at a podium on a large conference stage in front of a packed audience, with a screen displaying devopsdays MSP 2019 and a city skyline illustration.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/dc144f186a.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Large hotel ballroom filled with attendees seated in rows facing a stage with three screens displaying devopsdays MSP 2019&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt; keynote from Liz Fong-Jones &lt;a href=&#34;https://twitter.com/lizthegrey&#34;&gt;@lizthegrey&lt;/a&gt; on reducing complexity in systems.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/e16fa92aab.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting slide titled Detangling complex systems with compassion and production excellence&#34; /&gt;
&lt;p&gt;“Heroism isn’t sustainable.” &lt;a href=&#34;https://twitter.com/lizthegrey&#34;&gt;Liz Fong-Jones&lt;/a&gt;. This is more than an individual thing, it’s a culture thing. Always beware of hidden incentives that encourage heroism in your culture.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/808fd4fe0e.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker at a DevOpsDays conference podium beside a slide reading Heroism isn&#39;t sustainable with a cartoon superhero illustration and live captions visible.&#34; /&gt;
&lt;p&gt;“Lack of observability is a systemic risk.” &lt;a href=&#34;https://twitter.com/lizthegrey&#34;&gt;Liz Fong-Jones&lt;/a&gt;. This is a strong way to position observability, and frame it in a broader context. Very good keynote to start &lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt;!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/7f663c68ed.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting a slide reading Lack of observability is systemic risk to a seated audience.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/yolonda-smith/&#34;&gt;Yolonda Smith&lt;/a&gt; bringing always important security topics to DevOpsDays MSP!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/cc42ee9d01.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting a talk titled Secure Enough with live captions visible on a side monitor.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/ysmithnd&#34;&gt;Yolonda Smith&lt;/a&gt; with valuable perspectives on security. Teams need to acknowledge and address all of these perspectives in order to move forward effectively to create more secure services.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/2414a3b790.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker in colorful dress and red headwrap presents a Perspectives on Security Venn diagram slide at a DevOpsDays conference.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/93ce357808.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Slide titled Perspectives on Security showing three overlapping circles labeled security, product, and engineering listing friction points each team faces&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/jessitron&#34;&gt;Jessica Kerr&lt;/a&gt; sharing Principles of Collaborative Automation at &lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/ffcb8410b7.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting a slide titled Principles of Collaborative Automation to a seated audience.&#34; /&gt;
&lt;p&gt;I learned a new word from &lt;a href=&#34;https://twitter.com/jessitron&#34;&gt;Jessica Kerr&lt;/a&gt; “&lt;a href=&#34;https://norabateson.wordpress.com/2015/11/03/symmathesy-a-word-in-progress/&#34;&gt;symmathesy&lt;/a&gt;”. Mutual learning in living systems. I like giving this powerful process a definition. This is key to continuous improvement. 🤔&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/e745070ff0.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting a slide titled Symmathesy showing a diagram of interconnected learning parts, audience seated in foreground&#34; /&gt;
&lt;p&gt;This is a great message from &lt;a href=&#34;https://twitter.com/jessitron&#34;&gt;Jessica Kerr&lt;/a&gt;, with &lt;a href=&#34;https://medium.com/code-for-america/john-allspaw-getting-the-messy-details-is-critical-59e641aa0a77&#34;&gt;reference to John Allspaw&lt;/a&gt;, success begets complexity. That complexity delivers value, and more success. Repeat. 👍&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/b553ef9412.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting a slide showing the words success and complexity with arrows between them, audience seated in foreground.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/Lanooba&#34;&gt;Nivia Sedai&lt;/a&gt; sharing about the Ghost in the Machine, the boundaries of AI and ML in our technology systems.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/d7bec718cd.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting Ghost in the Machine slide about programs running contrary to expectations, audience seated in foreground.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/Lanooba&#34;&gt;Nivia Sedai&lt;/a&gt; with a powerful message highlighting many examples of the negative impacts from the lack of diversity in technology teams. Also a strong message around technology ethics.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/63a910301f.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Speaker on stage at DevOpsDays conference presenting a slide reading You have agency; use it! to a seated audience in a decorated ballroom.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>Automatic Git Pushes with Gitwatch</title>
      <link>https://www.thingelstad.com/2020/04/21/automatic-git-pushes.html</link>
      <pubDate>Sat, 29 Jun 2019 22:25:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/04/21/automatic-git-pushes.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using &lt;a href=&#34;https://blot.im/&#34;&gt;blot.im&lt;/a&gt; to publish my websites for a while. Originally Blot only used Dropbox to manage content for your website, but it now supports &lt;code&gt;git&lt;/code&gt; and that is my preference. One of the things I haven&amp;rsquo;t liked though is having to do git commands all the time as I do things on my blog. Then I found &lt;a href=&#34;https://github.com/gitwatch/gitwatch&#34;&gt;gitwatch&lt;/a&gt; and it is perfect for this use case.&lt;/p&gt;
&lt;p&gt;Gitwatch watches a folder and anytime something changes it automatically commits it and optional pushes it to a remote. Using gitwatch I can set it running in the background and then do whatever I want with my website and it updates automatically in the background. Pretty great!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/03/09/one-of-our.html</link>
      <pubDate>Sat, 09 Mar 2019 19:01:59 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/03/09/one-of-our.html</guid>
      <description>&lt;p&gt;I had a great time checking out the fun and creative projects one of our #TeamSPS teams did during a post-release Hackathon! Several API mashups, productivity quick wins, mobile, and of course Slack bots! 👍😎&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/61e55739d1.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Man in plaid shirt presents at a hackathon, using a laptop to display a web app on a large projector screen for a seated audience in a modern office.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/1ef2e19634.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Woman presenting a slide titled WIT Get After It to a group of about 20 people seated in a modern office common area.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2019/02/08/tesla-your-url.html</link>
      <pubDate>Fri, 08 Feb 2019 22:03:24 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2019/02/08/tesla-your-url.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.tesla.com&#34;&gt;Tesla&lt;/a&gt;, your HTML encoding is showing.  &lt;code&gt;&amp;amp;&lt;/code&gt; 😳&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/7d4f650ad7.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;Tesla touchscreen calendar showing Book Club Meeting at Lake and Irving with an HTML encoding bug displaying ampersand as and-amp instead of and symbol.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>Hack the Gap 2019</title>
      <link>https://www.thingelstad.com/2020/04/21/hack-the-gap.html</link>
      <pubDate>Sun, 27 Jan 2019 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2020/04/21/hack-the-gap.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.hackthegap.com/&#34;&gt;Hack the Gap&lt;/a&gt; hosted their 5th annual Hackathon for women and non-binary individuals this weekend. I was able to attend the demo event today where each team showcased what they created. There were cool ideas, with a lot of progress in such a short period of time.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/1046f6a346.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;Circular wooden badge with Hack the Gap printed in bold distressed lettering, resting on blue denim fabric.&#34; /&gt;
&lt;p&gt;The organizers kicked the demos off.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/2bddfd5b7b.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Two presenters stand at a podium at the Glen Nelson Center at American Public Media, one speaking into a microphone, with an audience seated facing them.&#34; /&gt;
&lt;h3 id=&#34;securiosity&#34;&gt;Securiosity!&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/7f73ad4b96.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Group of women standing in a row presenting at a hackathon event, with Avoid Digital Hooligans slides projected on screens behind them and an audience seated in white chairs facing them.&#34; /&gt;
&lt;p&gt;Security education for non-technical people. Built with React. They worked as a group to get the initial things running, then split into feature teams. Design friendly focus. &lt;a href=&#34;https://www.humaaans.com&#34;&gt;Humaaans&lt;/a&gt; free and inclusive image library. Accessibility focused.&lt;/p&gt;
&lt;p&gt;🏆 &lt;em&gt;I put my voting coin in for this team. I liked their design and approach to security education.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;whenineedu&#34;&gt;whenIneedU&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/45f9e4c4b9.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Group of seven people standing on a stage presenting their whenIneedU project at a hackathon, with slides visible on two screens behind them.&#34; /&gt;
&lt;p&gt;Helping people break out of episodes of anxiety or depression. Used JavaScript, Java, Android, Twilio. Sends personalized affirmations, relaxing activities, and helps you connect with friends and family. Watches your location and detect if you haven&amp;rsquo;t gone anywhere for a long time. Uses text messages to reach out and request connections on your behalf.&lt;/p&gt;
&lt;h3 id=&#34;ready-play&#34;&gt;Ready Play&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/f29e251edc.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Four people stand on a stage presenting their Ready Play app at a hackathon while an audience watches from white chairs in a bright modern office space.&#34; /&gt;
&lt;p&gt;Help navigate family daycare, activities and camps for kids, focused on summer activities. Complexity around logistics, themes, and costs. Built using React.js and Elastic Search backend. Framework provided fast mocking, and allowed easy acquisition of real data.&lt;/p&gt;
&lt;h3 id=&#34;hack-the-bra&#34;&gt;Hack the Bra&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/c79a8b7cde.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Six women stand on a stage presenting to a seated audience, one holding a microphone, with projected slides and a Lunar Startups banner visible behind them.&#34; /&gt;
&lt;p&gt;Help with sizing and determining best fit for bras. Focusing on measurement for fit. Built with React.js. The &amp;ldquo;BRA-culator&amp;rdquo; with video walk-through to guide you through measurement. Discovery, rapid prototyping and co-creation were the focus for the team. Not focusing on e-commerce, but instead education.&lt;/p&gt;
&lt;h3 id=&#34;make-friends-minnesota&#34;&gt;Make Friends Minnesota&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/4db75074d2.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Team of five women presenting Make Friends Minnesota project at a hackathon in a modern office space with audience seated in front&#34; /&gt;
&lt;p&gt;Connect the 5.6 million people in Minnesota. Meet people, make friends, and have fun. Recommends friends. Focused on starting connections safe and easy. Uses Facebook for login. Builds a profile using an interest survey. Built using Node and Express with EJS templating engine.&lt;/p&gt;
&lt;h3 id=&#34;seshat-swap&#34;&gt;Seshat Swap&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/9d26253c79.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Four presenters on a stage at Lunar Startups speak to a seated audience, with a Seshat Swap slide displayed on a screen behind them.&#34; /&gt;
&lt;p&gt;Making access to books written by people of color more accessible, focusing on very long hold times at the library. Try to get more access without having to purchase the book. Allow users to exchange, or indicate wish lists of books, in marginalized communities. Built with React with Firebase. Non-profit effort to pay for shipping costs. Sort of a virtual, crowd funded library.&lt;/p&gt;
&lt;h3 id=&#34;cat-flat&#34;&gt;Cat Flat&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/93fa02d2ef.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Seven women standing at the front of a conference room presenting Team Cat Flat at a hackathon, with a slide listing team members and roles projected behind them.&#34; /&gt;
&lt;p&gt;Small, connected DIY cat shelter that detects health of the cat and provides shelter, warmth and a place for stray cats to stay safe. React app with Express server and SQL database. &lt;a href=&#34;https://www.particle.io&#34;&gt;Particle&lt;/a&gt; Photon and Particle Cloud in cat shelter to run sensors. Node server to send data to the server. Revenue by selling the flats pre-made.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A bit to my surprise, I almost voted for this team. I really liked how they used the IoT stuff to make this a smart device.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;little-free-library&#34;&gt;Little Free Library&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/e34e19529e.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Six people standing on a stage presenting the Little Free Library Online Catalog project to a seated audience in a modern event space.&#34; /&gt;
&lt;p&gt;Leveraging the existing library of micro-libraries. Largest predictor of kids reading levels is the quantity of books in the home. Goal is to make it possible to get 100 books in every home. Card catalog of free libraries close to you, with inventory capabilities to check out or indicate that you are going to keep it. Allow steward to manage their inventory.&lt;/p&gt;
&lt;h3 id=&#34;sweat-connect&#34;&gt;Sweat Connect&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/8cf7d3c067.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Four people standing at the front of a room presenting their Sweat Connect project at a hackathon demo event, with a screen displaying team member names behind them.&#34; /&gt;
&lt;p&gt;Need a workout friend? Increase frequency and help friends with anxiety about going to the gym. Create profile and facilitate connecting with others to workout. Built with Angular 7, to allow for desktop and mobile. Gather specific data around your gym, time preferences and goals.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I think this team could have put a go-to-market strategy of partnering with gyms and offering a white-label version of their service.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;planet&#34;&gt;Planet&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/ddd39990e7.jpg&#34; width=&#34;600&#34; height=&#34;337&#34; alt=&#34;Group of six women standing at the front of a conference room presenting to a seated audience, with a Lunar Startups sign and a screen displaying a mobile app behind them.&#34; /&gt;
&lt;p&gt;Planning tools for coordinating gatherings. Event planning templates, collaborate on tasks, and good for discovery. Built React and Node. Google Maps for location.&lt;/p&gt;
&lt;h3 id=&#34;give-back&#34;&gt;Give Back&lt;/h3&gt;
&lt;p&gt;It makes me happy that we at &lt;a href=&#34;https://spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt; have been able to support Hack the Gap for a number of years now!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/9f589b70a2.jpg&#34; width=&#34;600&#34; height=&#34;800&#34; alt=&#34;Sponsor board on an easel listing Hack the Gap supporters by tier including Target, Twilio, Optum, Salesforce, and others&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>Macro Blog?</title>
      <link>https://www.thingelstad.com/2018/12/29/macro-blog.html</link>
      <pubDate>Sat, 29 Dec 2018 20:35:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/12/30/macro-blog.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve had a hard time finding a blog platform that I really enjoy. I tired a long time ago of the WordPress ecosystem. It is a big and vibrant space, but it&amp;rsquo;s too clunky and now the new Gutenberg changes are causing a huge uproar. A couple of years ago I moved all my content into Markdown and setup Jekyll. I first used GitHub Pages to host it, but then moved it to Netlify so I could have solid SSL. I value the benefits of static sites. But, authoring content in them takes significantly more effort. I miss simply opening up my browser and typing! Having to do git commands and such is just enough friction to cause me to publish much less.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been very happy with the continued development of micro.blog though, and a bit inspired by &lt;a href=&#34;https://www.manton.org&#34;&gt;Manton Reece&amp;rsquo;s&lt;/a&gt; site where he has brought all of his blog content into one place. Why not use micro.blog for longer content? 🤷&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/11/28/104016.html</link>
      <pubDate>Wed, 28 Nov 2018 11:40:16 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/11/28/104016.html</guid>
      <description>&lt;p&gt;Very fun to see my former Dow Jones colleague &lt;a href=&#34;https://www.linkedin.com/in/dean-a-del-vecchio-66a874/&#34;&gt;Dean Del Vecchio&lt;/a&gt; on stage at AWS re:Invent 2018! 👏 &lt;a href=&#34;https://press.aboutamazon.com/news-releases/news-release-details/guardian-life-insurance-selects-aws-its-preferred-cloud-provider/&#34;&gt;Guardian Life Insurance Selects AWS as Its Preferred Cloud Provider&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The house band thing at AWS re:Invent just doesn’t work for me. ✋&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Announcing &lt;a href=&#34;https://aws.amazon.com/lake-formation/&#34;&gt;AWS Lake Formation&lt;/a&gt;!&amp;rdquo; — &amp;ldquo;Sounds glacial!&amp;rdquo; 🤣&lt;/p&gt;
&lt;p&gt;AWS re:Invent house band playing &lt;a href=&#34;https://en.wikipedia.org/wiki/Blackbird_(Beatles_song)&#34;&gt;Blackbird&lt;/a&gt; from The Beatles went from just being bad to actually making me angry. 😡&lt;/p&gt;
&lt;p&gt;Amazon &lt;a href=&#34;https://aws.amazon.com/qldb/&#34;&gt;Quantum Ledger Database&lt;/a&gt; and &lt;a href=&#34;https://aws.amazon.com/managed-blockchain/&#34;&gt;Managed Blockchain&lt;/a&gt; look like good building blocks.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/11/04/ios-has-pythonista.html</link>
      <pubDate>Sun, 04 Nov 2018 23:54:09 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/11/05/ios-has-pythonista.html</guid>
      <description>&lt;p&gt;iOS has Pythonista for Python, and Scriptable is awesome for JavaScript, but I wish there was a &lt;a href=&#34;https://www.lua.org&#34;&gt;Lua&lt;/a&gt; version of one or both of them. Would be fun to use Lua to automate iOS and create helper scripts. All augmenting Shortcuts capabilities! 🤓&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Goodbye to my friend, David Hussman</title>
      <link>https://www.thingelstad.com/2018/08/23/goodbye-to-my.html</link>
      <pubDate>Thu, 23 Aug 2018 21:16:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/08/23/goodbye-to-my.html</guid>
      <description>&lt;p&gt;The last time I saw my friend David Hussman we met at &lt;a href=&#34;https://www.redwagon-mpls.com&#34;&gt;Red Wagon Pizza&lt;/a&gt; and enjoyed an extended evening of pepperoni pizza and several glasses of a delicious red wine. We initially sat inside to avoid some scattered rain, but then transitioned outside to enjoy a gorgeous evening, great wine and even better conversation. Like most times that David and I got together the conversation never had a gap and flowed all over the place.&lt;/p&gt;
&lt;p&gt;I commented to David that he seemed remarkably well. It had been well over a year since David called to let me know about his cancer diagnosis. When he called he was talking weeks and months. Here we were drinking glasses of wine and laughing well over a year later. He was sharing stories of his recent trip to Italy with his family. It sounded amazing and I could almost be fooled into thinking that David wasn&amp;rsquo;t sick. But he definitely was.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/8e0426d5db.jpg&#34; alt=&#34;Person with long hair and glasses resting clasped hands against chin in a thoughtful pose, black and white portrait&#34;&gt;
&lt;p&gt;I first met David when I was CTO for MarketWatch. One of the engineers on our team knew him and figured he could help us out with some of the things we were doing. I instantly liked David&amp;rsquo;s insight, his directness and ability to see through the messy stuff and get right to the problem.&lt;/p&gt;
&lt;p&gt;David and I were able to combine forces several times over the next 25 years. We had what I would describe as a mutual mentor relationship. One of us would often ping the other with the vague request to get some &amp;ldquo;hang time&amp;rdquo; and talk through some topic that was on our mind.&lt;/p&gt;
&lt;p&gt;David was always understated. His work to bring agile methods to companies was exceptional, and as a thought leader and speaker his stage was global. He presented at conferences around the world and brought a tremendous amount of energy and fun to the sessions. I enjoyed every talk I ever saw David give. There are &lt;a href=&#34;https://www.youtube.com/results?search_query=%22david+hussman%22&#34;&gt;dozens of them&lt;/a&gt; on YouTube if you never got the chance to see him present. I was really excited when he agreed to give the &lt;a href=&#34;https://www.youtube.com/watch?v=BEmLCCQNkGE&#34;&gt;Keynote at Minnebar 9&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Often times I thought it would be fun to build something with David, maybe do a project or something. Both of us were always busy with family and work things that pushed that off. I tried to get him to join my book club at one point but he deferred, citing his busy travel schedule.&lt;/p&gt;
&lt;p&gt;The last year I was able to connect with David on a more regular basis. A terminal cancer diagnosis provides some urgency. He approached his cancer with an amazing resilience. I can&amp;rsquo;t even imagine how hard such a thing is, but from what I could tell his approach to life made the time he got at the end so much better.&lt;/p&gt;
&lt;p&gt;David was often referred to as The Dude, in an admirable reference to &lt;a href=&#34;https://www.imdb.com/title/tt0118715/&#34;&gt;The Big Lebowski&lt;/a&gt;. He even coined his own law, Dude&amp;rsquo;s Law, that Value = Why / How. In life David always seemed to have a good handle on Why, and he kept his How pretty damn simple. The rest worked out as best as it can.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You will be sorely missed Dude!&lt;/strong&gt; &lt;a href=&#34;https://www.thingelstad.com/2018/02/24/your-version-number.html&#34;&gt;v5.6.50&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are some additional items I&amp;rsquo;ve indexed remembering David.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.caringbridge.org/visit/davidhussman2/journal&#34;&gt;David&amp;rsquo;s CaringBridge Journal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://devjam.com/honoring-david-hussman/&#34;&gt;Honoring David Hussman&lt;/a&gt; at DevJam&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.startribune.com/obituaries/detail/0000270262/&#34;&gt;Obituary&lt;/a&gt; in Star Tribune&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/pulse/too-soon-my-tribute-david-hussman-anne-steiner/&#34;&gt;Too Soon&amp;hellip;&lt;/a&gt; by Anne Steiner&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/pulse/remembering-david-hussman-dan-bennett/&#34;&gt;Remembering David Hussman&lt;/a&gt; by Dan Bennett&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/@taraswanson/dude-mentor-friend-a-tribute-to-david-hussman-be5db8c1a5a9&#34;&gt;Dude, Mentor, Friend&lt;/a&gt; by Tara Swanson&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.agilealliance.org/i-dig-the-great-minds-idea/&#34;&gt;&amp;ldquo;I Dig The Great Minds Idea&amp;rdquo;&lt;/a&gt; by Ray Arell&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://manoamano.org/blog/remembering-david-hussman/&#34;&gt;Remembering David Hussman&lt;/a&gt; at Mano a Mano&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/pulse/appreciating-friend-casey-rosenthal/&#34;&gt;Appreciating a Friend&lt;/a&gt; by Casey Rosenthal&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://rgalen.com/agile-training-news/2017/6/19/my-heros-david-hussman&#34;&gt;My Heroes&lt;/a&gt; by Robert Galen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.southwestjournal.com/voices/my-minneapolis/2017/08/the-dude-abides/&#34;&gt;The Dude abides&lt;/a&gt; in Southwest Journal&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/@cunningleah/coffee-with-grief-cb6271f4753d&#34;&gt;Coffee with Grief&lt;/a&gt; by Leah Cunningham&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/06/09/nice-talk-on.html</link>
      <pubDate>Sat, 09 Jun 2018 07:38:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/06/09/nice-talk-on.html</guid>
      <description>&lt;p&gt;Nice talk on &lt;a href=&#34;https://www.youtube-nocookie.com/watch?v=1YITF2_Yba8&amp;amp;t=8927s&#34;&gt;Automate Your Context&lt;/a&gt; at &lt;a href=&#34;https://monitorama.com&#34;&gt;Monitorama&lt;/a&gt; 2018 from &lt;a href=&#34;https://www.linkedin.com/in/andy-domeier-10813432/&#34;&gt;Andy Domeier&lt;/a&gt; of #TeamSPS! 👏 Teams that ship more, win more!&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1YITF2_Yba8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=8927&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>DevOps Minneapolis: Changing the Enterprise Session</title>
      <link>https://www.thingelstad.com/2018/06/07/devops-minneapolis-changing.html</link>
      <pubDate>Thu, 07 Jun 2018 18:14:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/06/07/devops-minneapolis-changing.html</guid>
      <description>&lt;p&gt;I had a great time talking about &lt;a href=&#34;https://www.meetup.com/DevOps-Minneapolis/events/249870267/&#34;&gt;Changing the Enterprise&lt;/a&gt; at this week&amp;rsquo;s DevOps Minneapolis Meetup with &lt;a href=&#34;https://www.linkedin.com/in/heather-mickman/&#34;&gt;Heather Mickman&lt;/a&gt; and &lt;a href=&#34;https://bridgetkromhout.com/&#34;&gt;Bridget Kromhout&lt;/a&gt;! My mic wasn&amp;rsquo;t working in the beginning but gets fixed a little later in the video.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/ZtMNWbugJCA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;It was a fun opportunity to talk about some of the concepts I&amp;rsquo;ve thought about with risk management, refactoring costs, how Agile and DevOps come together.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/06/05/nice-turnout-tonight.html</link>
      <pubDate>Tue, 05 Jun 2018 21:27:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/06/06/nice-turnout-tonight.html</guid>
      <description>&lt;p&gt;Nice turnout tonight for the &lt;a href=&#34;https://www.meetup.com/DevOps-Minneapolis/events/249870267/&#34;&gt;Dev Ops Minneapolis meetup&lt;/a&gt;. 👍 It makes me happy that we can host the community at &lt;a href=&#34;https://www.spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt;! 🙌&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/7466e53137.jpg&#34; alt=&#34;Crowded lecture-style conference room with roughly 60 attendees seated at rows of tables facing three speakers at the front.&#34; width=&#34;600&#34; height=&#34;450&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/06/05/i-had-a.html</link>
      <pubDate>Tue, 05 Jun 2018 20:51:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/06/06/i-had-a.html</guid>
      <description>&lt;p&gt;I had a great time talking about &lt;a href=&#34;https://www.meetup.com/DevOps-Minneapolis/events/249870267/&#34;&gt;Changing the Enterprise&lt;/a&gt; at tonight’s DevOps Minneapolis Meetup  with &lt;a href=&#34;https://www.linkedin.com/in/heather-mickman/&#34;&gt;Heather Mickman&lt;/a&gt; and &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt;! Great insights and an amazing community!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/983b8a6fa2.jpg&#34; alt=&#34;Three people smiling together at a DevOps Minneapolis Meetup, one wearing a May the JAM Be With You shirt and blazer, one in a white blouse, one in a Microsoft shirt with colorful hair extensions.&#34; width=&#34;600&#34; height=&#34;450&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>SPS TechJam 2018</title>
      <link>https://www.thingelstad.com/2018/05/16/sps-techjam.html</link>
      <pubDate>Wed, 16 May 2018 07:11:23 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/05/16/sps-techjam.html</guid>
      <description>&lt;p&gt;Today is our annual #TeamSPS TechJam event bringing the global SPS technology team together to learn, share, and have fun. The agenda is packed with over two dozen presenters. Automation, GraphQL, Containers, Architecture and more on the agenda! 🙌🏆&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/98211251ce.jpg&#34; alt=&#34;Gold Star Wars-style logo reading May the JAM Be With You on a white background&#34; width=&#34;600&#34; height=&#34;394&#34; /&gt;
&lt;p&gt;A huge &lt;strong&gt;thank you&lt;/strong&gt; to the #TeamSPS TechJam event organizers! 👏 Your passion and drive make us a better team!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/9e76105a01.jpg&#34; alt=&#34;Large group of smiling attendees in a conference room wearing navy JAM event t-shirts, posing for a group photo&#34; width=&#34;600&#34; height=&#34;337&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; getting SPS TechJam started off! Computers are easy, people are hard! 👏&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/47f5325773.jpg&#34; alt=&#34;Woman in a Microsoft shirt presenting at an SPS Commerce podium, slide behind her reads Computers are easy; people are hard&#34; width=&#34;600&#34; height=&#34;337&#34; /&gt;
&lt;p&gt;Great #TeamSPS speakers at SPS TechJam! Thank you for sharing! 🙌🏆&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/3ed493c36d.jpg&#34; alt=&#34;Man in black polo shirt presenting at an SPS Commerce podium, with a slide about Snowflake Terminology and Platform visible on screen behind him&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/616c6656b4.jpg&#34; alt=&#34;Pregnant presenter in a dark JAM t-shirt stands at an SPS Commerce podium beside screens showing a video conference and a data chart.&#34; width=&#34;600&#34; height=&#34;599&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/60c231dffc.jpg&#34; alt=&#34;Man in gray JAM shirt presenting at SPS Commerce podium, showing a bar chart slide titled Why Did We Build CT, with a video conference screen behind him.&#34; width=&#34;600&#34; height=&#34;599&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/35f9edcc6d.jpg&#34; alt=&#34;Man in a gray button-down shirt presenting at an SPS Commerce podium, with an Architecture timeline slide displayed on the screen behind him.&#34; width=&#34;600&#34; height=&#34;599&#34; /&gt;
&lt;p&gt;Today we have people from United States 🇺🇸 (multiple cities), Ukraine 🇺🇦, Canada 🇨🇦, India 🇮🇳 and Bulgaria 🇧🇬 with #TeamSPS and partners here in Minneapolis. Global! 🌏&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://evolutionaryarchitecture.com&#34;&gt;Evolutionary architecture&lt;/a&gt;, &lt;a href=&#34;https://kotlinlang.org&#34;&gt;Kotlin&lt;/a&gt;, and &lt;a href=&#34;http://graphql.org&#34;&gt;GraphQL&lt;/a&gt;. Great 2nd half of the morning at SPS TechJam! 🙌🏆&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/fbec27504b.jpg&#34; alt=&#34;Young man in a gray t-shirt presenting at an SPS Commerce podium with code visible on a large screen and a video conference call on a second screen behind him.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/52f5b4f0f2.jpg&#34; alt=&#34;Man in a JAM t-shirt presents at an SPS Commerce podium; a slide behind him reads Unleashing the Power of GraphQL by Roman Lashchenkov.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;Afternoon sessions for SPS TechJam. 🙌🏆&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/36ff76999b.jpg&#34; alt=&#34;Large conference room filled with over 100 attendees in matching dark Tech Jam t-shirts seated at rows of long tables with laptops, facing two presenters at the front near large display screens.&#34; width=&#34;600&#34; height=&#34;337&#34; /&gt;
&lt;p&gt;Women in Tech sharing with #TeamSPS the great work they are leading! 🙌🏆&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/4800bd1643.jpg&#34; alt=&#34;Large conference room full of attendees in Tech Jam 2018 t-shirts facing a presenter, with a Women in Tech slide displayed on a monitor.&#34; width=&#34;600&#34; height=&#34;337&#34; /&gt;
&lt;p&gt;I left my iPad at my seat while stepping away and #TeamSPS security was on the job with a good reminder! 🔐&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/64000e1dec.jpg&#34; alt=&#34;iPad cover with an I Support Women in Tech sticker, overlaid with printed Twitter screenshots and a cafe thief honesty card on a gray surface.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;“At SPS it might be &lt;a href=&#34;https://kubernetes.io&#34;&gt;Kube&lt;/a&gt; or &lt;a href=&#34;https://en.wikipedia.org/wiki/Kubb&#34;&gt;Kubb&lt;/a&gt;!” &lt;a href=&#34;https://www.linkedin.com/in/hammkelly/&#34;&gt;Kelly Hamm&lt;/a&gt; at &lt;a href=&#34;https://www.sumologic.com&#34;&gt;SumoLogic&lt;/a&gt; knows #TeamSPS — and thanks for the Kubb set!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/ced5a31b43.jpg&#34; alt=&#34;Wooden trophy topped with a crown shape, branded with the Sumo Logic logo, displayed on a table at a tech event&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;Another great #TeamSPS TechJam! Wonderful topics, great speakers and an amazing team! 🙌🏆&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/28d99fe3cf.jpg&#34; alt=&#34;Cartoon character shaped like a pink eraser wearing a Jedi robe and holding a pink lightsaber&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/9a679bc8bc.jpg&#34; alt=&#34;Blue cartoon logo of a smiling face with round glasses and spiky flame-shaped hair&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;Not sure about the Paul DeCoursey sticker in the lower right. 😳&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/17c2717f18.jpg&#34; alt=&#34;Four stickers on a dark surface: I Support Women in Tech, May the Jam Be With You, a jam jar dressed as a Jedi with a lightsaber, and a mans grinning face wearing glasses.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;Time for some fun socializing for #TeamSPS at TechJam! 🍻&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/0e024d1939.jpg&#34; alt=&#34;Large group of people in matching navy TechJam t-shirts mingling outdoors on a grass lawn beside a urban building on a sunny day.&#34; width=&#34;600&#34; height=&#34;337&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/05/15/hanging-out-with.html</link>
      <pubDate>Tue, 15 May 2018 18:51:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/05/15/hanging-out-with.html</guid>
      <description>&lt;p&gt;Hanging out with the amazing &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; at our SPS TechJam speaker dinner! Looking forward to a day of learning and exploration tomorrow with Bridget kicking it off! 🙌🏆&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/eb024c417d.jpg&#34; alt=&#34;Two people smiling together inside a restaurant bar, one in a light plaid shirt and one in a gray May The Jam Be With You t-shirt with rainbow hair.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/05/11/learned-the-hard.html</link>
      <pubDate>Fri, 11 May 2018 23:44:36 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/05/12/learned-the-hard.html</guid>
      <description>&lt;p&gt;Learned the hard way that if you are using ZURB Foundation for Email, you really need to use their &lt;a href=&#34;https://foundation.zurb.com/emails/inliner-v2.html&#34;&gt;CSS Inlining tool&lt;/a&gt;. Did that, and it was like magic. MailChimp&amp;rsquo;s inliner didn&amp;rsquo;t get it right.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/04/06/went-to-setup.html</link>
      <pubDate>Fri, 06 Apr 2018 19:50:43 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/04/07/went-to-setup.html</guid>
      <description>&lt;p&gt;Went to setup &lt;a href=&#34;https://1.1.1.1&#34;&gt;Cloudflare&amp;rsquo;s new 1.1.1.1 DNS service&lt;/a&gt; and it looks like &lt;a href=&#34;https://eero.com/plus&#34;&gt;Eero Plus&lt;/a&gt; must work in part using DNS as well. Seems I cannot have Eero Plus and use 1.1.1.1. 🤔&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2018/f47aff8f1a.jpg&#34; alt=&#34;Eero app DNS settings screen showing ISP DNS selected as default with IPv4 addresses 75.75.76.76 and 75.75.75.75 and Custom DNS option unselected&#34; width=&#34;337&#34; height=&#34;600&#34; style=&#34;width: 337px; max-width: 337px;&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/04/01/150339.html</link>
      <pubDate>Sun, 01 Apr 2018 10:03:39 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/04/01/150339.html</guid>
      <description>&lt;p&gt;“&lt;a href=&#34;https://en.wikipedia.org/wiki/Listicle&#34;&gt;Listicles&lt;/a&gt;” turned into slide shows should be considered &lt;a href=&#34;https://en.wikipedia.org/wiki/Adware&#34;&gt;Adware&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/02/24/forestryiohttpsforestryio-is-working.html</link>
      <pubDate>Sat, 24 Feb 2018 18:23:54 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/02/24/forestryiohttpsforestryio-is-working.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://forestry.io&#34;&gt;Forestry.io&lt;/a&gt; is working &lt;strong&gt;great&lt;/strong&gt; for me. Removes the friction from static blogging. 👍🏻&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Your Version Number</title>
      <link>https://www.thingelstad.com/2018/02/24/your-version-number.html</link>
      <pubDate>Sat, 24 Feb 2018 17:31:57 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/02/24/your-version-number.html</guid>
      <description>&lt;p&gt;My friend &lt;a href=&#34;http://davidhussman.com&#34;&gt;David Hussman&lt;/a&gt; likes to reference
his age with a version number. He does a divide by 10 so at 32 you are
version 3.2, and 47 you are version 4.7. This always makes me chuckle a
bit, but I think there might be more to this than a geeky joke.&lt;/p&gt;
&lt;p&gt;Reference &lt;a href=&#34;https://semver.org&#34;&gt;Semantic Versioning&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given a version number MAJOR.MINOR.PATCH, increment the:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;MAJOR version when you make incompatible API changes,&lt;/li&gt;
&lt;li&gt;MINOR version when you add functionality in a backwards-compatible
manner, and&lt;/li&gt;
&lt;li&gt;PATCH version when you make backwards-compatible bug fixes.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think the version metaphor works. You are a different person in your
20s, 30s, 40s and so on. Your life changes in meaningful ways! MAJOR
version! Each year we tend to think of new things and new goals, but we
don&amp;rsquo;t break backwards compatibility. MINOR version! And I think most
people try to make each day a bit better than the last. PATCH level!&lt;/p&gt;
&lt;p&gt;Today I&amp;rsquo;m &lt;strong&gt;v4.6.52&lt;/strong&gt; of me. I decided the patch version is the days
since your birthday. In fact, I made a &lt;a href=&#34;https://workflow.is/workflows/f207d69d37d147dcbf7d58bebb1c81b5&#34;&gt;Birthday
Version&lt;/a&gt;
script for &lt;a href=&#34;https://workflow.is/download&#34;&gt;Workflow&lt;/a&gt; to calculate the
version of people in your address book.&lt;/p&gt;
&lt;p&gt;How will v4.6.53 be different? I don&amp;rsquo;t know, but I hope ever so slightly
better. 🤞&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Forestry.io</title>
      <link>https://www.thingelstad.com/2018/02/03/forestryio.html</link>
      <pubDate>Sat, 03 Feb 2018 23:43:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/02/03/forestryio.html</guid>
      <description>&lt;p&gt;I have been happy having my blog hosted in Jekyll and built as a static
site with &lt;a href=&#34;https://www.netlify.com&#34;&gt;Netlify&lt;/a&gt;. There is a wonderful calm
to knowing you just have a bunch of HTML pages. It&amp;rsquo;s light and airy.
But, and this is a big one, I&amp;rsquo;ve found authoring to be simply too hard.
Writing using a source code workflow adds too much friction.&lt;/p&gt;
&lt;p&gt;Tonight I&amp;rsquo;m trying out &lt;a href=&#34;https://forestry.io&#34;&gt;Forestry.io&lt;/a&gt; and I&amp;rsquo;m very
impressed. 👍 There are a number of content management tools for static
sites, but I&amp;rsquo;ve found most of them fail immediately since I have more
than 1,700 blog posts and I put them in &lt;code&gt;:year:&lt;/code&gt;
folders inside of &lt;code&gt;_posts&lt;/code&gt; and that simple part
causes most of them to fail. Similar issues exist with where you host
images. I was very happy to see that Forestry.io worked right out of the
box with that. It even built nice front matter templates based on the
content it found inside of my site!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m putting this post together to share how impressed I am, and also as
a test of the posting interface. If you are using
&lt;a href=&#34;https://jekyllrb.com&#34;&gt;Jekyll&lt;/a&gt; or &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt; I would
highly recommend you look at Forestry.io!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2018/01/28/sunday-morning-project.html</link>
      <pubDate>Sun, 28 Jan 2018 10:42:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/01/28/sunday-morning-project.html</guid>
      <description>&lt;p&gt;Sunday morning project: Figured out how to connect &lt;a href=&#34;http://workflow.is&#34;&gt;Workflow&lt;/a&gt; and &lt;a href=&#34;http://omz-software.com/pythonista/&#34;&gt;Pythonista&lt;/a&gt; and rewrote the links section of the &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly Thing&lt;/a&gt; in Python so I can structure it better.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>2017 in Meetings</title>
      <link>https://www.thingelstad.com/2018/01/21/in-meetings.html</link>
      <pubDate>Sun, 21 Jan 2018 09:56:47 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/01/21/in-meetings.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.paulgraham.com/makersschedule.html&#34;&gt;Manager and maker
schedules&lt;/a&gt; is a
relatively popular topic. The basic thesis is that maker schedules need
to consist of large blocks of dedicated time on a goal. You need time to
connect with the work, hopefully, achieve some period of
&lt;a href=&#34;https://en.wikipedia.org/wiki/Flow_(psychology)&#34;&gt;flow&lt;/a&gt; and realize an
objective. Manager schedule, however, is divided up into small segments
of time to connect with people and topics, get information and make
decisions.&lt;/p&gt;
&lt;p&gt;In my position, I operate on manager time with occasional injections of
maker time. I am deliberate about how I manage this. My objectives and
goals are realized, in part, through my calendar. In recent years I felt
I could better align my calendar and time with my objectives, so in 2016
I did an end-of-year one-time analysis of my calendar and made some
changes. After reviewing that analysis, I decided the benefit was
valuable enough that in 2017 I committed to collecting more granular
data. My goal is to determine alignment and effectiveness of my schedule
to my objectives. I developed a set of workflows that I run at the end
of every day to collect this data.&lt;/p&gt;
&lt;p&gt;Now that I&amp;rsquo;ve collected a full year I can look at an overall budget to
actual analysis. In business, we always look at our financial budget and
compare to actual. In managing my time, I find it helpful to consider a
budget and measure the actuals as well. You cannot budget well if you
don&amp;rsquo;t collect actuals.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m going to share some of the statistical information that I gathered
while doing this in 2017. I&amp;rsquo;m not sharing any information about the
content or context. You may consider this
&lt;a href=&#34;https://en.wikipedia.org/wiki/Omphaloskepsis&#34;&gt;navel-gazing&lt;/a&gt;, but some
may find it interesting, and perhaps it will encourage others to be more
deliberate about managing their time.&lt;/p&gt;
&lt;p&gt;This analysis refers to meetings on my calendar. These are meetings
involving other people. I block time on my calendar for solo work, and
that is excluded in this analysis.&lt;/p&gt;
&lt;p&gt;In 2017 I had a total of &lt;strong&gt;1,512 meetings&lt;/strong&gt;. These meetings occurred
over &lt;strong&gt;223 days&lt;/strong&gt;. That is an average of &lt;strong&gt;6.8 meetings per day&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Meeting frequency is highest on Thursday. However, the largest
cumulative hours are on Wednesday. Friday has shorter meetings on
average. I would have thought that meeting count would spike on Tuesday
and then trend down through the week.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/f199a3ae0a.png&#34; alt=&#34;2017 Meetings by Day of
Week&#34;&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look at how these meetings occur over the course of the year. The
average of 6.8 meetings per day shows visually here. There are many
spikes, with one notable day having 13 meetings. Weekends are shown
here, and you can see the 2-week vacation I took in the summer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/e169493fc8.png&#34; alt=&#34;2017 Meetings by Day of
Year&#34;&gt;&lt;/p&gt;
&lt;p&gt;Daily data is noisy, and it&amp;rsquo;s easier to look at the 52 weeks of the year
versus the working days. Here we look at the meeting count by week along
with a 4-week moving average.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/da0f07cf5f.png&#34; alt=&#34;2017 Meetings by Week of
Year&#34;&gt;&lt;/p&gt;
&lt;p&gt;I got curious about how much of the week is scheduled in meetings. If we
use an 8-hour day as a baseline then consider the load to be the percent
of those 8 hours that were scheduled what would my weeks look like? It
isn&amp;rsquo;t uncommon for me to have all of my time scheduled, and occasionally
be over scheduled. As mentioned earlier, I do block time on my schedule
for solo work activities. As a result, &lt;em&gt;81.3% is fully scheduled&lt;/em&gt;.
Whenever I am over 81.3% I&amp;rsquo;ve removed that block to allow for more
meeting time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/ad79066577.png&#34; alt=&#34;2017 Meetings Load by
Week&#34;&gt;&lt;/p&gt;
&lt;p&gt;How about the start time, do more meetings start in the morning? I
certainly feel like the morning is more frequently scheduled than the
afternoons. Here is meeting frequency by start hour. My average day gets
a fast start at 8 am with a dip at 12 pm. Most days I have meetings
through lunch. There is a dip again at 4 pm. In our office, we are much
more likely to start earlier than later, and you can see that with the
frequency of 7 am meetings versus 5 pm. The meetings in the middle of
the night were in Ukraine and are represented here in central time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/0120124e5e.png&#34; alt=&#34;2017 Meetings by Start
Time&#34;&gt;&lt;/p&gt;
&lt;p&gt;I was curious to know the distribution of durations. What duration of
meetings do I have the most often? The most common meeting for me is 30
minutes (37.3%) and then 60 minutes (29.1%). 45-minute meetings are also
common (12.5%), that is the normal time I schedule for 1-1 meetings with
my team.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/c910b54d91.png&#34; alt=&#34;2017 Meetings by
Duration&#34;&gt;&lt;/p&gt;
&lt;p&gt;This statistical data is most likely to gauge overall stress level or
demand for my time. I also get this data in a weekly report and it is a
nice check on my qualitative assessment of the week. The additional data
I collect about topic and context is very actionable. I can see areas
where I&amp;rsquo;m over or under budget on time and can consider structural
changes to my schedule to align better. I like this act as the shift
forces me to delegate some topics more, disconnect from some things and
give more time and focus to the areas that I specifically need to focus
on for success.&lt;/p&gt;
&lt;p&gt;I would highly encourage anyone that has more than 50% of their time
scheduled to do a similar exercise. It will provide some insight both to
how you are feeling and the results you are getting.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>2017 in Links</title>
      <link>https://www.thingelstad.com/2018/01/20/in-links.html</link>
      <pubDate>Sat, 20 Jan 2018 16:26:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2018/01/20/in-links.html</guid>
      <description>&lt;p&gt;For years I&amp;rsquo;ve been keeping all of my links on
&lt;a href=&#34;https://pinboard.in&#34;&gt;Pinboard&lt;/a&gt; and this year I decided to start
publishing them at Link Thing. I also
publish my links in common
formats that can be downloaded. I thought it would be fun to look at all
the links from 2017.&lt;/p&gt;
&lt;p&gt;In 2017 I saved &lt;strong&gt;913 links&lt;/strong&gt;. I most frequently create links at 8pm and
10pm, with 7am coming in next. It&amp;rsquo;s interesting that I did a link in
every hour of the day in 2017. Why I was linking something at 2am
instead of sleeping is a different topic.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/bf0ef14378.png&#34; alt=&#34;2017 Links by
Hour&#34;&gt;&lt;/p&gt;
&lt;p&gt;Friday is the day that I save the most links. This is a little skewed by
my reading workflow which includes staging links in &lt;a href=&#34;https://support.apple.com/en-us/HT200294&#34;&gt;Safari Reading
List&lt;/a&gt; to queue up often before
reading. After reading I may save a link. I almost always clear my
reading list out on Friday night, before I publish my &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly
Thing&lt;/a&gt; newsletter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/09b2073f47.png&#34; alt=&#34;2017 Links by Day of
Week&#34;&gt;&lt;/p&gt;
&lt;p&gt;I definitely started linking more once I started publishing the &lt;a href=&#34;https://weekly.thingelstad.com&#34;&gt;Weekly
Thing&lt;/a&gt; in April and my &lt;a href=&#34;https://www.thingelstad.com/projects/link-blog&#34;&gt;link blog&lt;/a&gt;. Prior
to that the only links I would have saved were ones I would revisit,
after that I started saving links for anything I felt was worth
highlighting and sharing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/840802d99d.png&#34; alt=&#34;2017 Links by
Month&#34;&gt;&lt;/p&gt;
&lt;p&gt;I saved links from 523 different websites in 2016. That&amp;rsquo;s just 1.75
links per website on average. I like the diversity of sources that
represents. The top 30 websites represent 298 links, or 32.6% of all
links. I was surprised to see &lt;a href=&#34;https://medium.com/&#34;&gt;Medium&lt;/a&gt; at the top
of the list.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/be31cf0b66.png&#34; alt=&#34;2017 Frequenty
Hosts&#34;&gt;&lt;/p&gt;
&lt;p&gt;651 of the links I saved were secured with HTTPS, a full &lt;strong&gt;71% of all
links&lt;/strong&gt; for the year. Hats off to everyone for making the web more
secure and private.&lt;/p&gt;
&lt;p&gt;I was curious how my links spanned various top-level domains. &lt;strong&gt;85% of
links&lt;/strong&gt; are in the .com TLD. There are 29 top-level domains that I only
bookmarked one or two links from.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/faaef12037.png&#34; alt=&#34;2017 Links by
TLD&#34;&gt;&lt;/p&gt;
&lt;p&gt;It would be fun to take this corpus of data and do further analysis.
Some graph representation of sites through domain names, analysis by
countries or even sentiment and topic analysis of the links themselves
would be cool. I&amp;rsquo;ll defer that to next years post.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/12/29/static-site-generators.html</link>
      <pubDate>Fri, 29 Dec 2017 13:27:54 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/12/29/static-site-generators.html</guid>
      <description>&lt;p&gt;Static site generators are great in so many ways, but the friction in publishing with them is horrible.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/12/29/i-want-to.html</link>
      <pubDate>Fri, 29 Dec 2017 12:39:05 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/12/29/i-want-to.html</guid>
      <description>&lt;p&gt;I &lt;em&gt;want&lt;/em&gt; to be an energy efficient household but this monthly report from XcelEnergy does &lt;strong&gt;nothing&lt;/strong&gt; to help me. Just makes me feel bad. Showing min/max/avg by day and hour would at least give some data to work with.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/845a273a7f.jpg&#34; alt=&#34;Bar chart showing energy use: You used 1155 kWh, All Neighbors used 892 kWh, Efficient Neighbors used 582 kWh, 29% more than neighbors.&#34; width=&#34;600&#34; height=&#34;259&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/12/17/i-this-teamsps.html</link>
      <pubDate>Sun, 17 Dec 2017 09:57:34 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/12/17/i-this-teamsps.html</guid>
      <description>&lt;p&gt;I 💙 this! #TeamSPS slide to highlight my &lt;a href=&#34;https://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=00018S&#34;&gt;disdain for pie charts&lt;/a&gt;. 😁 The exploded slices are a great touch! I&amp;rsquo;ll stick to pie you eat, thanks. 🥧&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/84ee4aef56.jpg&#34; alt=&#34;Pie chart titled Things Mr. Thinglestad Likes showing Bar Graphs 70%, Inside Jokes 15%, Kubb 10%, Powerpoint 3%, Pie Charts 2%&#34; width=&#34;600&#34; height=&#34;394&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/12/06/i-just-donated.html</link>
      <pubDate>Wed, 06 Dec 2017 17:40:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/12/06/i-just-donated.html</guid>
      <description>&lt;p&gt;I just donated to Wikipedia. 😊🎓 &lt;a href=&#34;https://donate.wikimedia.org/&#34;&gt;Support free knowledge!&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Removed Google Analytics</title>
      <link>https://www.thingelstad.com/2017/12/05/removed-google-analytics.html</link>
      <pubDate>Tue, 05 Dec 2017 21:45:45 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/12/05/removed-google-analytics.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve never desired to put a lot of tracking code on my websites, but I had left Google Analytics. I&amp;rsquo;ve decided to remove that too. In fact, I&amp;rsquo;ve removed all third party resources. You can check for yourself by using Ghostery and going to my sites.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/7fabbf0f01.png&#34; alt=&#34;Ghostery browser extension popup showing 0 trackers found on thingelstad.com with Pause Blocking and Whitelist Site buttons&#34; width=&#34;335&#34; height=&#34;409&#34; style=&#34;max-width: 335px;&#34; /&gt;
&lt;p&gt;While I found the information on what you all read and look at interesting, there are three primary reasons I&amp;rsquo;ve done this.&lt;/p&gt;
&lt;h3 id=&#34;analytics-as-addiction&#34;&gt;Analytics as Addiction&lt;/h3&gt;
&lt;p&gt;I believe there is a clear trend to use analytics as an addicting feature. How many views, likes or comments something receives is a psychologically affirming tool that services use to addict us to them. Is there any social media platform that doesn&amp;rsquo;t use these feedback loops to encourage you to spend even more time using them?&lt;/p&gt;
&lt;p&gt;If your goal is to addict a user then, by all means, use every means possible to create feedback loops. If your goal is to drive attention and engagement on content, then show writers analytics so they can optimize that. I don&amp;rsquo;t have these goals for my sites, so I don&amp;rsquo;t need it. I&amp;rsquo;m needlessly toying with an addictive substance that I don&amp;rsquo;t need.&lt;/p&gt;
&lt;h3 id=&#34;residential-zone&#34;&gt;Residential Zone&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;m a firm believer that we need a concept of zoning on the web. When I&amp;rsquo;m in someone&amp;rsquo;s house, I have a different expectation of privacy than when I&amp;rsquo;m in a shopping mall. When I&amp;rsquo;m in a park, I have different expectations of safety and freedom than when I&amp;rsquo;m in an industrial facility. We should be able to cue our expectations around privacy and freedoms off of our surroundings. On the web this is confusing. Facebook is a shopping mall, but it pretends not to be.&lt;/p&gt;
&lt;p&gt;Visiting my websites should be closer to visiting me, personally. If you are having dinner at my house and comment on my espresso machine, I don&amp;rsquo;t send a note to a tracking service to let them know you might be interested in buying a coffee machine. I don&amp;rsquo;t think that should happen on my website either.&lt;/p&gt;
&lt;h3 id=&#34;dont-be-a-hypocrite&#34;&gt;Don&amp;rsquo;t be a Hypocrite&lt;/h3&gt;
&lt;p&gt;I run 1Blocker and Ghostery in my browsers to protect my privacy. In those tools, I block hundreds, and perhaps thousands, of 3rd party services and scripts. I think you should do the same. It is hypocritical for me to embed a tracking service on my sites, that I block on other people websites, and encourage people to block themselves.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent 2017 Keynote Notes</title>
      <link>https://www.thingelstad.com/2017/12/01/aws-reinvent-keynote.html</link>
      <pubDate>Fri, 01 Dec 2017 19:50:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/12/01/aws-reinvent-keynote.html</guid>
      <description>&lt;p&gt;My quick reaction to the notable announcements at AWS re:Invent 2017.&lt;/p&gt;
&lt;h3 id=&#34;compute&#34;&gt;Compute&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/amazon-elastic-container-service-for-kubernetes/&#34;&gt;Amazon Elastic Container Service for Kubernetes&lt;/a&gt; - Happy to see AWS supporting &lt;a href=&#34;https://kubernetes.io&#34;&gt;Kubernetes&lt;/a&gt; natively! This is a first step that should result in a better solution for customers that are trying to navigate through platform decisions.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/aws-fargate/&#34;&gt;AWS Fargate: Run Containers without Managing Infrastructure&lt;/a&gt; - New offering from AWS that promises to deal with the backend of container orchestration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;databases&#34;&gt;Databases&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/in-the-works-amazon-aurora-serverless/&#34;&gt;Amazon Aurora Serverless&lt;/a&gt; - What is a Serverless database? I&amp;rsquo;m not sure I know, but the idea of a database that has no cost other than storage when it&amp;rsquo;s idle is pretty amazing for certain workloads. Sadly this is only available for MySQL at the moment, but they promise PostgreSQL coming soon.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/s3-glacier-select/&#34;&gt;S3 Select and Glacier Select: Retrieving Subsets of Objects&lt;/a&gt; - Wow, this is pretty cool. Take a bunch of data and dump it into an S3 bucket and then execute SQL-like &lt;code&gt;select&lt;/code&gt; commands against that data. This enables some very interesting capabilities.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/amazon-neptune-a-fully-managed-graph-database-service/&#34;&gt;Amazon Neptune: A Fully Managed Graph Database Service&lt;/a&gt; - Graph databases are a bear to pick, use and run. AWS offering a cloud hosted graph database will hopefully address all of these issues. There are a large number of use cases where graph databases make a lot of sense but so many people have been burned by them that they tend to solve a graph problem using a document or relational database. It&amp;rsquo;s cool to see that this supports RDF and SPARQL, core concepts of the &lt;a href=&#34;https://www.w3.org/standards/semanticweb/&#34;&gt;Semantic Web&lt;/a&gt;. It also supports &lt;a href=&#34;https://tinkerpop.apache.org/&#34;&gt;TinkerPop3&lt;/a&gt; (really? can we get better names?).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;machine-learning&#34;&gt;Machine Learning&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/sagemaker/&#34;&gt;Amazon SageMaker: Accelerating Machine Learning&lt;/a&gt; - Picking models for machine learning training is an often overlooked complexity with doing this right. This bundles that into one tool and should make it easier. We&amp;rsquo;ll see.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/amazon-comprehend-continuously-trained-natural-language-processing/&#34;&gt;Amazon Comprehend: Continuously Trained Natural Language Processing&lt;/a&gt; - I&amp;rsquo;m sure this has some great use cases around sentiment analysis but the surveillance capabilities creep me out.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/amazon-transcribe-scalable-and-accurate-automatic-speech-recognition/&#34;&gt;Amazon Transcribe: Accurate Speech To Text At Scale&lt;/a&gt; - It just got significantly easier to add speech-to-text capabilities to various applications.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;other&#34;&gt;Other&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/launch-announcing-alexa-for-business-using-amazon-alexas-voice-enabled-devices-for-workplaces/&#34;&gt;Announcing Alexa for Business: Using Amazon Alexa&amp;rsquo;s Voice Enabled Devices for Workplaces&lt;/a&gt; - I actually bought an Echo for us to try and use in our operations area. Idea was to make some read-only data available via voice. It didn&amp;rsquo;t go anywhere in large part because the security side was too complicated. Theoretically this would solve that, but I&amp;rsquo;m pretty bearish that this offering is something that many folks would care about.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/11/30/114115.html</link>
      <pubDate>Thu, 30 Nov 2017 12:41:15 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/30/114115.html</guid>
      <description>&lt;p&gt;Watching the AWS re:Invent day 2 keynote and I keep noting that the they spend a lot of time talking and describing a problem, and then much less time talking about how the problem is solved. Should flip that around to focus on the solution.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/aws-cloud9-cloud-developer-environments/&#34;&gt;AWS Cloud 9 IDE&lt;/a&gt; is a pretty interesting announcement. Pushes AWS into some of the space that Azure does well at.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/11/29/you-can-import.html</link>
      <pubDate>Wed, 29 Nov 2017 22:12:37 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/30/you-can-import.html</guid>
      <description>&lt;p&gt;You can import and export 1Blocker packages. I put &lt;a href=&#34;https://github.com/thingles/1Blocker-Packages&#34;&gt;my custom packages&lt;/a&gt; on GitHub so I can version them and share with others. 👍&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/11/29/thanks-to-jbwhaleyhttpsmicroblogjbwhaley.html</link>
      <pubDate>Wed, 29 Nov 2017 20:18:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/30/thanks-to-jbwhaleyhttpsmicroblogjbwhaley.html</guid>
      <description>&lt;p&gt;Thanks to &lt;a href=&#34;https://jarrodwhaley.com&#34;&gt;Jarrod Whaley&lt;/a&gt; I have a nice little Python script so I can easily update micro.blog without getting distracted. Now to wire it into LaunchBar!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent Keynote 2017</title>
      <link>https://www.thingelstad.com/2017/11/29/aws-reinvent-keynote.html</link>
      <pubDate>Wed, 29 Nov 2017 11:32:15 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/29/aws-reinvent-keynote.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;AWS ECS for Kubernetes announcement makes total sense. Expected and good to see them adopting this.&lt;/li&gt;
&lt;li&gt;The new AWS &lt;a href=&#34;https://aws.amazon.com/blogs/aws/new-amazon-ec2-bare-metal-instances-with-direct-access-to-hardware/&#34;&gt;EC2 Bare Metal Instance&lt;/a&gt; seems like an RFP checkbox requirement. Or very rare edge case need.&lt;/li&gt;
&lt;li&gt;Multi-master multi-region Aurora sounds great.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/amazon-neptune-a-fully-managed-graph-database-service/&#34;&gt;AWS Neptune&lt;/a&gt; has some promise to make graph databases more reliable and usable for applications.&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;house band&lt;/em&gt; idea during the AWS re:invent keynote seems really odd. Skip…&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/s3-glacier-select/&#34;&gt;AWS S3 Select&lt;/a&gt; sounds very cool.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/sagemaker/&#34;&gt;AWS SageMaker&lt;/a&gt; has promise to bring machine learning to complex problems faster and cheaper.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/aws/deeplens/&#34;&gt;AWS DeepLens&lt;/a&gt; looks like a solution looking for a problem. Cool tech, don&amp;rsquo;t need it at all.&lt;/li&gt;
&lt;li&gt;New &lt;a href=&#34;https://aws.amazon.com/blogs/aws/amazon-transcribe-scalable-and-accurate-automatic-speech-recognition/&#34;&gt;AWS Transcribe&lt;/a&gt; should enable some nice speech-to-text features in various applications.&lt;/li&gt;
&lt;li&gt;2h 46m AWS Keynote. Too long.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Envisioning a Cloud Native Wiki</title>
      <link>https://www.thingelstad.com/2017/11/26/envisioning-a-cloud.html</link>
      <pubDate>Sun, 26 Nov 2017 17:37:37 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/26/envisioning-a-cloud.html</guid>
      <description>&lt;p&gt;A few years ago I dove deeply into the wiki ecosystem and learned all about &lt;a href=&#34;#&#34;&gt;MediaWiki&lt;/a&gt;, its plugins and various extensions. I started a wiki to index all of the other wiki&amp;rsquo;s called &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt;. The wiki movement was huge, and it still has a tremendous amount of energy and incredibly devoted users. &lt;a href=&#34;https://www.wikipedia.org&#34;&gt;Wikipedia&lt;/a&gt;, in my opinion, is one of the most amazing creations of the Internet.&lt;/p&gt;
&lt;p&gt;However, the wiki movement has hit the skids lately. There was a significant rush of wiki hosting platforms early on, and those mostly didn&amp;rsquo;t work. &lt;a href=&#34;http://www.wikia.com/&#34;&gt;Wikia&lt;/a&gt; is perhaps an exception however it&amp;rsquo;s driven itself into the hole of fandom in a big way. Sadly many wiki platforms continue to sit on top of ugly PHP code and MySQL databases, with old codebases and arcane syntax.&lt;/p&gt;
&lt;p&gt;In recent years email newsletters have seen a resurgence. I&amp;rsquo;d like to see wikis make a similar revival but for that to happen, we need to have some new energy in the wiki ecosystem. We need a cloud-native wiki solution. What would that look like?&lt;/p&gt;
&lt;h3 id=&#34;cloud-native-wiki&#34;&gt;Cloud Native Wiki&lt;/h3&gt;
&lt;p&gt;First thing first wikis should enable communities of any size, so the cost of running a wiki needs to be as cheap as possible. A serverless approach seems to make the most sense. If nobody is using the wiki the cost of running it should be no more than the storage, and that can be very cost effective.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Store all wiki pages and objects in S3. Store the objects in an
editable format, something like Markdown, but also store it as HTML
as well so it can be served directly out of S3. Think of how static
site generators work.&lt;/li&gt;
&lt;li&gt;The wiki itself should live in Lambda functions exposed through API
Gateway. All editing and modifying of objects in the S3 bucket
should be done via this method.&lt;/li&gt;
&lt;li&gt;The wiki should be self-managed by a central source to update it.
Wiki&amp;rsquo;s have a history of being poorly maintained. You should be able
to create an IAM credential and give the ability for the Lambda
functions and infrastructure of the wiki to be updated
automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;let-millions-of-wikis-flourish&#34;&gt;Let Millions of Wikis Flourish&lt;/h3&gt;
&lt;p&gt;Ideally, someone should be able to start a wiki by creating an AWS account and then creating the IAM account for provisioning and updating. That account should then do all the initial setup as well as updating over time.&lt;/p&gt;
&lt;p&gt;The content would be held in Markdown files in S3, as well as rendered HTML. This content would be easily mirrored off of S3 so it could be taken somewhere else. If the Lambda functions were all removed, the wiki should still run in static mode with no editing.&lt;/p&gt;
&lt;p&gt;If we had this kind of capability, perhaps we could see wikis reenter the landscape for all the good that they can provide.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/11/11/145246.html</link>
      <pubDate>Sat, 11 Nov 2017 15:52:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/11/145246.html</guid>
      <description>&lt;p&gt;Hugo just generated 8,173 pages in 2.4 seconds. Jekyll takes around 500 seconds to do similar. Whoa. 🤯&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt; seems like it would be superior for my website needs in every way. May need to dig in and make it happen.&lt;/p&gt;
&lt;p&gt;After putting more complicated theme in Hugo takes 5.2 sec for 9,970 pages. Still a speed demon.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Chaos Community Day</title>
      <link>https://www.thingelstad.com/2017/11/10/chaos-community-day.html</link>
      <pubDate>Fri, 10 Nov 2017 10:13:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/10/chaos-community-day.html</guid>
      <description>&lt;p&gt;David Hussman and Leah Cunningham kicking off Chaos Community Day. Have already connected with many awesome people! 👍🏻👍🏻👍🏻&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/674c292820.jpg&#34; alt=&#34;Two presenters on a dimly lit stage in front of a projection screen showing business case slides, one holding a microphone, the other gesturing to the audience.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;Fabulous agenda for Chaos Community Day.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/b416aaf52a.jpg&#34; alt=&#34;Printed agenda for a full-day chaos engineering event listing sessions from 8am to 6pm, sponsored by Netflix, DevJam, SPS Commerce, and Studio 2 Cafe.&#34; width=&#34;600&#34; height=&#34;599&#34; /&gt;
&lt;p&gt;Is Chaos Engineering related to DevOps the same way Extreme Programming is to Agile? Seems like it could be.&lt;/p&gt;
&lt;p&gt;“So we picked C. And then we realized we didn’t want to write anything in C.” 🤣 &lt;a href=&#34;https://twitter.com/callmeforni&#34;&gt;@callmeforni&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There should be a way to declare a namespace for @ references. Something like twitter:@ to steal from URI’s. Then microblog:@ could be smarter.&lt;/p&gt;
&lt;p&gt;Next up &lt;a href=&#34;https://twitter.com/andyfleener&#34;&gt;Andy Fleener&lt;/a&gt; from local tech &lt;a href=&#34;https://www.sportsengine.com/&#34;&gt;Sports Engine&lt;/a&gt; on Chaos Engineering.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/a4b1c987ea.jpg&#34; alt=&#34;Man in a dark hoodie presenting at a small indoor conference, standing beside a laptop on a tall table, with a projected slide reading HI I&#39;M ANDY behind him and several audience members seated in&#34; width=&#34;600&#34; height=&#34;599&#34; /&gt;
&lt;p&gt;“The” &lt;a href=&#34;https://en.wikipedia.org/wiki/Kent_Beck&#34;&gt;Kent Beck&lt;/a&gt; sharing a lightning talk at Chaos Community Day.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/0de88a0446.jpg&#34; alt=&#34;Bald man in a striped shirt holding a microphone stands before a blank projection screen while several seated attendees watch from the foreground in a dimly lit venue.&#34; width=&#34;599&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/caseyrosenthal/&#34;&gt;Casey Rosenthal&lt;/a&gt; sharing a lightning talk at Chaos Community Day.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/4dc873d739.jpg&#34; alt=&#34;Man wearing glasses, a black hoodie, and jeans speaks into a microphone while holding notes, standing in front of a projection screen in an industrial space with exposed pipes and string lights, as&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
&lt;p&gt;When will chaos engineering have been successful? When we are comfortable dancing on air.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/11/09/excited-to-attend.html</link>
      <pubDate>Thu, 09 Nov 2017 13:39:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/09/excited-to-attend.html</guid>
      <description>&lt;p&gt;Excited to attend (and sponsor) Chaos Community Day tomorrow! Looking forward to learning how chaos engineering is driving improvement!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/1b3adbe9af.jpg&#34; alt=&#34;Flyer for Twin Cities Chaos Community Day in Minneapolis on November 10th 2017, with retro propaganda-style artwork and sponsor logos including Netflix and SPS Commerce.&#34; width=&#34;401&#34; height=&#34;600&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/11/02/give-a-person.html</link>
      <pubDate>Thu, 02 Nov 2017 20:56:14 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/11/03/give-a-person.html</guid>
      <description>&lt;p&gt;Give a person a find/replace and you power them once.&lt;/p&gt;
&lt;p&gt;Teach them regular expressions and you give them superpowers ⚡️&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Managing 15 years of blog content</title>
      <link>https://www.thingelstad.com/2017/10/29/managing-years-of.html</link>
      <pubDate>Sun, 29 Oct 2017 22:50:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/10/30/managing-years-of.html</guid>
      <description>&lt;p&gt;Moving 15 years of blog content to Jekyll and Markdown files is surprisingly difficult. My blog first ran on .Text, then WordPress, then Squarespace. Each step along the way was a full migration. No content lost.&lt;/p&gt;
&lt;p&gt;Now I’m in Jekyll and trying to get links working and validated in posts. And the media files, oh what a mess. 😫 Progress is made but it is slow and even with extensive scripting skills there is still much to do manually. It feels like I’ll be in a good spot when done, but it’s a lot more than I planned.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/10/26/some-scripting-magic.html</link>
      <pubDate>Thu, 26 Oct 2017 22:06:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/10/27/some-scripting-magic.html</guid>
      <description>&lt;p&gt;Some scripting magic and I&amp;rsquo;ve finally resolved the missing images from most of my &lt;a href=&#34;https://www.thingelstad.com/archive/&#34;&gt;blog archive&lt;/a&gt;. 👏&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/10/26/just-saved-myself.html</link>
      <pubDate>Thu, 26 Oct 2017 21:43:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/10/27/just-saved-myself.html</guid>
      <description>&lt;p&gt;Just saved myself a silly amount of time with 18 lines of bash. So great. 👍&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/10/18/excited-to-hear.html</link>
      <pubDate>Wed, 18 Oct 2017 18:54:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/10/18/excited-to-hear.html</guid>
      <description>&lt;p&gt;Great Dev Ops Meetup talk by #TeamSPS &lt;a href=&#34;https://www.linkedin.com/in/dengebretson/&#34;&gt;Dana Engebretson&lt;/a&gt; on approaches she took to solving a complicated serverless solutions using Lamba! Λ👏🏻👍🏻&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/1f80a56213.jpg&#34; alt=&#34;Blonde woman in glasses presenting at SPS Commerce podium, slide reads With Great Scalability Comes Great Responsibility by Dana Engebretson&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/10/18/excited-to-be.html</link>
      <pubDate>Wed, 18 Oct 2017 18:52:30 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/10/18/excited-to-be.html</guid>
      <description>&lt;p&gt;Excited to be able to attend the Dev Ops Meetup tonight hosted at SPS Commerce!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/8b5a97c327.jpg&#34; alt=&#34;Selfie taken at a DevOps meetup in a conference room with about 20 attendees seated at tables wearing name badges&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/7bea54f078.jpg&#34; alt=&#34;Large conference room filled with attendees seated at rows of tables during a DevOps meetup, with presentation screens visible at the front.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/4dc130fd39.jpg&#34; alt=&#34;Large coolers filled with ice, Aquafina water bottles, beer cans, and other beverages set up for a meetup event indoors.&#34; width=&#34;600&#34; height=&#34;600&#34; /&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/09/17/have-a-bit.html</link>
      <pubDate>Sun, 17 Sep 2017 19:57:14 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/09/18/have-a-bit.html</guid>
      <description>&lt;p&gt;Have a bit of a nameserver fiasco with thingelstad.com. Just fixed things up but think it may take 24 hours to heal. 😬&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/09/16/222044.html</link>
      <pubDate>Sat, 16 Sep 2017 22:20:44 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/09/16/222044.html</guid>
      <description>&lt;p&gt;Just switched my name servers for thingelstad.com to &lt;a href=&#34;https://www.netlify.com&#34;&gt;Netlify&lt;/a&gt;. Triple checked DNS values but if you see something not working let me know.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s amazing how fast name server changes are propagated today. Floors me to think about the days and days it took in late &amp;rsquo;90s.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/09/16/moved-two-small.html</link>
      <pubDate>Sat, 16 Sep 2017 09:50:21 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/09/16/moved-two-small.html</guid>
      <description>&lt;p&gt;Moved two small static sites to &lt;a href=&#34;https://www.netlify.com&#34;&gt;Netlify&lt;/a&gt; and am very impressed. Powerful and easy. Plus opens Hugo as an option.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/08/30/currently-tweaking-minnestar.html</link>
      <pubDate>Wed, 30 Aug 2017 21:09:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/08/31/currently-tweaking-minnestar.html</guid>
      <description>&lt;p&gt;Currently tweaking &lt;a href=&#34;https://minnestar.org&#34;&gt;Minnestar&lt;/a&gt; DNS settings! Don&amp;rsquo;t mess it up! 🤞🏻😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/08/27/got-a-great.html</link>
      <pubDate>Sun, 27 Aug 2017 21:55:47 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/08/28/got-a-great.html</guid>
      <description>&lt;p&gt;Got a great start getting my book club website relaunched. Not ready to share yet but coming along. Using Jekyll and Github Pages.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/08/27/the-average-quality.html</link>
      <pubDate>Sun, 27 Aug 2017 08:06:18 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/08/27/the-average-quality.html</guid>
      <description>&lt;p&gt;The average quality of &lt;a href=&#34;http://jekyllthemes.org&#34;&gt;Jekyll themes&lt;/a&gt; is frustrating. I couldn&amp;rsquo;t imagine it would be worse than &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt;, but it is.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/08/05/figured-out-how.html</link>
      <pubDate>Sat, 05 Aug 2017 19:19:24 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/08/06/figured-out-how.html</guid>
      <description>&lt;p&gt;Figured out how to digitally sign git commits. Cool capability. See &lt;strong&gt;verified&lt;/strong&gt; label on &lt;a href=&#34;https://github.com/thingles/thingles.github.io/commit/85ce711d293434724695ce9ee8d99c827a023682&#34;&gt;85ce711&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/07/21/033100.html</link>
      <pubDate>Fri, 21 Jul 2017 22:31:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/07/22/033100.html</guid>
      <description>&lt;p&gt;Got &lt;a href=&#34;https://github.com/jekyll/jekyll-redirect-from&#34;&gt;jekyll-redirect-from&lt;/a&gt; setup and can now support some widely used old URL&amp;rsquo;s on my site.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>SPS TechJam 2017</title>
      <link>https://www.thingelstad.com/2017/05/10/sps-techjam.html</link>
      <pubDate>Wed, 10 May 2017 08:52:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/05/10/sps-techjam.html</guid>
      <description>&lt;p&gt;Kicking off #TeamSPS TechJam community event. Great day of learning and sharing technology solutions ahead.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/091afc0778.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Nate and Dan sharing how they are using serverless solutions to create scalable and efficient services.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/1f9f3e4a40.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Marcell sharing capabilities of the newest editions of Microsoft SQL Server.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/d093e2f945.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Valentin from our Kyiv office presenting at TechJam about migrating their service to microservices.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/d125285385.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;. #TeamSPS Introduction to Go by Cody!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/4282d4cc38.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Cool live coding and running it inside browser / presentation template. Nice!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/add92157b2.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://continuousdelivery.com/about/talks/&#34;&gt;Jez Humble&lt;/a&gt; giving remote keynote for #TeamSPS TechJam on continuous delivery improvements!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/997add1a47.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Had a great time doing #TeamSPS VP Jeopardy at TechJam! Good sports &lt;a href=&#34;https://www.linkedin.com/in/kent-tangen-a059a/&#34;&gt;Kent&lt;/a&gt;, Amy, and Paul.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/2b5e279e93.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Travis &lt;a href=&#34;https://travisgosselin.com&#34;&gt;Travis Gosselin&lt;/a&gt; sharing the DevOps journey in our Toronto #TeamSPS office.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/ebdfda11f1.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Dan talking at #TeamSPS TechJam about isolation and benefits to systems. Less friction!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/57fa02cb9a.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Corbett sharing with #TeamSPS TechJam the fundamental value of the SPS network. Bringing it home to wrap up the day!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/0b271e613e.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Wrapped up #TeamSPS TechJam with Kubb, beer 🍺 and burgers 🍔!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/605592b224.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;Tough choices: great beer or great beer? 🍻&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/69d8b16d51.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/05/06/125236.html</link>
      <pubDate>Sat, 06 May 2017 12:52:36 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/05/06/125236.html</guid>
      <description>&lt;p&gt;Repair trip to the Genius Bar. iMac has a broken spring on the hinge. One AirPod won&amp;rsquo;t pair.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2017/5ab588d418.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; style=&#34;height: auto&#34; /&gt;
&lt;p&gt;If you work in tech it’s enlightening to sit at the Apple Genius Bar and just listen to the discussions. Things are still not easy and simple enough.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/05/05/trying-git-filterbranch.html</link>
      <pubDate>Fri, 05 May 2017 07:00:54 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/05/05/trying-git-filterbranch.html</guid>
      <description>&lt;p&gt;Trying &lt;code&gt;git filter-branch --prune-empty&lt;/code&gt; to clean up some cruft in my micro.blog git mirror. Doing some bug triage.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Minnebar 12</title>
      <link>https://www.thingelstad.com/2017/03/25/minnebar.html</link>
      <pubDate>Sat, 25 Mar 2017 21:50:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/03/25/minnebar.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/ebd6c90371.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;T-shirt graphic showing Paul Bunyan in plaid shirt and VR headset swinging an axe, with Babe the blue ox holding a laptop, a drone-equipped wolf in a pine tree, and a beaver with a tablet by a felled&#34; /&gt;
&lt;h3 id=&#34;session-0&#34;&gt;Session 0&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/6791239a87.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Man in glasses and blue shirt speaking at a podium, pointing toward a projected slide reading Surf the Internet with a cartoon wave illustration&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;Punk Rock/Computing
&lt;ul&gt;
&lt;li&gt;Break the rules&lt;/li&gt;
&lt;li&gt;Simple, fast&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Point of view is worth 50 IQ points - Alan Kaye&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;minnebar-12-on-minnebar&#34;&gt;Minnebar 12 on Minnebar&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/a24e7253e7.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Bearded presenter in a blue shirt speaks at a podium while attendees sit at tables facing a projected slide reading better understand event demand&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;Random&lt;/li&gt;
&lt;li&gt;History&lt;/li&gt;
&lt;li&gt;Ideas on future opportunity&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;zen-and-the-art-of-agility&#34;&gt;Zen and the Art of Agility&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/bbdc51e930.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Woman speaking at a podium holding a microphone before an audience, with a slide showing Pac-Man labeled Culture chasing a ghost labeled Strategy&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;Nice Sps plug&lt;/li&gt;
&lt;li&gt;Why agile?&lt;/li&gt;
&lt;li&gt;Culture &amp;gt; Strategy&lt;/li&gt;
&lt;li&gt;Why not time tracking?
&lt;ul&gt;
&lt;li&gt;Software is not deterministic&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Where is agile right? Predictive v Adaptive v Reactive. Also, very much cost of refactoring&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;blockchains-are-coming&#34;&gt;Blockchains are coming!&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/381d13aefa.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Audience seated in a darkened conference room watching a presenter at a podium beside a slide reading Blockchains are Coming Forewarned is Forearmed&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;Quick overview of bitcoin but focusing more on applications of blockchain&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;introduction-to-functional-reactive-programming&#34;&gt;Introduction to Functional Reactive Programming&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/3300f5c5ee.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;A presenter in a plaid shirt stands before a large projection screen addressing an audience of about 20 people seated in a darkened conference room.&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;Reactive overview&lt;/li&gt;
&lt;li&gt;Functional overview&lt;/li&gt;
&lt;li&gt;Good summaries and examples of approach&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;so-you-dont-hire-jr-devs-tell-me-more&#34;&gt;So you don&amp;rsquo;t hire Jr. Devs? Tell me more&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/30fda70bd9.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large group of people seated in a circle of chairs in a conference room, engaged in a group discussion session.&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;Weird discussion.&lt;/li&gt;
&lt;li&gt;Totally missing the mark on negative unemployment.&lt;/li&gt;
&lt;li&gt;Commitment dialogue. Yikes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;privacy-for-everyone&#34;&gt;Privacy for Everyone&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/1834e5107c.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Presenter holding a microphone at a podium beside a projected slide reading Privacy for Everyone Workshop by @EugeneBelinski, with attendees seated facing the screen in a darkened auditorium.&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;Fine session. Pretty basic advice.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;communicating-when-stuff-is-going-wrong&#34;&gt;Communicating When Stuff Is Going Wrong&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/1c9f4e23ae.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Presenter stands at a podium in a tiered auditorium facing an audience of about 30 people, with a slide listing 4 communication topics on the screen behind her&#34; /&gt;
&lt;ul&gt;
&lt;li&gt;How to communicate bad stuff.&lt;/li&gt;
&lt;li&gt;This will be final update on this incident.&lt;/li&gt;
&lt;li&gt;Do not communicate time to repair. Don&amp;rsquo;t agree with that for production items.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See also &lt;a href=&#34;https://www.thingelstad.com/collections/minnebar/&#34;&gt;Minnebar collection&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2017/01/31/055541.html</link>
      <pubDate>Wed, 01 Feb 2017 00:55:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2017/02/01/055541.html</guid>
      <description>&lt;p&gt;Agree with this and having tried many other apps it&amp;rsquo;s amazing how even a little latency is a deal breaker.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Couple things to note: the Pencil latency in Linea is incredible. Better than every iPad drawing app I’ve tried. Feels like Apple Notes.&lt;/p&gt;&amp;mdash; Mike Rundle (@flyosity) &lt;a href=&#34;https://x.com/flyosity/status/826488464170479622?ref_src=twsrc%5Etfw&#34;&gt;January 31, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/12/27/this-is-part.html</link>
      <pubDate>Tue, 27 Dec 2016 11:47:49 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/12/27/this-is-part.html</guid>
      <description>&lt;p&gt;This is part of graphing all the things - you have to make it part of your everyday routine.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;The days I am in the office just feel off when I don’t start it by explaining why a line is doing a thing for @thingles &lt;a href=&#34;https://x.com/hashtag/graphs?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#graphs&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/813777580037996545?ref_src=twsrc%5Etfw&#34;&gt;December 27, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/12/26/editing-and-pushing.html</link>
      <pubDate>Mon, 26 Dec 2016 16:26:20 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/12/26/editing-and-pushing.html</guid>
      <description>&lt;p&gt;Editing and pushing changes in Git using &lt;a href=&#34;https://workingcopyapp.com&#34;&gt;Working Copy&lt;/a&gt; on iPhone and iPad is pretty awesome.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/12/26/tyler-is-learning.html</link>
      <pubDate>Mon, 26 Dec 2016 11:22:35 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/12/26/tyler-is-learning.html</guid>
      <description>&lt;p&gt;Tyler is learning coding with &lt;a href=&#34;https://www.playosmo.com/en/&#34;&gt;Osmo&lt;/a&gt; Coding. Super fun. Very well done.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/12/22/accidentally-fell-down.html</link>
      <pubDate>Thu, 22 Dec 2016 07:50:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/12/22/accidentally-fell-down.html</guid>
      <description>&lt;p&gt;Accidentally fell down the rabbit hole looking at Hugo and am impressed. Cool ability to &lt;a href=&#34;https://gohugo.io/templates/data-templates/&#34;&gt;call API’s and data files&lt;/a&gt;. 🕳🐇&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/12/15/012849.html</link>
      <pubDate>Thu, 15 Dec 2016 20:28:49 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/12/16/012849.html</guid>
      <description>&lt;p&gt;Graph all the things!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;I am so surprised that @thingles slides contain graphs!! &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/linesbelowotherlines?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#linesbelowotherlines&lt;/a&gt; &lt;a href=&#34;https://t.co/EFxwkfllsx&#34;&gt;pic.twitter.com/EFxwkfllsx&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/809476611804450816?ref_src=twsrc%5Etfw&#34;&gt;December 15, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/12/11/seems-crazy-that.html</link>
      <pubDate>Sun, 11 Dec 2016 17:45:32 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/12/11/seems-crazy-that.html</guid>
      <description>&lt;p&gt;Seems crazy that with all the advances in photography taking a properly metered photo in the snow still isn’t possible.&lt;/p&gt;
&lt;p&gt;Idea for iPhone photo app: Snowfix. Select all your photos in snow and adjust exposure +1.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/12/01/i-really-want.html</link>
      <pubDate>Thu, 01 Dec 2016 14:32:45 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/12/01/i-really-want.html</guid>
      <description>&lt;p&gt;I really want to take a week and play with AWS Step Functions.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/11/27/163948.html</link>
      <pubDate>Sun, 27 Nov 2016 11:39:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/11/27/163948.html</guid>
      <description>&lt;p&gt;Very sad to miss &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; this year. Don’t schedule on peak retail!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Wow, &lt;a href=&#34;https://x.com/ajassy?ref_src=twsrc%5Etfw&#34;&gt;@ajassy&lt;/a&gt; says 32k expected at &lt;a href=&#34;https://x.com/hashtag/reinvent?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#reinvent&lt;/a&gt;. Remember: Comfortable shoes!  &lt;a href=&#34;https://t.co/v2RESxWsaL&#34;&gt;https://t.co/v2RESxWsaL&lt;/a&gt;&lt;/p&gt;&amp;mdash; Tim Bray (@timbray) &lt;a href=&#34;https://x.com/timbray/status/802913533398642688?ref_src=twsrc%5Etfw&#34;&gt;November 27, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/11/24/if-you-love.html</link>
      <pubDate>Thu, 24 Nov 2016 23:48:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/11/25/if-you-love.html</guid>
      <description>&lt;p&gt;If you love technology take an hour this holiday weekend and watch &lt;a href=&#34;http://cleancoder.com/products&#34;&gt;Bob Martin&lt;/a&gt; &lt;a href=&#34;https://www.youtube.com/watch?v=ecIWPzGEbFc&#34;&gt;Future of Programming&lt;/a&gt; talk.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/ecIWPzGEbFc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/11/16/very-happy-that.html</link>
      <pubDate>Wed, 16 Nov 2016 14:44:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/11/16/very-happy-that.html</guid>
      <description>&lt;p&gt;Very happy that &lt;a href=&#34;https://www.spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt; can host these great community technology events like &lt;a href=&#34;https://devopsdays.org/events/2016-minneapolis/welcome/&#34;&gt;DevOpsDays Minneapolis&lt;/a&gt;! Lot of people!…&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/07/26/181936.html</link>
      <pubDate>Tue, 26 Jul 2016 13:19:36 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/07/26/181936.html</guid>
      <description>&lt;p&gt;Awesome to see #TeamSPS &lt;a href=&#34;https://twitter.com/AndyJD_&#34;&gt;Andy Domeier&lt;/a&gt; speaking at &lt;a href=&#34;https://twitter.com/pagerduty&#34;&gt;@pagerduty&lt;/a&gt; event!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Looking forward to the &lt;a href=&#34;https://x.com/pagerduty?ref_src=twsrc%5Etfw&#34;&gt;@pagerduty&lt;/a&gt; summit in September.  Humbling to be on the same page as these folks! - &lt;a href=&#34;https://t.co/Xkgd5PGs9D&#34;&gt;https://t.co/Xkgd5PGs9D&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/757920134212100096?ref_src=twsrc%5Etfw&#34;&gt;July 26, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/07/06/running-fsck-on.html</link>
      <pubDate>Wed, 06 Jul 2016 19:13:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/07/07/running-fsck-on.html</guid>
      <description>&lt;p&gt;Running &lt;code&gt;fsck&lt;/code&gt; on a 12TB RAID set. Curious how long this will take.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Vibe - Stats for OmniFocus</title>
      <link>https://www.thingelstad.com/2016/06/21/vibe-stats-for.html</link>
      <pubDate>Tue, 21 Jun 2016 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/06/21/vibe-stats-for.html</guid>
      <description>&lt;p&gt;I downloaded &lt;a href=&#34;https://github.com/tschoffelen/vibe&#34;&gt;Vibe&lt;/a&gt; and gave it a run and got this fun display.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/2762238525.png&#34; alt=&#34;Vibe
Screenshot&#34;&gt;&lt;/p&gt;
&lt;p&gt;What a fun project to take the data from OmniFocus and give you some nice visuals. I&amp;rsquo;m not sure these are real actionable data points but it&amp;rsquo;s a fun start. It would be pretty amazing if OmniFocus had an API that 3rd parties could access to do some interesting visuals like this.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/05/20/teamsps-doing-zombie.html</link>
      <pubDate>Fri, 20 May 2016 13:20:56 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/05/20/teamsps-doing-zombie.html</guid>
      <description>&lt;p&gt;Zombie Microservice Workshop for #TeamSPS led by AWS team. Continuous learning!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/3865be99bf.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Roughly 50 people seated at rows of desks in a conference room, working on MacBook laptops during a technical workshop.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>SPS TechJam 2016</title>
      <link>https://www.thingelstad.com/2016/05/19/075921.html</link>
      <pubDate>Thu, 19 May 2016 08:59:21 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/05/19/075921.html</guid>
      <description>&lt;p&gt;Excited for &lt;a href=&#34;http://www.indecorous.com&#34;&gt;Ian Malpass&lt;/a&gt; to kick off #TeamSPS TechJam with talk on planning for failure.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/53645916ab.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Man in black t-shirt presenting at a podium labeled SPS Commerce with a projected slide reading FAILURE is an option by Ian Malpass at Etsy.&#34; /&gt;
&lt;p&gt;TechJam in full swing with presentation from &lt;a href=&#34;https://www.appdynamics.com&#34;&gt;AppDynamics&lt;/a&gt; on best use of graphs for understanding systems.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/138b099298.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference room packed with attendees at laptops listening to a presenter at the front of the room&#34; /&gt;
&lt;p&gt;Speaker just threw the gauntlet down with Tufte on color in graphs. Them’s fighting words!&lt;/p&gt;
&lt;p&gt;TechJam talk from &lt;a href=&#34;https://www.pagerduty.com&#34;&gt;PagerDuty&lt;/a&gt; &lt;a href=&#34;https://www.linkedin.com/in/ophirr/&#34;&gt;Ophir Ronen&lt;/a&gt; on discovering signal in the cacophony.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/502136c43a.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Bald man in dark t-shirt speaking at an SPS Commerce podium with a Living Computer Museum slide projected behind him&#34; /&gt;
&lt;p&gt;TechJam &lt;a href=&#34;https://www.linkedin.com/in/ophirr/&#34;&gt;Ophir Ronen&lt;/a&gt; “going full unicorn!”&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/9182dd2dcb.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Bald man in a navy shirt presents at an SPS Commerce podium while a unicorn and rainbow meme fills the projection screen behind him.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>Technical Downsizing</title>
      <link>https://www.thingelstad.com/2016/05/03/technical-downsizing.html</link>
      <pubDate>Tue, 03 May 2016 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/05/03/technical-downsizing.html</guid>
      <description>&lt;p&gt;Around ten years ago I ran my own servers at home. I had a free-standing half-rack with several machines rack-mounted in it along with the necessary UPS and network equipment. Even a fancy KVM at one point. I ran my websites on those machines and even my own mail server. It was fun to run this stuff and my equivalent of having a garden to tend or a workbench to tinker with things. However, it was a lot of work and the costs of maintaining it all was too much.&lt;/p&gt;
&lt;p&gt;Long ago I decided that running your own website was no longer something a &amp;ldquo;mere citizen&amp;rdquo; should do. Email is a massive war of spam and &amp;ldquo;phishing&amp;rdquo; and it&amp;rsquo;s hard to do it well. I&amp;rsquo;ve been a happy customer of Fastmail for years now and am very satisfied with that.&lt;/p&gt;
&lt;p&gt;The same trend has happened with other services. For a while, I ran Fever for my own RSS system and after struggling with that shifted to Feedbin, and it works great.&lt;/p&gt;
&lt;p&gt;I got rid of the servers years ago and moved my infrastructure to VPS instances at Linode. Linode has been a great host, and I like their service. However, while the physical side of running hosts goes away maintaining a couple of Ubuntu boxes takes time and I have too little of that.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve decided that it&amp;rsquo;s time to hang up the sysadmin jacket and no longer run my own servers.&lt;/p&gt;
&lt;h3 id=&#34;learning&#34;&gt;Learning&lt;/h3&gt;
&lt;p&gt;The primary reason I still host everything is to learn. I like having first-hand knowledge of Ubuntu, nginx, WordPress, MediaWiki and many other systems and open-source software projects. However, at some point, the act of learning goes away, and you aren&amp;rsquo;t getting more value out of it (at least for me). After a while, you&amp;rsquo;ve absorbed that, and now you have chores. Time to update software. Time to debug a failure. Need to restart something? All maintenance with no learning.&lt;/p&gt;
&lt;p&gt;The reality is that there is a certain minimum amount of work needed to responsibly be connected to the Internet. You need to keep an eye on systems to make sure bad things haven&amp;rsquo;t happened. You have to apply security updates. You need to upgrade your software. If you don&amp;rsquo;t do these things, you are running on borrowed time and will have a problem in the future that you are very poorly prepared for.&lt;/p&gt;
&lt;p&gt;Right now I should have a task to upgrade Ubuntu 14.04 to 16.04. &lt;em&gt;I&amp;rsquo;ll pass&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;pay-for-services&#34;&gt;Pay for Services&lt;/h3&gt;
&lt;p&gt;For me this means I shift the effort and costs I&amp;rsquo;ve put towards running my infrastructure to service providers. I&amp;rsquo;ve already moved my blog to Squarespace who does an incredibly better job than I ever could running a blog. Why did I switch from WordPress? That&amp;rsquo;s a different blog post.&lt;/p&gt;
&lt;p&gt;I continue to like Fastmail and Feedbin.&lt;/p&gt;
&lt;h3 id=&#34;what-about-all-of-my-sites&#34;&gt;What about all of my sites?&lt;/h3&gt;
&lt;p&gt;One of my favorite productivity quotes goes like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Saying no to things lets you say yes to other things.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;rsquo;s a good reminder that time is a zero sum game. I&amp;rsquo;ve had a lot of fun building different sites and playing with things, but you need to say goodbye to this stuff to say hello to other, yet to be identified, things.&lt;/p&gt;
&lt;p&gt;One thought would be just to let them sit and not pay attention to it but I have two problems with that. First, I don&amp;rsquo;t think it&amp;rsquo;s responsible just to have servers connected to the web on autopilot. Second is that I experience a lot of cognitive load from things I&amp;rsquo;m not doing. Even with years of focus on GTD, I&amp;rsquo;m not very good at just having something deferred or paused forever reviewing monthly. It still takes up mental energy. I want to reclaim that energy!&lt;/p&gt;
&lt;p&gt;Over the course of the next month, I&amp;rsquo;m going to be archiving and turning things down. Most of my sites are like hobby projects that very few people know exist. I&amp;rsquo;ll just archive those and shut them down. There are some bigger ones that I hope someone else will decide to host instead.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/04/19/well-done-overview.html</link>
      <pubDate>Tue, 19 Apr 2016 10:05:23 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/04/19/well-done-overview.html</guid>
      <description>&lt;p&gt;Well done overview of DevOps in the Enterprise from &lt;a href=&#34;https://twitter.com/RossClanton&#34;&gt;Ross Clanton&lt;/a&gt; this morning at &lt;a href=&#34;http://www.aeritae.com&#34;&gt;Aeritae Consulting&lt;/a&gt; event.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/04/18/some-funny-stuff.html</link>
      <pubDate>Mon, 18 Apr 2016 20:13:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/04/19/some-funny-stuff.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://classicprogrammerpaintings.com&#34;&gt;Classic Programmer Paintings&lt;/a&gt; ← Some funny stuff here.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/03/31/microsoft-running-linux.html</link>
      <pubDate>Thu, 31 Mar 2016 22:10:29 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/04/01/microsoft-running-linux.html</guid>
      <description>&lt;p&gt;Microsoft running Linux binaries has me thinking of this blog post I wrote 7 years ago with 2 step fix: &lt;a href=&#34;https://www.thingelstad.com/2009/07/30/my-solution-for.html&#34;&gt;My Solution for Microsoft to Get Nerds Back&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/03/16/very-impressive-chatops.html</link>
      <pubDate>Wed, 16 Mar 2016 09:49:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/03/16/very-impressive-chatops.html</guid>
      <description>&lt;p&gt;Very impressive ChatOps and &lt;a href=&#34;http://mesos.apache.org&#34;&gt;Mesos&lt;/a&gt; work happening at #TeamSPS! Great enabling technology. Love demos.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/03/09/034041.html</link>
      <pubDate>Wed, 09 Mar 2016 22:40:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/03/10/034041.html</guid>
      <description>&lt;p&gt;Good luck to &lt;a href=&#34;https://en.wikipedia.org/wiki/Lee_Sedol&#34;&gt;Lee Sedol&lt;/a&gt; in match 2 v Alpha Go!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;I wish I could say I was confident about winning match 2. One can but try.&lt;/p&gt;&amp;mdash; Lee Sedol (@lee_sedol) &lt;a href=&#34;https://x.com/lee_sedol/status/707770508360622080?ref_src=twsrc%5Etfw&#34;&gt;March 10, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/02/19/102620.html</link>
      <pubDate>Fri, 19 Feb 2016 12:26:20 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/02/19/102620.html</guid>
      <description>&lt;p&gt;Super talk from &lt;a href=&#34;http://www.poppendieck.com&#34;&gt;Mary Poppendieck&lt;/a&gt; with #TeamSPS today. Exactly aligned with where we are going!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Absolutely ecstatic that &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; is hosting &lt;a href=&#34;https://x.com/mpoppendieck?ref_src=twsrc%5Etfw&#34;&gt;@mpoppendieck&lt;/a&gt; and Tom today! &lt;a href=&#34;https://x.com/hashtag/lean?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#lean&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://t.co/pjZbzgw5Fp&#34;&gt;pic.twitter.com/pjZbzgw5Fp&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/700722241403637760?ref_src=twsrc%5Etfw&#34;&gt;February 19, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;If we aren’t learning we are failing. Always move forward, with passion!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Almost 4 months in and I&amp;#39;m still impressed that my leadership insists on bringing in speakers for all of us &lt;a href=&#34;https://x.com/hashtag/teamSPS?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamSPS&lt;/a&gt; &lt;a href=&#34;https://t.co/3yeskWI85U&#34;&gt;pic.twitter.com/3yeskWI85U&lt;/a&gt;&lt;/p&gt;&amp;mdash; John Kelly (@jkelly3) &lt;a href=&#34;https://x.com/jkelly3/status/700728123243909121?ref_src=twsrc%5Etfw&#34;&gt;February 19, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Thank you Mary and Tom Poppendieck for sharing insights with #TeamSPS! Thanks &lt;a href=&#34;https://www.linkedin.com/in/andy-domeier-10813432/&#34;&gt;Andy Domeier&lt;/a&gt; for making it happen!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/c859d404fb.jpg&#34; width=&#34;600&#34; height=&#34;400&#34; alt=&#34;Four people smiling and posing together in a conference room, a presentation slide visible on a screen behind them.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/02/16/210117.html</link>
      <pubDate>Tue, 16 Feb 2016 23:01:17 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/02/16/210117.html</guid>
      <description>&lt;p&gt;Wow! Filled up the SPS event room.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;&lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; Minneapolis meetup... out of chairs! &lt;a href=&#34;https://t.co/3hYNvoCvoo&#34;&gt;pic.twitter.com/3hYNvoCvoo&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/699760375131017216?ref_src=twsrc%5Etfw&#34;&gt;February 17, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;teamSPS did our first internal devops day and was great!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;DevOps Meetup Mpls panel speaking of internal &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; meetings. &lt;a href=&#34;https://t.co/mkEaRmAYig&#34;&gt;pic.twitter.com/mkEaRmAYig&lt;/a&gt;&lt;/p&gt;&amp;mdash; Amy Patton (@pattonamyj) &lt;a href=&#34;https://x.com/pattonamyj/status/699768642372661248?ref_src=twsrc%5Etfw&#34;&gt;February 17, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/02/11/wonder-if-anyone.html</link>
      <pubDate>Fri, 12 Feb 2016 00:11:38 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/02/12/wonder-if-anyone.html</guid>
      <description>&lt;p&gt;Wonder if anyone is working on an AWS Lambda/S3 powered super simple to host #wiki. Seems like a compelling combo for a wiki.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/02/08/142756.html</link>
      <pubDate>Mon, 08 Feb 2016 09:27:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/02/08/142756.html</guid>
      <description>&lt;p&gt;Happy to be hosting &lt;a href=&#34;https://www.logicmonitor.com/lp/logicmonitor-live-minneapolis/&#34;&gt;LogicMonitor Live event in Minneapolis&lt;/a&gt; at &lt;a href=&#34;https://www.spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt;! #TeamSPS&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/01/26/teamsps-agile-roadshow.html</link>
      <pubDate>Tue, 26 Jan 2016 10:49:15 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/01/26/teamsps-agile-roadshow.html</guid>
      <description>&lt;p&gt;TeamSPS Agile Roadshow refresh on agile principles, best practices and continuous improvement.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/e41044c46e.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference room filled with attendees sitting at rows of tables with laptops open, watching a presenter at the front near a projection screen.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/01/21/210431.html</link>
      <pubDate>Thu, 21 Jan 2016 16:04:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/01/21/210431.html</guid>
      <description>&lt;p&gt;TeamSPS tech meetup starting! Love the knowledge sharing!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/7eb6b43a0a.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Crowded indoor tech meetup with people sitting at tables using laptops, eating snacks, and networking in a modern office space.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2016/01/20/i-sense-chatops.html</link>
      <pubDate>Wed, 20 Jan 2016 13:32:34 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2016/01/20/i-sense-chatops.html</guid>
      <description>&lt;p&gt;I sense ChatOps in progress. #TeamSPS&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Very easy, install and go HipChat V2 API Wrapper for .NET &lt;a href=&#34;https://t.co/E3v479U5if&#34;&gt;https://t.co/E3v479U5if&lt;/a&gt;&lt;/p&gt;&amp;mdash; Travis Gosselin (@travisjgosselin) &lt;a href=&#34;https://x.com/travisjgosselin/status/689856447144988677?ref_src=twsrc%5Etfw&#34;&gt;January 20, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/22/my-daughter-visited.html</link>
      <pubDate>Tue, 22 Dec 2015 22:25:10 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/23/my-daughter-visited.html</guid>
      <description>&lt;p&gt;My daughter visited my office today and sketched out this microservice architecture.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/e123ce3ad9.jpg&#34; width=&#34;600&#34; height=&#34;391&#34; alt=&#34;Hand-drawn whiteboard sketch showing a Database connected via a link chain to two Macroservices, each containing two Microservices boxes.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/19/interesting-new-http.html</link>
      <pubDate>Sat, 19 Dec 2015 20:07:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/20/interesting-new-http.html</guid>
      <description>&lt;p&gt;Interesting new http status code. Hat tip to &lt;a href=&#34;https://www.tbray.org/ongoing/&#34;&gt;Tim Bray&lt;/a&gt;!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;The Ray Bradbury status code, HTTP 451 &lt;a href=&#34;https://t.co/5m3DV9ag50&#34;&gt;https://t.co/5m3DV9ag50&lt;/a&gt;&lt;/p&gt;&amp;mdash; Jeff Atwood (@codinghorror) &lt;a href=&#34;https://x.com/codinghorror/status/678380090774827008?ref_src=twsrc%5Etfw&#34;&gt;December 20, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/19/saturday-reading-on.html</link>
      <pubDate>Sat, 19 Dec 2015 17:41:15 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/19/saturday-reading-on.html</guid>
      <description>&lt;p&gt;Saturday reading on microservices.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/816782b296.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;Building Microservices book by Sam Newman resting on two laptop cases on a wooden table.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/17/153158.html</link>
      <pubDate>Thu, 17 Dec 2015 16:31:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/17/153158.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://twitter.com/q3aiml&#34;&gt;Andy Clayton&lt;/a&gt; showing Chat Ops work at tech meetup!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/5771e6de95.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Group of people at a tech meetup seated around a table with laptops and drinks watching a HipChat conversation projected on a large screen.&#34; /&gt;
&lt;p&gt;Jeremy Olexa presenting on our use of &lt;a href=&#34;http://mesos.apache.org&#34;&gt;Mesos&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/4e30f9a3de.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Presenter speaks to a group seated around a table with laptops and snacks, with a Mesos architecture slide projected on screen behind him.&#34; /&gt;
&lt;p&gt;Crazy excited about what #TeamSPS is doing with &lt;a href=&#34;http://mesos.apache.org&#34;&gt;Mesos&lt;/a&gt;. Massive agility jump!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/15/great-diagram-powerful.html</link>
      <pubDate>Tue, 15 Dec 2015 23:55:49 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/16/great-diagram-powerful.html</guid>
      <description>&lt;p&gt;Great diagram. Powerful tool.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Can&amp;#39;t wait to update this lightsaber duels diagram for &lt;a href=&#34;https://x.com/hashtag/theforceawakens?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#theforceawakens&lt;/a&gt; ... &lt;a href=&#34;https://x.com/hashtag/starwars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#starwars&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/visualization?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#visualization&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/mindmapping?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#mindmapping&lt;/a&gt; &lt;a href=&#34;https://t.co/sqXcL2vrqs&#34;&gt;pic.twitter.com/sqXcL2vrqs&lt;/a&gt;&lt;/p&gt;&amp;mdash; Instaviz (@instaviz) &lt;a href=&#34;https://x.com/instaviz/status/676955415054319618?ref_src=twsrc%5Etfw&#34;&gt;December 16, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/06/digging-in-ordered.html</link>
      <pubDate>Sun, 06 Dec 2015 11:55:27 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/06/digging-in-ordered.html</guid>
      <description>&lt;p&gt;Digging in, ordered &lt;a href=&#34;https://www.amazon.com/dp/1495437779/&#34;&gt;Promise Theory: Principles and Applications&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/05/got-a-new.html</link>
      <pubDate>Sat, 05 Dec 2015 10:20:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/05/got-a-new.html</guid>
      <description>&lt;p&gt;Got a new service architecting in my head and can’t stop thinking and evolving it. Going to be huge. So excited. #TeamSPS&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/03/graph-all-the.html</link>
      <pubDate>Thu, 03 Dec 2015 12:21:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/03/graph-all-the.html</guid>
      <description>&lt;p&gt;Graph all the things, and graph all the things that graph the things! #TeamSPS&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/03/cron-into-cron.html</link>
      <pubDate>Thu, 03 Dec 2015 11:11:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/03/cron-into-cron.html</guid>
      <description>&lt;p&gt;&lt;code&gt;cron&lt;/code&gt; into &lt;code&gt;cron&lt;/code&gt; FTW!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;@thingles &lt;a href=&#34;https://x.com/jolexa?ref_src=twsrc%5Etfw&#34;&gt;@jolexa&lt;/a&gt; Almost as brilliant as cron for a cron....&lt;/p&gt;&amp;mdash; Andy Domeier (@AndyJD_) &lt;a href=&#34;https://x.com/AndyJD_/status/672447718489325568?ref_src=twsrc%5Etfw&#34;&gt;December 3, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/03/one-chatbot-requesting.html</link>
      <pubDate>Thu, 03 Dec 2015 11:07:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/03/one-chatbot-requesting.html</guid>
      <description>&lt;p&gt;One chatbot requesting action from another chatbot. Chatops ^ 2 for #TeamSPS&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/12/03/tooling-from-sumologic.html</link>
      <pubDate>Thu, 03 Dec 2015 08:51:02 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/12/03/tooling-from-sumologic.html</guid>
      <description>&lt;p&gt;Tooling from &lt;a href=&#34;https://www.sumologic.com&#34;&gt;SumoLogic&lt;/a&gt;, &lt;a href=&#34;https://www.appdynamics.com&#34;&gt;AppDynamics&lt;/a&gt;, &lt;a href=&#34;https://www.logicmonitor.com&#34;&gt;LogicMonitor&lt;/a&gt;, and &lt;a href=&#34;https://www.catchpoint.com&#34;&gt;Catchpoint&lt;/a&gt; have totally changed the game for #TeamSPS. Incredible insight!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/11/29/ive-been-upgrading.html</link>
      <pubDate>Sun, 29 Nov 2015 16:25:21 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/11/29/ive-been-upgrading.html</guid>
      <description>&lt;p&gt;I’ve been upgrading the same &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; tarball for 4 years. Think it may be time for a fresh install.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/11/26/thankful-for-knowing.html</link>
      <pubDate>Fri, 27 Nov 2015 00:22:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/11/27/thankful-for-knowing.html</guid>
      <description>&lt;p&gt;Thankful for knowing smart and awesome people like &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt;! 😀&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Thankful for @thingles; hired me when I’d never used public cloud, told me to make a Twitter account, and said I should give a talk on tech.&lt;/p&gt;&amp;mdash; Bridget Kromhout (@bridgetkromhout) &lt;a href=&#34;https://x.com/bridgetkromhout/status/669900562759081985?ref_src=twsrc%5Etfw&#34;&gt;November 26, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/11/22/this-is-cool.html</link>
      <pubDate>Sun, 22 Nov 2015 20:50:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/11/23/this-is-cool.html</guid>
      <description>&lt;p&gt;This is cool! Combine queries across wikiverse!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;ExternalQueryLookup: yet another &lt;a href=&#34;https://x.com/SemanticMW?ref_src=twsrc%5Etfw&#34;&gt;@SemanticMW&lt;/a&gt; extension that MWJames is creating :) &lt;a href=&#34;https://t.co/RIhVblsowX&#34;&gt;https://t.co/RIhVblsowX&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/MediaWiki?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#MediaWiki&lt;/a&gt;&lt;/p&gt;&amp;mdash; Jeroen De Dauw (@JeroenDeDauw) &lt;a href=&#34;https://x.com/JeroenDeDauw/status/668601273122443264?ref_src=twsrc%5Etfw&#34;&gt;November 23, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title>DevOps@SPS (SPS TechJam 2015)</title>
      <link>https://www.thingelstad.com/2015/11/11/devopssps.html</link>
      <pubDate>Wed, 11 Nov 2015 09:56:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/11/11/devopssps.html</guid>
      <description>&lt;p&gt;Super excited for DevOps@SPS today! #teamSPS #devops&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/6b434f0c56.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Packed conference room of attendees seated at tables and chairs, several using laptops, during a tech event presentation.&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/wgintz1&#34;&gt;Bill Gintz&lt;/a&gt; sporting the #TeamSPS DevOps@SPS shirt with extra unicorns!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/7ede3ee85c.jpg&#34; width=&#34;600&#34; height=&#34;900&#34; alt=&#34;Man wearing glasses and a black DevOps at SPS t-shirt featuring a unicorn graphic, smiling indoors at a tech event.&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; kicking off #TeamSPS #devops event! Thank you!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/187889e751.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Woman with blonde and pink hair wearing a black Pivotal t-shirt and skirt presenting in front of a projected slide showing the Pivotal logo.&#34;&gt;
&lt;p&gt;Great — &lt;a href=&#34;https://twitter.com/optimuspaul/status/664460599359725568&#34;&gt;#TeamSPS in Ukraine on the streaming feed for DevOps@SPS&lt;/a&gt;. &lt;wave/&gt;&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Devops SPS &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; looking forward to hearing from &lt;a href=&#34;https://x.com/bridgetkromhout?ref_src=twsrc%5Etfw&#34;&gt;@bridgetkromhout&lt;/a&gt; &lt;a href=&#34;https://t.co/sNm18pLp5e&#34;&gt;pic.twitter.com/sNm18pLp5e&lt;/a&gt;&lt;/p&gt;&amp;mdash; optimuspaul🤖 (@optimuspaul) &lt;a href=&#34;https://x.com/optimuspaul/status/664460599359725568?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;“I put a TCP joke in here. I thought about a UDP joke but figured you probably wouldn’t get it.” &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; Brilliant! 😊&lt;/p&gt;
&lt;p&gt;Love &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; description of the act of writing software. Best I’ve heard. Won’t try to paraphrase.&lt;/p&gt;
&lt;p&gt;Awesome &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; talk on distributed teams. The parallel of distributed systems opens the topic to tech in great way! Thank you!&lt;/p&gt;
&lt;p&gt;My favorite &lt;a href=&#34;https://twitter.com/Twitterrific&#34;&gt;Twitterrific&lt;/a&gt; mute filter: &amp;ldquo;Pleading&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Selfie-as-a-service with &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt;! #hugops ? 😀&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/acb84f4f9b.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Two people smiling for a selfie at a tech event; the woman has blonde and pink hair and glasses, the man wears a blazer over a black unicorn shirt.&#34;&gt;
&lt;p&gt;Starting afternoon of #teamsps #devops with &lt;a href=&#34;https://www.sussna-associates.com&#34;&gt;Jeff Sussna&lt;/a&gt; and Design Thinking.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/5e08769257.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Two men at an SPS Commerce podium during a tech presentation, one speaking and one leaning against the wall smiling, with a projected slide visible behind them.&#34;&gt;
&lt;p&gt;Great talk from &lt;a href=&#34;https://www.sussna-associates.com&#34;&gt;Jeff Sussna&lt;/a&gt; for #TeamSPS #DevOps event. Great connections to our world!&lt;/p&gt;
&lt;p&gt;Nice &lt;a href=&#34;https://www.linkedin.com/in/kent-tangen-a059a/&#34;&gt;Kent Tangen&lt;/a&gt; and &lt;a href=&#34;https://www.linkedin.com/in/rob-krystyniak-b8927a9/&#34;&gt;Rob Krystyniak&lt;/a&gt;!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Collaboration at its best!&lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://t.co/0Ajpgr0R5R&#34;&gt;pic.twitter.com/0Ajpgr0R5R&lt;/a&gt;&lt;/p&gt;&amp;mdash; Anne Knapp (@knapp_anne) &lt;a href=&#34;https://x.com/knapp_anne/status/664499110062460929?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Nice! #TeamSPS Selfie!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Serious stuff being discussed. &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://t.co/xdIa2xRaw8&#34;&gt;pic.twitter.com/xdIa2xRaw8&lt;/a&gt;&lt;/p&gt;&amp;mdash; Amy Patton (@pattonamyj) &lt;a href=&#34;https://x.com/pattonamyj/status/664500772428775424?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;👍 #TeamSPS tech is a great place for everyone! Excited with the leadership of our Women in Tech @ SPS group!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Women in Tech at SPS with @cunningleah and &lt;a href=&#34;https://x.com/pattonamyj?ref_src=twsrc%5Etfw&#34;&gt;@pattonamyj&lt;/a&gt; and &lt;a href=&#34;https://x.com/milinda?ref_src=twsrc%5Etfw&#34;&gt;@Milinda&lt;/a&gt; Stone &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://t.co/q3tb3UXxBY&#34;&gt;pic.twitter.com/q3tb3UXxBY&lt;/a&gt;&lt;/p&gt;&amp;mdash; Anne Knapp (@knapp_anne) &lt;a href=&#34;https://x.com/knapp_anne/status/664541050308984832?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;a href=&#34;https://twitter.com/pattonamyj/status/664534649390149632&#34;&gt;Hallelujah&lt;/a&gt;!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;&lt;a href=&#34;https://x.com/chrismunns?ref_src=twsrc%5Etfw&#34;&gt;@chrismunns&lt;/a&gt; &amp;quot;The tools support the culture and the culture demands the tools&amp;quot;. &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/microservices?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#microservices&lt;/a&gt;&lt;/p&gt;&amp;mdash; Amy Patton (@pattonamyj) &lt;a href=&#34;https://x.com/pattonamyj/status/664534649390149632?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Nice — #TeamSPS DevOps presentation on AWS Lambda. API Gateway + Lambda = Magic Unicorns.&lt;/p&gt;
&lt;p&gt;AWS Lambda is an amazing service. In process of moving &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; bots to using it and API Gateway.&lt;/p&gt;
&lt;p&gt;Side benefits of operating a global team! Distributed everything!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Had to leave work to help with kids this afternoon.  &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; is streaming so I still get to participate. &lt;a href=&#34;https://t.co/fqH2nWmEA3&#34;&gt;pic.twitter.com/fqH2nWmEA3&lt;/a&gt;&lt;/p&gt;&amp;mdash; John Kelly (@jkelly3) &lt;a href=&#34;https://x.com/jkelly3/status/664551405689131009?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Megears!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Corp Tech getting into the mix!&lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://t.co/qAsj762LNG&#34;&gt;pic.twitter.com/qAsj762LNG&lt;/a&gt;&lt;/p&gt;&amp;mdash; Anne Knapp (@knapp_anne) &lt;a href=&#34;https://x.com/knapp_anne/status/664529526320439296?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Welcome to #TeamSPS John!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;worked for companies that wanted to empower employees. Loving living it. All day brainstorming how to be better?  Yes please. &lt;a href=&#34;https://x.com/hashtag/TeamSPS?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#TeamSPS&lt;/a&gt;&lt;/p&gt;&amp;mdash; John Kelly (@jkelly3) &lt;a href=&#34;https://x.com/jkelly3/status/664539096317079552?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;a href=&#34;https://twitter.com/kegDevelopment/status/664513695867777025&#34;&gt;NJ team on the live stream today&lt;/a&gt;! #TeamSPS #devops&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;nl&#34; dir=&#34;ltr&#34;&gt;NJ Engineering Team &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://t.co/SXNs0Ect87&#34;&gt;pic.twitter.com/SXNs0Ect87&lt;/a&gt;&lt;/p&gt;&amp;mdash; Ken (@kegDevelopment) &lt;a href=&#34;https://x.com/kegDevelopment/status/664513695867777025?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Favorite selfie of #TeamSPS #devops.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;@cunningleah &lt;a href=&#34;https://x.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/teamsps?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#teamsps&lt;/a&gt; Hippies Unite! &lt;a href=&#34;https://t.co/nESb42xQUf&#34;&gt;pic.twitter.com/nESb42xQUf&lt;/a&gt;&lt;/p&gt;&amp;mdash; Nate Anderson (@omnipitous) &lt;a href=&#34;https://x.com/omnipitous/status/664511483041202177?ref_src=twsrc%5Etfw&#34;&gt;November 11, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/10/30/very-cool-lambda.html</link>
      <pubDate>Fri, 30 Oct 2015 20:20:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/10/31/very-cool-lambda.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://twitter.com/jeffbarr/status/660207261583695872&#34;&gt;Very cool Lambda tool&lt;/a&gt;. Needed this for my &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; project.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/10/28/aws-lambda-is.html</link>
      <pubDate>Wed, 28 Oct 2015 21:08:55 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/10/29/aws-lambda-is.html</guid>
      <description>&lt;p&gt;AWS Lambda is seriously cool. All sorts of neat things to do with it, and Python makes it very accessible.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/10/09/155857.html</link>
      <pubDate>Fri, 09 Oct 2015 10:58:57 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/10/09/155857.html</guid>
      <description>&lt;p&gt;Had a great time at &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt;. Learned a lot and invigorated with new ideas!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 2</title>
      <link>https://www.thingelstad.com/2015/10/08/aws-reinvent-day.html</link>
      <pubDate>Thu, 08 Oct 2015 15:59:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/10/08/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;Good seat for &lt;a href=&#34;https://www.allthingsdistributed.com&#34;&gt;Werner Vogels&lt;/a&gt; &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; tech keynote. Looking forward to announcements!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/147ab6c2a8.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference hall packed with attendees facing a stage displaying a large AWS re:Invent logo on a blue-lit screen&#34; /&gt;
&lt;p&gt;X1 instance with 2TB of RAM and 100 cores? Wow.&lt;/p&gt;
&lt;p&gt;Looking forward to doing some Python Lambda functions! &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; bots would be perfect!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Now available, several exciting new Lambda features including Python support. &lt;a href=&#34;http://t.co/JombWFWl0h&#34;&gt;http://t.co/JombWFWl0h&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/reInvent?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#reInvent&lt;/a&gt; 🐍 &lt;a href=&#34;http://t.co/uBF4KOBkmi&#34;&gt;pic.twitter.com/uBF4KOBkmi&lt;/a&gt;&lt;/p&gt;&amp;mdash; Amazon Web Services (@awscloud) &lt;a href=&#34;https://x.com/awscloud/status/652161420398727169?ref_src=twsrc%5Etfw&#34;&gt;October 8, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Wonder if AWS Lambda functions in Python can use the Requests library? Yep, &lt;a href=&#34;https://docs.aws.amazon.com/lambda/latest/dg/python-package.html&#34;&gt;any pip module can be used in Lambda&lt;/a&gt;. Requests in this example.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 1</title>
      <link>https://www.thingelstad.com/2015/10/07/aws-reinvent-day.html</link>
      <pubDate>Wed, 07 Oct 2015 16:25:49 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/10/07/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;Excited to hear &lt;a href=&#34;https://en.wikipedia.org/wiki/Andy_Jassy&#34;&gt;Andy Jassy&lt;/a&gt; give the first &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; keynote!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/b43ecb74f0.jpg&#34; width=&#34;600&#34; height=&#34;449&#34; alt=&#34;Large conference hall packed with hundreds of attendees seated facing a stage with multiple large screens displaying System Integrators sponsor logos&#34; /&gt;
&lt;p&gt;Amazon Snowball very good idea. Make it easy.&lt;/p&gt;
&lt;p&gt;Would be equally nice to use Snowball to get data OUT of AWS.&lt;/p&gt;
&lt;p&gt;Awesome to see &lt;a href=&#34;https://mariadb.org&#34;&gt;MariaDB&lt;/a&gt; now in Amazon RDS! I’ve been running MariaDB personally for years and it’s solid.&lt;/p&gt;
&lt;p&gt;Very impressive!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;.&lt;a href=&#34;https://x.com/ajassy?ref_src=twsrc%5Etfw&#34;&gt;@ajassy&lt;/a&gt; - Amazon Aurora is the fastest growing service in &lt;a href=&#34;https://x.com/hashtag/AWS?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#AWS&lt;/a&gt; history &lt;a href=&#34;https://x.com/hashtag/reInvent?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#reInvent&lt;/a&gt; &lt;a href=&#34;http://t.co/PW1ulEWTay&#34;&gt;pic.twitter.com/PW1ulEWTay&lt;/a&gt;&lt;/p&gt;&amp;mdash; AWS Events (@AWSEvents) &lt;a href=&#34;https://x.com/AWSEvents/status/651797635817435138?ref_src=twsrc%5Etfw&#34;&gt;October 7, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;SPS Reaper RIP. #TeamSPS&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Thanks &lt;a href=&#34;https://x.com/hashtag/aws?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#aws&lt;/a&gt; for making our ec2 &amp;quot;reaper&amp;quot; redundant!!! These new &lt;a href=&#34;https://x.com/hashtag/conigrules?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#conigrules&lt;/a&gt; show you &lt;a href=&#34;https://x.com/hashtag/listentoyourcustomers?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#listentoyourcustomers&lt;/a&gt;  &lt;a href=&#34;https://x.com/hashtag/awsreinvent?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#awsreinvent&lt;/a&gt;&lt;/p&gt;&amp;mdash; Luke Samaha (@LukeSamaha) &lt;a href=&#34;https://x.com/LukeSamaha/status/651808265060225024?ref_src=twsrc%5Etfw&#34;&gt;October 7, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Blown away at the pace of innovation from AWS. Faster and faster!&lt;/p&gt;
&lt;p&gt;Making #TeamSPS more and more secure!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;I&amp;#39;m pretty stoked about this: &lt;a href=&#34;https://t.co/Dmno2MHIzy&#34;&gt;https://t.co/Dmno2MHIzy&lt;/a&gt;&lt;/p&gt;&amp;mdash; Beezow Doo-doo Zopittybop-bop-bop (@theojpeterson) &lt;a href=&#34;https://x.com/theojpeterson/status/651853990766903296?ref_src=twsrc%5Etfw&#34;&gt;October 7, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 0</title>
      <link>https://www.thingelstad.com/2015/10/06/aws-reinvent-day.html</link>
      <pubDate>Tue, 06 Oct 2015 19:39:06 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/10/06/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;My room? Very last one on the right. Won’t have to worry about getting steps in.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/8539ca3191.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Long elegant hotel corridor with arched ceiling, patterned carpet runner, wall sconces, and marble floor in the foreground near elevator doors and exit signs.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; busy tonight.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/7c97306006.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Crowded Amazon Web Services booth at a trade show convention center, with attendees mingling on two levels under bright overhead lighting.&#34; /&gt;
&lt;p&gt;Go #TeamSPS!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/f960d5eefe.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Crowded convention hall expo floor packed with attendees in front of vendor booths including TIBCO and Datapipe banners.&#34; /&gt;
&lt;p&gt;Asking folks at &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; about &lt;a href=&#34;https://mesos.apache.org&#34;&gt;Mesos&lt;/a&gt;. #TeamSPS leading the charge with Mesos in production already.&lt;/p&gt;
&lt;p&gt;Great hanging with some of the &lt;a href=&#34;https://www.sumologic.com&#34;&gt;SumoLogic&lt;/a&gt; cofounders and getting into tech details. #TeamSPS doing tons with Sumo.&lt;/p&gt;
&lt;p&gt;Great chat with &lt;a href=&#34;https://twitter.com/raychaser&#34;&gt;Christian Beedgen&lt;/a&gt;! Thanks.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;@thingles &lt;a href=&#34;https://x.com/SumoLogic?ref_src=twsrc%5Etfw&#34;&gt;@sumologic&lt;/a&gt; Great dinner and special thx to Christian Beedgen, CTO.  &lt;a href=&#34;https://x.com/hashtag/aws?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#aws&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/reinvent?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#reinvent&lt;/a&gt;  Sumo has been a great addition to &lt;a href=&#34;https://x.com/hashtag/TeamSPS?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#TeamSPS&lt;/a&gt;.&lt;/p&gt;&amp;mdash; Amy Patton (@pattonamyj) &lt;a href=&#34;https://x.com/pattonamyj/status/651630253257822208?ref_src=twsrc%5Etfw&#34;&gt;October 7, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title>Open Source North 2015</title>
      <link>https://www.thingelstad.com/2015/10/03/open-source-north.html</link>
      <pubDate>Sat, 03 Oct 2015 08:51:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/10/03/open-source-north.html</guid>
      <description>&lt;p&gt;Looking forward to presenting today at &lt;a href=&#34;https://www.opensourcenorth.com&#34;&gt;Open Source North&lt;/a&gt;!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/a4fe516370.jpg&#34; width=&#34;600&#34; height=&#34;800&#34; alt=&#34;Dark banner stand reading Welcome Free Thinkers with pine tree and crossed axes icons, Open Source North branding below, displayed in a building lobby near a registration table.&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://jobs.spscommerce.com&#34;&gt;SPS Recruiters&lt;/a&gt; at &lt;a href=&#34;https://www.opensourcenorth.com&#34;&gt;Open Source North&lt;/a&gt; looking for talented technologists with a bias to open source! Go #TeamSPS!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/fe45af58d5.jpg&#34; width=&#34;600&#34; height=&#34;800&#34; alt=&#34;SPS Commerce recruiters staffing a booth with banner reading Our Growth Is Your Opportunity at a tech conference&#34; /&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/jeffurban/&#34;&gt;Jeff Urban&lt;/a&gt; kicking off &lt;a href=&#34;https://www.opensourcenorth.com&#34;&gt;Open Source North&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/6f6717f6e9.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Crowded lobby of a conference venue with dozens of attendees standing and mingling near a registration table and event signage&#34; /&gt;
&lt;p&gt;Enjoying &lt;a href=&#34;https://www.linkedin.com/in/joelcrabb/&#34;&gt;Joel Crabb&lt;/a&gt;’s session on becoming an engineering manager. Great perspective. Agree 100%!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/3259febc68.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Audience members seated at round tables in a conference room watch a presentation slide listing reasons people avoid becoming managers in technical fields.&#34; /&gt;
&lt;p&gt;I ask every engineer pursuing management this. Doing personally and doing organizationally are different!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/dbf98727f4.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Conference room audience watching a presentation slide reading It&#39;s hard to finish each day without accomplishing anything, with a speaker at the front.&#34; /&gt;
&lt;p&gt;Presenting next at &lt;a href=&#34;https://www.opensourcenorth.com&#34;&gt;Open Source North&lt;/a&gt; on &lt;strong&gt;Transforming Your Organization with Open Source&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;I wasn&amp;rsquo;t able to stay for the entire day but the event was very well run, good lineup of speakers and very good attendance as well.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m hoping they plan to organize this again next year, I can definitely see this growing into a substantial event.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/09/16/bug-taking-longer.html</link>
      <pubDate>Wed, 16 Sep 2015 11:30:29 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/09/16/bug-taking-longer.html</guid>
      <description>&lt;p&gt;Bug taking longer? Are they really working in open issues less than 24 hours from release? Smells odd.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;WatchOS 2 Delayed, Will Not Ship Today: &lt;a href=&#34;http://t.co/ORKg5Q7VwZ&#34;&gt;http://t.co/ORKg5Q7VwZ&lt;/a&gt;&lt;/p&gt;&amp;mdash; John Gruber (@gruber) &lt;a href=&#34;https://x.com/gruber/status/644184802761965568?ref_src=twsrc%5Etfw&#34;&gt;September 16, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/08/26/new-hugops-thing.html</link>
      <pubDate>Wed, 26 Aug 2015 18:19:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/08/26/new-hugops-thing.html</guid>
      <description>&lt;p&gt;New #HugOps thing?&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;&amp;quot;GitHug&amp;quot; - PowerPoint typo or a way to show source control love?&lt;/p&gt;&amp;mdash; Anne Knapp (@knapp_anne) &lt;a href=&#34;https://x.com/knapp_anne/status/636670630289477632?ref_src=twsrc%5Etfw&#34;&gt;August 26, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/08/26/super-excited-about.html</link>
      <pubDate>Wed, 26 Aug 2015 16:08:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/08/26/super-excited-about.html</guid>
      <description>&lt;p&gt;Super excited about the &lt;a href=&#34;http://mesos.apache.org&#34;&gt;Mesos&lt;/a&gt; work #TeamSPS is exploring. So much potential!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/08/19/someone-please-make.html</link>
      <pubDate>Wed, 19 Aug 2015 07:22:50 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/08/19/someone-please-make.html</guid>
      <description>&lt;p&gt;Someone please make a simple &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; theme based on &lt;a href=&#34;https://edwardtufte.github.io/tufte-css/&#34;&gt;Tufte CSS&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/08/18/upgraded-wordpress-super.html</link>
      <pubDate>Tue, 18 Aug 2015 21:37:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/08/19/upgraded-wordpress-super.html</guid>
      <description>&lt;p&gt;Upgraded &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt;. Super easy as always. Unlike some other software. I’m looking at you MediaWiki.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/08/12/observation-github-repos.html</link>
      <pubDate>Wed, 12 Aug 2015 15:42:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/08/12/observation-github-repos.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;Observation:&lt;/strong&gt; Github repos != Wikis.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/07/31/teamsps-getting-ready.html</link>
      <pubDate>Fri, 31 Jul 2015 15:22:09 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/07/31/teamsps-getting-ready.html</guid>
      <description>&lt;p&gt;🙌 #TeamSPS getting ready to celebrate &lt;a href=&#34;https://sysadminday.com&#34;&gt;System Administrator Appreciation Day&lt;/a&gt;! Thank you team!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/2b42bb0db6.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Sheet cake in an open box decorated with a frosted laptop and a red rose, reading Happy SysAdmin Day in red icing.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/53cdc86b46.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Sheet cake decorated with an exploding laptop and bomb illustration, with Happy SysAdmin Day written in frosting, in an open box on a red table.&#34; /&gt;
&lt;p&gt;Jeremy Olexa and &lt;a href=&#34;https://twitter.com/simplyadrian78&#34;&gt;Adrian&lt;/a&gt; firing up some &lt;a href=&#34;https://sysadminday.com&#34;&gt;System Administrator Appreciation Day&lt;/a&gt; cake!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/e0eec20938.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Jeremy Olexa cutting a large decorated sheet cake at a red counter while coworkers gather around in a kitchen break room.&#34; /&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/08373ea1cc.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Several people gathered around a large decorated sheet cake being cut and served at a System Administrator Appreciation Day celebration.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/07/28/picked-up-jeffsussna.html</link>
      <pubDate>Tue, 28 Jul 2015 17:27:10 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/07/28/picked-up-jeffsussna.html</guid>
      <description>&lt;p&gt;Picked up &lt;a href=&#34;https://www.sussna-associates.com&#34;&gt;Jeff Sussna&lt;/a&gt; new book &lt;a href=&#34;https://www.amazon.com/Designing-Delivery-Rethinking-Digital-Service/dp/1491949880/&#34;&gt;Designing Delivery: Rethinking IT in the Digital Service Economy&lt;/a&gt;. Looking forward to the read.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/07/22/213826.html</link>
      <pubDate>Wed, 22 Jul 2015 16:38:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/07/22/213826.html</guid>
      <description>&lt;p&gt;Excited to be speaking at &lt;a href=&#34;https://www.opensourcenorth.com&#34;&gt;Open Source North&lt;/a&gt;!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Registration is open!  Excited to have @thingles (&lt;a href=&#34;https://x.com/SPS_Commerce?ref_src=twsrc%5Etfw&#34;&gt;@SPS_Commerce&lt;/a&gt; ), &lt;a href=&#34;https://x.com/joelcrabb?ref_src=twsrc%5Etfw&#34;&gt;@joelcrabb&lt;/a&gt; (@BestBuyJobsCorp), &lt;a href=&#34;https://x.com/schtool?ref_src=twsrc%5Etfw&#34;&gt;@schtool&lt;/a&gt; (&lt;a href=&#34;https://x.com/Liferay?ref_src=twsrc%5Etfw&#34;&gt;@liferay&lt;/a&gt;) speaking.&lt;/p&gt;&amp;mdash; Open Source North (@OpenSourceNorth) &lt;a href=&#34;https://x.com/OpenSourceNorth/status/623896855299014657?ref_src=twsrc%5Etfw&#34;&gt;July 22, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/05/06/me-years-ago.html</link>
      <pubDate>Wed, 06 May 2015 11:46:20 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/05/06/me-years-ago.html</guid>
      <description>&lt;p&gt;Me 6 years ago: &lt;a href=&#34;https://www.thingelstad.com/2009/07/30/my-solution-for.html&#34;&gt;My Solution for Microsoft to Get Nerds Back&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today from Microsoft Azure:&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;You asked, we listened. We’re working to make our &lt;a href=&#34;https://x.com/hashtag/cloud?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#cloud&lt;/a&gt; solutions work with &lt;a href=&#34;https://x.com/hashtag/Linux?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#Linux&lt;/a&gt;: &lt;a href=&#34;http://t.co/hUCYwnuPrv&#34;&gt;http://t.co/hUCYwnuPrv&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/MSIgnite?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#MSIgnite&lt;/a&gt; &lt;a href=&#34;http://t.co/szbGok7Ttt&#34;&gt;pic.twitter.com/szbGok7Ttt&lt;/a&gt;&lt;/p&gt;&amp;mdash; Microsoft Azure (@Azure) &lt;a href=&#34;https://x.com/Azure/status/595981605153439744?ref_src=twsrc%5Etfw&#34;&gt;May 6, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/04/16/bothersome-these-need.html</link>
      <pubDate>Thu, 16 Apr 2015 12:52:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/04/16/bothersome-these-need.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.blog/2015-04-16-github-s-2014-transparency-report/&#34;&gt;GitHub’s 2014 Transparency Report&lt;/a&gt; ← Glad more companies are starting to share this information.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/03/28/seems-odd-that.html</link>
      <pubDate>Sat, 28 Mar 2015 08:35:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/03/28/seems-odd-that.html</guid>
      <description>&lt;p&gt;Seems odd that &lt;a href=&#34;https://github.com&#34;&gt;GitHub&lt;/a&gt; doesn’t have a “watch” feature for organizations. Would like to see new repos, new members, etc.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/03/28/like-the-roots.html</link>
      <pubDate>Sat, 28 Mar 2015 08:34:19 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/03/28/like-the-roots.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/google/yapf&#34;&gt;Yet Another Python Formatter&lt;/a&gt; ← Like the roots of this in clang.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2015/03/28/good-read-myths.html</link>
      <pubDate>Sat, 28 Mar 2015 08:33:11 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2015/03/28/good-read-myths.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://medium.com/paypal-tech/10-myths-of-enterprise-python-8302b8f21f82&#34;&gt;10 Myths of Enterprise Python&lt;/a&gt; ← Good read.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/12/19/really-like-how.html</link>
      <pubDate>Fri, 19 Dec 2014 23:30:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/12/20/really-like-how.html</guid>
      <description>&lt;p&gt;Really like how &lt;a href=&#34;https://sslmate.com&#34;&gt;sslmate&lt;/a&gt; does certificates, but I sort of want to get wait for &lt;a href=&#34;https://letsencrypt.org&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; to get going!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/12/04/great-breakfast-this.html</link>
      <pubDate>Thu, 04 Dec 2014 10:02:22 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/12/04/great-breakfast-this.html</guid>
      <description>&lt;p&gt;Great breakfast this morning with &lt;a href=&#34;https://twitter.com/davidhussman&#34;&gt;David Hussman&lt;/a&gt;! We are lucky to have a talent like him in the Twin Cities!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/11/30/trying-to-use.html</link>
      <pubDate>Sun, 30 Nov 2014 09:42:13 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/30/trying-to-use.html</guid>
      <description>&lt;p&gt;Trying to use the &lt;a href=&#34;https://squareup.com/us/en/payments&#34;&gt;Square&lt;/a&gt; website as a consumer, not a business, is nearly impossible. Can’t even find my profile. Now updated my profile and somehow I’ve now become a business.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/11/27/days-like-today.html</link>
      <pubDate>Thu, 27 Nov 2014 09:53:34 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/27/days-like-today.html</guid>
      <description>&lt;p&gt;Days like today make me realize how badly I wish &lt;a href=&#34;https://www.logicmonitor.com&#34;&gt;LogicMonitor&lt;/a&gt; had a native iOS app. Want to be mobile and see graphs!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/11/26/overheard-at-apple.html</link>
      <pubDate>Wed, 26 Nov 2014 18:07:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/26/overheard-at-apple.html</guid>
      <description>&lt;p&gt;Overheard at Apple Store Genius Bar…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I did a cloud thing, I have no idea.&amp;rdquo;&lt;br&gt;
&amp;ldquo;There’s more than one cloud then? There are lots of clouds?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/11/23/cool-little-python.html</link>
      <pubDate>Sun, 23 Nov 2014 23:19:57 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/24/cool-little-python.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://blog.michaelsu.io/announcing-prophet/&#34;&gt;Prophet&lt;/a&gt; ← Cool little Python module for doing financial modeling.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/11/23/wow-science-museum.html</link>
      <pubDate>Sun, 23 Nov 2014 11:00:44 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/23/wow-science-museum.html</guid>
      <description>&lt;p&gt;Wow, &lt;a href=&#34;https://new.smm.org&#34;&gt;Science Museum of Minnesota&lt;/a&gt; website is really difficult to use. It won’t acknowledge that we are members. Guess I’ll have to call them on the telephone. Now I have to go 3 phone tree levels to to get “phone is unavailable at this time”.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Question2Answer Number Captcha</title>
      <link>https://www.thingelstad.com/2014/11/16/questionanswer-number-captcha.html</link>
      <pubDate>Sun, 16 Nov 2014 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/16/questionanswer-number-captcha.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using &lt;a href=&#34;http://www.question2answer.org&#34;&gt;Question2Answer&lt;/a&gt; for a number of years now to power &lt;a href=&#34;http://ask.planetkubb.com&#34;&gt;Ask Planet Kubb&lt;/a&gt;. I like Question2Answer because it is simple to run, uses a standard PHP + MySQL setup and can even be used in a multi-site farm configuration easy enough. However, I&amp;rsquo;ve been frustrated by it&amp;rsquo;s ability to manage spam registrations.&lt;/p&gt;
&lt;p&gt;Question2Answer has built in support for &lt;a href=&#34;http://www.google.com/recaptcha/intro/index.html&#34;&gt;ReCaptcha&lt;/a&gt; and it has a plugin method to use other anti-spam measures. I&amp;rsquo;ve used ReCaptcha for a while, but it results in 4 to 10 spam registrations a day. I tried switching to the &lt;a href=&#34;https://github.com/amiyasahu/q2a-logical-captcha&#34;&gt;Q2A Logical Captcha&lt;/a&gt; by &lt;a href=&#34;https://github.com/amiyasahu/&#34;&gt;amiyasahu&lt;/a&gt; which uses &lt;a href=&#34;http://textcaptcha.com&#34;&gt;Text Captcha&lt;/a&gt;. I even submitted a &lt;a href=&#34;https://github.com/amiyasahu/q2a-logical-captcha/pull/2&#34;&gt;pull request to properly salt the captchas&lt;/a&gt;. But this resulted in 3-4 times the spam registrations as ReCaptcha! &lt;strong&gt;Ouch!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I decided to apply the same type of &lt;a href=&#34;https://www.thingelstad.com/2014/updated-dynamic-questy-captchas/&#34;&gt;spam defense I&amp;rsquo;ve successfully used for MediaWiki&lt;/a&gt; and early results are great. It uses the &lt;a href=&#34;http://pear.php.net/package-info.php?package=Numbers_Words&#34;&gt;Numbers_Words&lt;/a&gt; PHP package to spell out a number of nine digits and then ask the user to identify the number in a specific position. The question looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/ffdc1e4436.png&#34; alt=&#34;screenshot&#34;&gt;&lt;/p&gt;
&lt;p&gt;This works really well. You can grab &lt;a href=&#34;https://github.com/thingles/q2a-number-captcha&#34;&gt;q2a-number-captcha&lt;/a&gt; and &lt;code&gt;git clone&lt;/code&gt; it for your own use.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 2</title>
      <link>https://www.thingelstad.com/2014/11/13/aws-reinvent-day.html</link>
      <pubDate>Thu, 13 Nov 2014 20:02:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/13/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;Excited for &lt;a href=&#34;https://www.allthingsdistributed.com&#34;&gt;Werner Vogels&lt;/a&gt; &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; keynote!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/0066520127.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference keynote with a speaker on stage in front of a projected slide reading Werner Vogels Chief Technology Officer Amazon.com&#34;&gt;
&lt;p&gt;Great groove!&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Excited to have &lt;a href=&#34;https://x.com/iamjacknovak?ref_src=twsrc%5Etfw&#34;&gt;@iamjacknovak&lt;/a&gt; spinning on stage before my keynote at &lt;a href=&#34;https://x.com/hashtag/reinvent?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#reinvent&lt;/a&gt; &lt;a href=&#34;http://t.co/QFSzZaHXOq&#34;&gt;pic.twitter.com/QFSzZaHXOq&lt;/a&gt;&lt;/p&gt;&amp;mdash; Werner Vogels (@Werner) &lt;a href=&#34;https://x.com/Werner/status/532935962696097792?ref_src=twsrc%5Etfw&#34;&gt;November 13, 2014&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;Awesome! AWS container service!&lt;/p&gt;
&lt;p&gt;AWS is first cloud platform with container support. Yes?&lt;/p&gt;
&lt;p&gt;Some CLI geekdom in the &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; keynote. Nice!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/6d102e4725.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference hall audience watching a dark presentation slide showing command-line interface text on a big screen, with illuminated pillars and stage lighting visible.&#34;&gt;
&lt;p&gt;Impressive &lt;a href=&#34;https://www.docker.com&#34;&gt;Docker&lt;/a&gt; AWS container demo at re:Invent!&lt;/p&gt;
&lt;p&gt;AWS Lambda announced! AWS Lambda has big potential for #TeamSPS!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://skrillex.com/&#34;&gt;Skrillex&lt;/a&gt; performing at re:Play!&lt;/p&gt;
&lt;p&gt;Expecting a packed Lambda breakout session at re:Invent!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/a83ca139a9.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Packed conference room audience seated in chairs facing a stage with AWS re:Invent branding and a slide reading Getting Started with AWS Lambda&#34;&gt;
&lt;p&gt;AWS #reinvent should hand out copies of &lt;a href=&#34;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html&#34;&gt;Strucuture of Computer Programs&lt;/a&gt; to celebrate Lambda.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/9ba6876247.jpg&#34; width=&#34;400&#34; height=&#34;579&#34; alt=&#34;Book cover of Structure and Interpretation of Computer Programs Second Edition by Harold Abelson and Gerald Jay Sussman with Julie Sussman&#34;&gt;
&lt;p&gt;Love AWS Lambda bringing cloud scale to functional workloads. Opens up amazing potentials.&lt;/p&gt;
&lt;p&gt;Lots of buzz in conversations about Lambda.&lt;/p&gt;
&lt;p&gt;Wonder how long until social feeds like &lt;a href=&#34;http://www.gnip.com/&#34;&gt;Gnip&lt;/a&gt; allow connecting AWS Lambda functions. Seems obvious.&lt;/p&gt;
&lt;p&gt;Line for AWS ECS session is insane.&lt;/p&gt;
&lt;p&gt;At the most in-demand re:Invent session of AWS Container Service. Packed!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/1d4bafd8fc.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Packed conference ballroom at AWS re:Invent with rows of attendees facing a stage showing Amazon EC2 Container Service slides on two large screens.&#34;&gt;
&lt;p&gt;Every session at re:Invent touching on containers or &lt;a href=&#34;https://www.docker.com&#34;&gt;Docker&lt;/a&gt; have been completely full with lines out the door.&lt;/p&gt;
&lt;p&gt;When did “fleet” overtake the term “farm”. Tertiary impact of all this container talk?&lt;/p&gt;
&lt;p&gt;The Container Service slides seem to have gone without review from the AWS brand managers. 🙂 Refreshing actually.&lt;/p&gt;
&lt;p&gt;“Server farm” v “server fleet”. Fleet sounds bigger. Better to be transportation system than farmers?&lt;/p&gt;
&lt;p&gt;Very cool elastic container service demo.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 1</title>
      <link>https://www.thingelstad.com/2014/11/12/aws-reinvent-day.html</link>
      <pubDate>Wed, 12 Nov 2014 19:02:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/12/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;Seated for AWS re:Invent keynote!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/e9c0f1208c.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference hall packed with attendees facing a stage and two large screens showing an AWS re:Invent presentation with a tweet about Amazon Cloud&#34;&gt;
&lt;p&gt;Andy Jassy “Cloud has become the new normal.” True for many!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/c01ed561bc.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference keynote slide reading Cloud Has Become the New Normal surrounded by white cloud illustrations on a dark background, with a seated crowd in silhouette below.&#34;&gt;
&lt;p&gt;“shower cycles”? New term to me.&lt;/p&gt;
&lt;p&gt;Amazon Aurora looks compelling.&lt;/p&gt;
&lt;p&gt;Impressed by first day keynote and all the work going on!&lt;/p&gt;
&lt;p&gt;At the re:Invent Security Keynote. AWS capabilities for security has radically changed and improved in recent years. AWS has &lt;strong&gt;5 to 7 thousand instances&lt;/strong&gt; running continual security tests against internal systems constantly.&lt;/p&gt;
&lt;p&gt;Lunch for 9,500.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/50599c212a.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large convention hall with rows of round tables covered in white linens and red banquet chairs, partially filled with attendees eating lunch.&#34;&gt;
&lt;p&gt;You will not miss &lt;a href=&#34;https://twitter.com/mfdii&#34;&gt;Michael Ducy&lt;/a&gt;. Very sparkly!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/c5cdd2f023.jpg&#34; width=&#34;600&#34; height=&#34;900&#34; alt=&#34;Smiling bearded man wearing a shiny silver metallic zip-up hoodie at a tech conference expo hall with Cisco and Imperva booths visible behind him.&#34;&gt;
&lt;p&gt;Nice demo of &lt;a href=&#34;https://www.datadoghq.com&#34;&gt;Datadog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Attending impressive session on Key Management in AWS with &lt;a href=&#34;https://twitter.com/pattonamyj&#34;&gt;Amy Patton&lt;/a&gt;. Wishing &lt;a href=&#34;https://www.linkedin.com/in/milindastone/&#34;&gt;Milinda Rambel Stone&lt;/a&gt;, our security leader for #TeamSPS, was here too!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 0</title>
      <link>https://www.thingelstad.com/2014/11/11/aws-reinvent-day.html</link>
      <pubDate>Tue, 11 Nov 2014 22:04:25 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/11/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;Looking forward to connecting with the rest of #TeamSPS at #reinvent!&lt;/p&gt;
&lt;p&gt;68 °F and the cab driver had the heat on. Opened window. #vegas&lt;/p&gt;
&lt;p&gt;Hotel is pretty full so got upgraded to a suite. Nice digs.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/03640c8de2.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Spacious luxury hotel suite at night with a king bed, red bench, gray suitcase, marble bar, and city lights through the window.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/11/06/083200.html</link>
      <pubDate>Thu, 06 Nov 2014 09:32:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/06/083200.html</guid>
      <description>&lt;p&gt;👍 #TeamSPS workshop day kicking off! Education, training and continuous learning are key to successful teams! Six sessions ranging from Agile, TDD, Platform overview, AWS, Git Workflow and Ansible!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/707e5c301f.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Corporate training room with attendees at rows of tables facing a projected Agile Overview slide, while several people gather at a food table in the foreground.&#34;&gt;
&lt;p&gt;If you are practicing agile methods, and haven&amp;rsquo;t revisited fundamentals in the last year, you&amp;rsquo;re probably doing it wrong.&lt;/p&gt;
&lt;p&gt;Nice — #TeamSPS workshops continue with &lt;a href=&#34;https://twitter.com/mikebjerkness&#34;&gt;Mike Bjerkness&lt;/a&gt; presenting SPS CodeFlow.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/19ab4182c9.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference room filled with dozens of attendees seated at rows of desks facing a presenter standing at a projected screen at the front.&#34;&gt;
&lt;p&gt;Thank you to &lt;a href=&#34;https://reinvent.awsevents.com/&#34;&gt;AWS Cloud&lt;/a&gt; for sending presenter to #TeamSPS workshop day!&lt;/p&gt;
&lt;p&gt;Final session of #TeamSPS workshop day hosted by &lt;a href=&#34;https://www.linkedin.com/in/dfederlein/&#34;&gt;David Federlein&lt;/a&gt; giving depth on &lt;a href=&#34;https://www.ansible.com&#34;&gt;Ansible&lt;/a&gt;. SPS is starting to use Ansible for continuous deployment.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/11/04/scotchprophet-and-hlprmnky.html</link>
      <pubDate>Tue, 04 Nov 2014 15:54:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/04/scotchprophet-and-hlprmnky.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://twitter.com/scotchprophet&#34;&gt;Rich Howard&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/hlprmnky&#34;&gt;Chris Bidler&lt;/a&gt; jamming on some code. #TeamSPS&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/7691a6d918.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Two men sitting side by side at an open-plan office desk, looking at a laptop screen together, surrounded by coworkers at computer workstations.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/10/31/finally-succumbed-to.html</link>
      <pubDate>Fri, 31 Oct 2014 19:54:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/11/01/finally-succumbed-to.html</guid>
      <description>&lt;p&gt;Finally succumbed to &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; Jetpack. It is pretty nice. 😕&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Updated Dynamic Questy Captchas</title>
      <link>https://www.thingelstad.com/2014/10/28/updated-dynamic-questy.html</link>
      <pubDate>Tue, 28 Oct 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/10/28/updated-dynamic-questy.html</guid>
      <description>&lt;p&gt;A little &lt;a href=&#34;https://www.thingelstad.com/2013/stopping-mediawiki-spam-with-dynamic-questy-captchas/&#34;&gt;over a year ago&lt;/a&gt; I shared a method of generating dynamic &lt;a href=&#34;http://www.mediawiki.org/wiki/Extension:QuestyCaptcha&#34;&gt;Questy Captchas&lt;/a&gt; for the &lt;a href=&#34;http://www.mediawiki.org/&#34;&gt;MediaWiki&lt;/a&gt; &lt;a href=&#34;http://www.mediawiki.org/wiki/Extension:ConfirmEdit&#34;&gt;ConfirmEdit extension.&lt;/a&gt; This method has been awesome for stopping registration spam on the thingelstad.com wiki farm and many other wiki admins have used it with success. Unfortunately it was more useful in it&amp;rsquo;s novelty than in it&amp;rsquo;s difficult to solve, and eventually some spammers wrote the logic to solve it and the registration spam started flooding in.&lt;/p&gt;
&lt;p&gt;I decided to put a new method in place that is based on the same question. The previous question generated 8 characters and asked the user to provide one of them based on a random index. I&amp;rsquo;ve now changed this to generating a number between 100,000,000 and 999,999,999, turning that into spelled out words and then asking to identify one digit. It looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is the sixth digit of the number nine hundred fifty-one million
eight hundred ninety-eight thousand four hundred twenty-seven?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That turns out to be a somewhat hard question for a human too. I find I typically have to type out the number as I read it. The benefit of this is the solution isn&amp;rsquo;t in the text of the page. And while I&amp;rsquo;m sure there are great libraries for turning written numbers back to digits, it&amp;rsquo;s not immediately obvious.&lt;/p&gt;
&lt;h3 id=&#34;implementation&#34;&gt;Implementation&lt;/h3&gt;
&lt;p&gt;I had no interest in implementing my own code to convert a number into words, and happily there is a PHP package called &lt;a href=&#34;http://pear.php.net/package-info.php?package=Numbers_Words&#34;&gt;Numbers_Words&lt;/a&gt; that does just that. The URL and install information are in the comments right before the require line. Everything else is pretty simple stuff.&lt;/p&gt;
&lt;p&gt;To implement this I used the same technique I did previously. Here is what this looks like in LocalSettings.php.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Let&amp;#39;s stop MediaWiki registration spam
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;require_once&lt;/span&gt;( &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$IP&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/extensions/ConfirmEdit/ConfirmEdit.php&amp;#34;&lt;/span&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;require_once&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$IP&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/extensions/ConfirmEdit/QuestyCaptcha.php&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$wgCaptchaClass &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;QuestyCaptcha&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Set number question for questy
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# sudo pear install channel://pear.php.net/Numbers_Words-0.16.2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# http://pear.php.net/package-info.php?package=Numbers_Words 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;require_once&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Numbers/Words.php&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengeNumber &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;899999999&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;100000000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengeString &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;string&lt;/span&gt;)$myChallengeNumber;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengeStringLong &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Numbers_Words&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;toWords&lt;/span&gt;($myChallengeNumber);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengeIndex &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengePositions &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;first&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;second&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;third&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fourth&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fifth&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sixth&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;seventh&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;eighth&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ninth&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengePositionName &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $myChallengePositions[$myChallengeIndex &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$wgCaptchaQuestions[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;question&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;What is the &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$myChallengePositionName&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; digit of the number &amp;lt;strong&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$myChallengeStringLong&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;/strong&amp;gt;?&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;answer&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $myChallengeString[$myChallengeIndex &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Initial results of this are very solid.&lt;/p&gt;
&lt;p&gt;The Numbers_Words package also supports localization into over a dozen languages. I didn&amp;rsquo;t explore this but clearly this should work for multiple languages pretty easily as well.&lt;/p&gt;
&lt;h3 id=&#34;related&#34;&gt;Related&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/thingles/wiki-farm/commit/df1587d3b28b586197259da4587fc152becefc4e&#34;&gt;LocalSettings.php change&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/WikiApiary/WikiApiary/issues/204&#34;&gt;WikiApiary Spam Accounts issue&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/10/06/the-main-thing.html</link>
      <pubDate>Mon, 06 Oct 2014 19:48:16 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/10/07/the-main-thing.html</guid>
      <description>&lt;p&gt;The main thing I’ve learned from my &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; project is how horribly bad the spam bot problem is in the &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; world.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/09/30/textcaptcha-looks-like.html</link>
      <pubDate>Tue, 30 Sep 2014 22:55:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/10/01/textcaptcha-looks-like.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://textcaptcha.com&#34;&gt;TextCaptcha&lt;/a&gt; looks like a nice tool. Trying it on one of my sites. Thanks &lt;a href=&#34;https://twitter.com/robtuley&#34;&gt;@robtuley&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Restarting AWS MN</title>
      <link>https://www.thingelstad.com/2014/09/15/restarting-aws-mn.html</link>
      <pubDate>Mon, 15 Sep 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/09/15/restarting-aws-mn.html</guid>
      <description>&lt;p&gt;A couple of months ago &lt;a href=&#34;http://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; and I started talking about coordinating with the &lt;a href=&#34;http://www.meetup.com/Twin-Cities-Amazon-Web-Services-User-Group&#34;&gt;Twin Cities Amazon Web Services User Group&lt;/a&gt; organizers to get the meetup group going again. The first thing we did was change the name to something a bit shorter, &lt;a href=&#34;http://aws.mn/wiki/Home&#34;&gt;AWS MN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We had our first meetup a month ago to get things going again with a pretty loose agenda. This Wednesday we have a presentation I&amp;rsquo;m &lt;em&gt;super&lt;/em&gt; excited about on &lt;a href=&#34;http://aws.mn/wiki/Automating_AWS_with_Ansible&#34;&gt;Automating AWS with Ansible&lt;/a&gt; by &lt;a href=&#34;https://twitter.com/dfed&#34;&gt;David Federlein&lt;/a&gt;. We already have presentations for October and December as well. Want to present for November? 😀&lt;/p&gt;
&lt;p&gt;This is my first time organizing a meetup and I&amp;rsquo;m super excited to be doing this with Bridget who is frankly &lt;strong&gt;awesome&lt;/strong&gt; at all of this (you should follow her on Twitter, &lt;a href=&#34;https://twitter.com/bridgetkromhout&#34;&gt;@bridgetkromhout&lt;/a&gt;). We are also &lt;a href=&#34;https://github.com/thingles/aws_mn/issues&#34;&gt;using GitHub issues&lt;/a&gt; to coordinate our work which is working really well and hosting at &lt;a href=&#34;http://www.spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt; using our training facility which also works fabulous for this and is nicely located in core downtown.&lt;/p&gt;
&lt;p&gt;If you have an interest in AWS and topics related to it, you should definitely join the meetup and come to our sessions. They are the third Wednesday of every month at 6pm! Also follow &lt;a href=&#34;https://twitter.com/aws_mn&#34;&gt;@aws_mn&lt;/a&gt; on Twitter!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Getting started with Ansible</title>
      <link>https://www.thingelstad.com/2014/08/24/000000.html</link>
      <pubDate>Sun, 24 Aug 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/08/24/000000.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been planning to start working on using a &lt;a href=&#34;https://en.wikipedia.org/wiki/Configuration_management&#34;&gt;configuration management&lt;/a&gt; solution for my hobby servers. &lt;a href=&#34;http://www.getchef.com&#34;&gt;Chef&lt;/a&gt; was too heavy for my purposes, and confused me a lot. I got really enamored with &lt;a href=&#34;http://www.saltstack.com&#34;&gt;SaltStack&lt;/a&gt;, but never really caught onto it. I decided to give &lt;a href=&#34;http://www.ansible.com/home&#34;&gt;Ansible&lt;/a&gt; a go and actually have a couple of hosts in &lt;a href=&#34;https://www.vagrantup.com&#34;&gt;Vagrant&lt;/a&gt; and am managing some limited packages with Ansible. My &lt;a href=&#34;https://github.com/thingles/ansible&#34;&gt;work is in GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In theory, it should be straightforward to take my build notes and turn them into Ansible playbooks. We&amp;rsquo;ll see.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MediaWiki LocalSettings for Farmers</title>
      <link>https://www.thingelstad.com/2014/08/24/mediawiki-localsettings-for.html</link>
      <pubDate>Sun, 24 Aug 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/08/24/mediawiki-localsettings-for.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been running a &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; farm at thingelstad.com for a couple of years now hosting about a dozen wikis ranging from small to very large. Running a MediaWiki farm is a bit complicated and you can approach it a number of different ways. I recently &lt;a href=&#34;https://github.com/thingles/wiki-farm&#34;&gt;pushed the settings that I use to run my farm into GitHub&lt;/a&gt; so others can see how I do it. The next step will be to also move the scripts that I use up, but those will be kept in another repository.&lt;/p&gt;
&lt;p&gt;Hopefully this proves useful to others. It&amp;rsquo;s useful for me to finally have these very complicated settings (really code!) under version control.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/08/23/had-some-progress.html</link>
      <pubDate>Sat, 23 Aug 2014 18:14:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/08/23/had-some-progress.html</guid>
      <description>&lt;p&gt;Had some progress with &lt;a href=&#34;https://www.vagrantup.com&#34;&gt;Vagrant&lt;/a&gt; and &lt;a href=&#34;https://www.ansible.com&#34;&gt;Ansible&lt;/a&gt; today.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/08/20/here-is-a.html</link>
      <pubDate>Wed, 20 Aug 2014 22:35:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/08/21/here-is-a.html</guid>
      <description>&lt;p&gt;“Here is a &lt;a href=&#34;https://github.com/jthingelstad/foreground/pull/161#issuecomment-52637544&#34;&gt;massive pull request with tons of changes&lt;/a&gt;.”&lt;br&gt;
“Have you tested it?”&lt;br&gt;
“No.”&lt;/p&gt;
&lt;p&gt;😭&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/08/08/finally-boto-supports.html</link>
      <pubDate>Fri, 08 Aug 2014 05:07:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/08/08/finally-boto-supports.html</guid>
      <description>&lt;p&gt;Finally! Boto supports Python 3. Nice.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/08/03/excited-to-partner.html</link>
      <pubDate>Sun, 03 Aug 2014 19:57:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/08/04/excited-to-partner.html</guid>
      <description>&lt;p&gt;Excited to partner up with &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; and get the &lt;a href=&#34;https://www.meetup.com/Twin-Cities-Amazon-Web-Services-User-Group/&#34;&gt;AWS MN&lt;/a&gt; Amazon Web Services Twin Cities meetup group revived!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>WikiApiary Stickers</title>
      <link>https://www.thingelstad.com/2014/07/21/wikiapiary-stickers.html</link>
      <pubDate>Mon, 21 Jul 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/07/21/wikiapiary-stickers.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.stickermule.com&#34;&gt;StickerMule&lt;/a&gt; had a great deal a couple of weeks ago so I had these fun &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; clear vinyl stickers made. They really came out great!&lt;/p&gt;
&lt;p&gt;If you want one for your laptop or whatever send me a note and I&amp;rsquo;ll put one in the mail.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/354ee69013.jpg&#34; alt=&#34;Dozens of small cartoon bumblebee stickers scattered across a sunflower-patterned background with yellow petals and brown centers.&#34;&gt;
</description>
    </item>
    
    <item>
      <title>DevOpsDays MSP 2014</title>
      <link>https://www.thingelstad.com/2014/07/18/devopsdays-msp.html</link>
      <pubDate>Fri, 18 Jul 2014 09:22:42 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/07/18/devopsdays-msp.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://devopsdays.org/minneapolis/&#34;&gt;DevOpsDays MSP&lt;/a&gt; day 2 getting started with &lt;a href=&#34;https://www.sussna-associates.com&#34;&gt;Jeff Sussna&lt;/a&gt;!&lt;br/&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/img-0217.jpg&#34; width=&#34;600&#34; height=&#34;448&#34; alt=&#34;Conference session in a tiered auditorium with a presenter at a podium and a projected yellow slide reading Protip: promises aren&#39;t always kept.&#34;&gt;&lt;/li&gt;
&lt;li&gt;Thank you DevOpsDays MSP for opportunity to sponsor a great event!&lt;/li&gt;
&lt;li&gt;The primary objective of development teams is to create new services and applications.&lt;/li&gt;
&lt;li&gt;The primary objective of tech operations is to insure 24x7 operations, which all change threatens.&lt;/li&gt;
&lt;li&gt;Any tech organization that doesn&amp;rsquo;t acknowledge, embrace and empathize around these two facts has a broken culture.&lt;/li&gt;
&lt;li&gt;Agree with this &lt;a href=&#34;https://twitter.com/beerops&#34;&gt;@beerops&lt;/a&gt;.&lt;br/&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/img-0218.jpg&#34; width=&#34;600&#34; height=&#34;448&#34; alt=&#34;Presenter stands at a podium in a tiered lecture hall showing a slide titled Doing It Wrong with three silos labeled DEV, DevOps, and OPS.&#34;&gt;&lt;/li&gt;
&lt;li&gt;There are places where developers are not on call? Technology is on the hook, not just one part.&lt;/li&gt;
&lt;li&gt;Yikes. That&amp;rsquo;s a lot of red.&lt;br/&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/49ce007e2a.jpg&#34; width=&#34;600&#34; height=&#34;448&#34; alt=&#34;Presenter stands at a podium in a tiered lecture hall as attendees with laptops watch a projected screen showing a data table with many red rows.&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;There is no root cause.&amp;rdquo; - &lt;a href=&#34;http://www.indecorous.com&#34;&gt;Ian Malpass&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Root cause&amp;rdquo; dismisses the inherit complexity in large systems.&lt;/li&gt;
&lt;li&gt;I prefer the term &amp;ldquo;incident report&amp;rdquo; over &amp;ldquo;root cause analysis&amp;rdquo; because oftentimes there is no root cause.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/07/03/eyeing-saltstackinc-to.html</link>
      <pubDate>Thu, 03 Jul 2014 22:48:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/07/04/eyeing-saltstackinc-to.html</guid>
      <description>&lt;p&gt;Eyeing &lt;a href=&#34;http://saltstack.com&#34;&gt;SaltStack&lt;/a&gt; to keep my &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; machines humming.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>rebeccapurple</title>
      <link>https://www.thingelstad.com/2014/06/21/rebeccapurple.html</link>
      <pubDate>Sat, 21 Jun 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/06/21/rebeccapurple.html</guid>
      <description>&lt;p&gt;It&amp;rsquo;s great to see the &lt;a href=&#34;http://www.metafilter.com/140112/A-hue-angle-of-270-degrees-a-saturation-of-50-and-a-lightness-of-40&#34;&gt;human side of the technology
community&lt;/a&gt;
shine.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Bike the Border</title>
      <link>https://www.thingelstad.com/2014/06/08/bike-the-border.html</link>
      <pubDate>Sun, 08 Jun 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/06/08/bike-the-border.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/f5067717f9.jpg&#34; alt=&#34;North Dakota Bike the Border Bicycle Tour cycling jersey in blue, white, and red with US and Canadian flags on the chest.&#34;&gt;
&lt;p&gt;I helped my Uncle Tim get a new website up and running for &lt;a href=&#34;http://biketheborder.com&#34;&gt;Bike the Border&lt;/a&gt;, a bike ride in North Dakota that he has started running.  Another case where WordPress was able to deliver a really great CMS. In return, he set me up with this really nice jersey.&lt;/p&gt;
&lt;p&gt;He&amp;rsquo;s going to be in the Twin Cities on July 4th and is going to join us for the &lt;a href=&#34;http://www.biketcbc.org/&#34;&gt;Twin Cities Bicycling Club&lt;/a&gt; &lt;a href=&#34;http://www.biketcbc.org/joomla/index.php/26-events/138-watermelon-ride&#34;&gt;Watermelon Ride&lt;/a&gt;. We are going to be sporting our matching jerseys! Thanks Uncle Tim!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Why WikiApiary uses pages and not articles</title>
      <link>https://www.thingelstad.com/2014/05/27/why-wikiapiary-uses.html</link>
      <pubDate>Tue, 27 May 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/27/why-wikiapiary-uses.html</guid>
      <description>&lt;p&gt;A while back @Waldyrious posed this question about &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;&lt;a href=&#34;https://x.com/WikiApiary?ref_src=twsrc%5Etfw&#34;&gt;@WikiApiary&lt;/a&gt; in the lists of wikis by number of articles &lt;a href=&#34;https://t.co/dKeb8eowPE&#34;&gt;https://t.co/dKeb8eowPE&lt;/a&gt;, why not show the article count rather than the page count?&lt;/p&gt;&amp;mdash; Waldir Pimenta (@waldyrious) &lt;a href=&#34;https://x.com/waldyrious/status/441123248999108609?ref_src=twsrc%5Etfw&#34;&gt;March 5, 2014&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;The full answer is actually found &lt;a href=&#34;https://wikiapiary.com/wiki/User_talk:Thingles/Up_to_January_2013#Articles&#34;&gt;in my talk page on WikiApiary&lt;/a&gt;. Articles are a construct that each wiki can manage. MediaWiki tries to create these two classes of content: Pages and Articles. The intent being that pages are in some way less like &amp;ldquo;content&amp;rdquo; than articles. The metrics for determining this are configurable, but I&amp;rsquo;m guessing nearly everyone leaves it at the defaults. I felt that the page concept, just looking at content and not judging if it was better or worse was a simpler way to look at thousands of different wikis.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Wanted: Dash Docset for MediaWiki</title>
      <link>https://www.thingelstad.com/2014/05/26/wanted-dash-docset.html</link>
      <pubDate>Mon, 26 May 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/26/wanted-dash-docset.html</guid>
      <description>&lt;p&gt;I really wish there were a &lt;a href=&#34;http://kapeli.com/dash&#34;&gt;Dash&lt;/a&gt; Docset for MediaWiki. The &lt;a href=&#34;http://kapeli.com/docsets&#34;&gt;directions for creating docsets&lt;/a&gt; are pretty straightforward. It also strikes me that using &lt;a href=&#34;http://johnmacfarlane.net/pandoc/&#34;&gt;pandoc&lt;/a&gt; to do wikitext to html you could convert &lt;a href=&#34;http://m.mediawiki.org/wiki/Help:Contents&#34;&gt;existing help pages&lt;/a&gt; into HTML and make the Docset.&lt;/p&gt;
&lt;p&gt;Maybe someone else will read this and think it is a great idea and do it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/05/25/omnifocus-is-not.html</link>
      <pubDate>Sun, 25 May 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/25/omnifocus-is-not.html</guid>
      <description>&lt;p&gt;OmniFocus is not a bug tracker! Use bug trackers for issues. Don&amp;rsquo;t put them in OmniFocus, it clutters your GTD system with a lot of noise.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/05/18/tried-to-get.html</link>
      <pubDate>Sun, 18 May 2014 21:58:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/19/tried-to-get.html</guid>
      <description>&lt;p&gt;Tried to get the new &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; &lt;a href=&#34;https://docs.celeryproject.org/en/stable/&#34;&gt;Celery&lt;/a&gt; bots live tonight but &amp;ldquo;daemonizing&amp;rdquo; &lt;code&gt;celeryd&lt;/code&gt; got the best of me for tonight.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/05/13/crazy-good-day.html</link>
      <pubDate>Tue, 13 May 2014 20:14:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/14/crazy-good-day.html</guid>
      <description>&lt;p&gt;Crazy good day today connecting the dots on our  platform evolution. Love when the pieces start to click together and it just makes sense. #TeamSPS&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Keybase and MediaWiki</title>
      <link>https://www.thingelstad.com/2014/05/11/keybase-and-mediawiki.html</link>
      <pubDate>Sun, 11 May 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/11/keybase-and-mediawiki.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m really intrigued by what Keybase.io is doing with identity. The ability to cryptographically prove your identity on the web without a centralized party like Twitter or Facebook owning the approval process is a needed function. I setup my profile and you can now prove on your own that I am who I say I am on Twitter, Github and five of my domains.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m trying to figure out how this could be extended to MediaWiki. I would love to be able to prove that my user account is me at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;&lt;a href=&#34;https://wikiapiary.com/wiki/User:Thingles&#34;&gt;wikiapiary.com/wiki/User&amp;hellip;&lt;/a&gt;&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;&lt;a href=&#34;https://www.mediawiki.org/wiki/User:Thingles&#34;&gt;www.mediawiki.org/wiki/User&amp;hellip;&lt;/a&gt;&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;&lt;a href=&#34;http://en.wikipedia.org/wiki/User:Thingles&#34;&gt;en.wikipedia.org/wiki/User&amp;hellip;&lt;/a&gt;&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This seems really hard. The method used on Github is to public a Gist, and you could certainly have a wiki user publish something on their user page, but that can also be edited by anybody.&lt;/p&gt;
&lt;p&gt;But if we could do this, it would be a great way to allow Wikipedia editors to claim ownership with proof of their identities (if they wish) and would benefit thousands of self-hosted MediaWiki websites.&lt;/p&gt;
&lt;p&gt;I think something more like the Twitter proof could work. How?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Have the user in question edit their User page. The contents of the edit don&amp;rsquo;t matter, the &lt;strong&gt;Summary&lt;/strong&gt; field is what will be looked at. (Limited to 255 characters)&lt;/li&gt;
&lt;li&gt;MediaWiki websites have a permanent revision history attached to each page. (This would be like a Tweet, &lt;a href=&#34;https://wikiapiary.com/w/index.php?title=User:Thingles&amp;amp;action=history&#34;&gt;see my change on May 11 2014&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;This information is accessible via the MediaWiki API, and there is a revid attached to each revision.&lt;/li&gt;
&lt;li&gt;This revision ID can be used to pull the proof forward for keybase.io.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here are the last 5 revisions for my User page on WikiApiary (&lt;a href=&#34;https://wikiapiary.com/w/api.php?action=query&amp;amp;prop=revisions&amp;amp;titles=User:Thingles&amp;amp;rvlimit=5&amp;amp;rvprop=ids%7Ctimestamp%7Cuser%7Ccomment&amp;amp;format=json&#34;&gt;API call&lt;/a&gt;).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pages&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;43&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ns&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pageid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;43&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revisions&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;comment&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;This is my message for keybase.io to prove I am who I am!&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;884728&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;904406&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-05-11T13:10:17Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;comment&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;remove gittip button&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;569866&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;884728&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-04-30T02:55:26Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;comment&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;569864&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;569866&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-02-21T01:56:28Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;comment&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;added badge&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;552628&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;569864&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-02-21T01:54:59Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;comment&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;add babel box (needs templates and styles)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;528928&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;552628&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-02-15T19:36:51Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;User:Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query-continue&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revisions&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;rvcontinue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;528928&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that we have the revid we can find the information for this revision to continue to claim proof (&lt;a href=&#34;https://wikiapiary.com/w/api.php?action=query&amp;amp;prop=revisions&amp;amp;titles=User:Thingles&amp;amp;rvstartid=904406&amp;amp;rvlimit=1&amp;amp;rvprop=ids%7Ctimestamp%7Cuser%7Ccomment&amp;amp;format=json&#34;&gt;API call&lt;/a&gt;). The key is that the title of the page &amp;ldquo;User:Thingles&amp;rdquo; matches with the user that made the change &amp;ldquo;Thingles&amp;rdquo;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pages&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;43&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ns&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pageid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;43&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revisions&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;comment&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;This is my message for keybase.io to prove I am who I am!&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;884728&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;904406&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-05-11T13:10:17Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;User:Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query-continue&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revisions&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;rvcontinue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;884728&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And now I&amp;rsquo;ve proven my identity. The only trick is that the comment must contain all the data, and that should be easy since keybase already does something similar for Twitter.&lt;/p&gt;
&lt;p&gt;And here is another example of me making a proven comment on my user page on Wikipedia (en) (&lt;a href=&#34;https://en.wikipedia.org/w/api.php?action=query&amp;amp;prop=revisions&amp;amp;titles=User:Thingles&amp;amp;rvstartid=608054849&amp;amp;rvlimit=1&amp;amp;rvprop=ids%7Ctimestamp%7Cuser%7Ccomment&amp;amp;format=json&#34;&gt;API call&lt;/a&gt;).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pages&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;14604697&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ns&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pageid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;14604697&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revisions&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;comment&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Here is my message for Keybase from Wikipedia.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;parentid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;551074105&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;608054849&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-05-11T13:56:25Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;User:Thingles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;query-continue&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;revisions&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;rvcontinue&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;551074105&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/05/10/so-impressed-with.html</link>
      <pubDate>Sat, 10 May 2014 23:41:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/11/so-impressed-with.html</guid>
      <description>&lt;p&gt;So impressed with &lt;a href=&#34;https://andersnoren.se/about-anders-noren/&#34;&gt;Anders Noren&lt;/a&gt; &lt;a href=&#34;https://andersnoren.se/teman/hemingway-wordpress-theme/&#34;&gt;Hemingway&lt;/a&gt; theme. Clean, fast, elegant. Making me like &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; again.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/05/10/like-a-monkey.html</link>
      <pubDate>Sat, 10 May 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/10/like-a-monkey.html</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;At least now the code doesn&amp;rsquo;t look like it was made by a monkey.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/optimuspaul&#34;&gt;Paul&lt;/a&gt; commenting on the structure of
my &lt;a href=&#34;https://github.com/thingles/WikiApiary&#34;&gt;WikiApiary code&lt;/a&gt; after doing
some refactoring.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The Worst &#34;Mark all as read&#34; Button Ever</title>
      <link>https://www.thingelstad.com/2014/05/10/the-worst-mark.html</link>
      <pubDate>Sat, 10 May 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/05/10/the-worst-mark.html</guid>
      <description>&lt;p&gt;If you login to Twitter and go to your Direct Messages you press a button to mark all as read, and then you have to confirm. I don&amp;rsquo;t think I&amp;rsquo;ve ever seen a &amp;ldquo;Mark all as read&amp;rdquo; button that looks so foreboding.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/35d1552a6b.png&#34; alt=&#34;dont dare mark all as
read&#34;&gt;&lt;/p&gt;
&lt;p&gt;That looks like a &amp;ldquo;Watch out what you push because everything will be deleted&amp;rdquo; red button that you need to be very, very careful with. Terrible for this function.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Huge Impact of Linode Cloud Updates</title>
      <link>https://www.thingelstad.com/2014/04/20/huge-impact-of.html</link>
      <pubDate>Sun, 20 Apr 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/04/20/huge-impact-of.html</guid>
      <description>&lt;p&gt;I host all of my personal projects on two servers at Linode. Last week &lt;a href=&#34;https://blog.linode.com/2014/04/17/linode-cloud-ssds-double-ram-much-more/&#34;&gt;Linode announced new &amp;ldquo;cloud servers&amp;rdquo; with SSD&amp;rsquo;s, double RAM and a new chip architecture&lt;/a&gt;. I migrated both of my hosts over to the new servers that evening and the performance impact was immediately noticeable. WikiApiary is the most taxing project I run, and it was clearly much faster. This graph though of the WikiApiary API response time is the most telling. So much better! &lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/8c4d169188.png&#34; alt=&#34;response-time&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/04/17/mariadb-performance-after.html</link>
      <pubDate>Thu, 17 Apr 2014 22:28:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/04/18/mariadb-performance-after.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://mariadb.org&#34;&gt;MariaDB&lt;/a&gt; performance after &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; SSD upgrade is phenomenal.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/04/17/super-easy-migration.html</link>
      <pubDate>Thu, 17 Apr 2014 20:06:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/04/18/super-easy-migration.html</guid>
      <description>&lt;p&gt;Super easy migration of &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; hosts to new servers. Blown away by how much faster it is!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/26/141600.html</link>
      <pubDate>Wed, 26 Mar 2014 14:16:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/26/141600.html</guid>
      <description>&lt;p&gt;My website will cost $0.02/mo to sit on S3.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/arqbackup&#34;&gt;@arqbackup&lt;/a&gt;: Next month Amazon’s S3 storage price goes to $.03/GB.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given Google Drive price drop I’m wondering if &lt;a href=&#34;https://www.arqbackup.com&#34;&gt;Arq&lt;/a&gt; may consider supporting it?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/24/great-day-with.html</link>
      <pubDate>Mon, 24 Mar 2014 21:42:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/25/great-day-with.html</guid>
      <description>&lt;p&gt;Great day with &lt;a href=&#34;https://aws.amazon.com&#34;&gt;AWS Cloud&lt;/a&gt; and #TeamSPS today in Seattle working on simple workflow!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/22/processed-all-images.html</link>
      <pubDate>Sat, 22 Mar 2014 20:10:24 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/23/processed-all-images.html</guid>
      <description>&lt;p&gt;Processed all images on my website through &lt;a href=&#34;https://imageoptim.com/mac&#34;&gt;ImageOptim&lt;/a&gt; and reduced total size by 136MB, 16% on average.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/22/submitted-pull-request.html</link>
      <pubDate>Sat, 22 Mar 2014 12:09:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/22/submitted-pull-request.html</guid>
      <description>&lt;p&gt;Submitted &lt;a href=&#34;https://github.com/badges/shields/pull/147&#34;&gt;pull request to add WikiApiary extension counts&lt;/a&gt; to &lt;a href=&#34;https://shields.io&#34;&gt;Shields.io&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/22/brew-install-npm.html</link>
      <pubDate>Sat, 22 Mar 2014 11:02:50 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/22/brew-install-npm.html</guid>
      <description>&lt;p&gt;&lt;code&gt;brew install npm&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;… and into the rabbit hole I go. 🕳🐇&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>PHP Post-Facebook</title>
      <link>https://www.thingelstad.com/2014/03/21/php-postfacebook.html</link>
      <pubDate>Fri, 21 Mar 2014 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/21/php-postfacebook.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://facebook.com/&#34;&gt;Facebook&lt;/a&gt; is famously built in &lt;a href=&#34;http://www.php.net/&#34;&gt;PHP&lt;/a&gt;, and I think it is really interesting to watch what they are doing technically with that massive codebase. This week Facebook announced &lt;a href=&#34;http://hacklang.org/&#34;&gt;Hack&lt;/a&gt;, a new language that specifically targets their previously released &lt;a href=&#34;http://hhvm.com/&#34;&gt;HipHop (HHVM)&lt;/a&gt; project released in 2008. Facebook obviously has massive scale challenges, and they have little ability to cache content, so they are having to redefine how PHP works. So what&amp;rsquo;s interesting about this? Compare this all to &lt;a href=&#34;https://twitter.com/&#34;&gt;Twitter&lt;/a&gt;. Twitter was originally built on the very dynamic and popular &lt;a href=&#34;http://rubyonrails.org/&#34;&gt;Rails&lt;/a&gt; framework, using &lt;a href=&#34;https://www.ruby-lang.org/en/&#34;&gt;Ruby&lt;/a&gt;. Twitter had massive scaling problems with near daily &amp;ldquo;fail whales&amp;rdquo; displayed during outages. These are now a thing of the past because Twitter brought in a ton of engineering talent, and they effectively engineered Ruby on Rails out of their environment. They replaced the entire architecture with code written in much more performant environments. In short, they grew out of their house and moved to a new house. Imagine what would have happened to the Rails ecosystem if they had instead decided that they would reinvent the ecosystem to scale to what they needed?&lt;/p&gt;
&lt;p&gt;Facebook isn&amp;rsquo;t the first huge PHP-based website of course. &lt;a href=&#34;https://wikipedia.org/&#34;&gt;Wikipedia&lt;/a&gt; is one of the three-largest sites on the Internet and is built on PHP. All WordPress blogs are built on PHP. However, both of these examples have really good caching scenarios. Wikipedia uses &lt;a href=&#34;https://www.varnish-cache.org/&#34;&gt;Varnish&lt;/a&gt; to cache all requests they can and as a result they reduce their dependency on PHP greatly. WordPress uses caching in the same way. Both sites eschew calls to PHP for the vast majority of their requests by doing this. This is probably the most widely accepted pattern for scaling PHP, which doesn&amp;rsquo;t have a good track record for scaling. Just bypass PHP as much as possible. However, for Facebook this isn&amp;rsquo;t an option. They want to personalize every single request so caching just doesn&amp;rsquo;t work for them.&lt;/p&gt;
&lt;p&gt;I find it fun to watch Facebook doing this. Internally Facebook has a focus on speed and believes that using PHP and PHP-like tools is part of achieving that. They can&amp;rsquo;t cache. So, rather than move that massive codebase they are changing what it runs in. Instead of moving to a new house, they are remodeling!&lt;/p&gt;
&lt;p&gt;First with the introduction of HHVM, and now with Hack, they are redefining the characteristics of the platform their code runs on to achieve the performance they want. I find this interesting because it is a path so rarely taken. Certainly no small startup could (should?) do this. Their simply isn&amp;rsquo;t the time or money to do it, and it takes your focus off your main goal. You could look at Google and Go as something similar, but I don&amp;rsquo;t think their motives for making Go are anything like what Facebook is doing with HHVM and Hack.&lt;/p&gt;
&lt;p&gt;I like to say that PHP is &amp;ldquo;the people&amp;rsquo;s language&amp;rdquo;. It is the disdain of almost any developer you meet. It&amp;rsquo;s crufty, gross and houses some terrible code. Some of this is the languages fault, but a bunch of it is also that many people first learned to program in PHP. PHP is also the language that nearly every blog and wiki you have ever visited uses. I would go so far as to suggest that there are more page views on the Internet of PHP than any other language in existence.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://wikimediafoundation.org/wiki/Home&#34;&gt;Wikimedia Foundation&lt;/a&gt;, the non-profit that runs Wikipedia and hosts the Wikimedia engine, is running development versions of Wikimedia on the HHVM engine. Part of Wikipedia&amp;rsquo;s scaling plan is now coming from the byproduct of Facebook redefining how PHP works. That is really cool. By choosing to change their ecosystem, instead of moving to a new one, Facebook is building a path that millions of blogs and wikis may be able to follow. That is pretty interesting, and why this is a path worth watching.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/16/i-flopped-httpstcozmirtevd.html</link>
      <pubDate>Sun, 16 Mar 2014 22:27:11 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/17/i-flopped-httpstcozmirtevd.html</guid>
      <description>&lt;p&gt;I flipped &lt;a href=&#34;https://www.thingelstad.com&#34;&gt;thingelstad.com&lt;/a&gt; to using &lt;a href=&#34;https://blog.getpelican.com&#34;&gt;Pelican&lt;/a&gt;. Bit of a mess right now, but is fast and static.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/15/there-should-be.html</link>
      <pubDate>Sat, 15 Mar 2014 17:10:57 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/15/there-should-be.html</guid>
      <description>&lt;p&gt;Playing with &lt;a href=&#34;https://blog.getpelican.com&#34;&gt;Pelican&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There should be a plugin that generates stats and graphs on your articles.&lt;/li&gt;
&lt;li&gt;Getting build warnings is actually really nice. Insures internal links are working.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/13/moving-wordpress-blog.html</link>
      <pubDate>Thu, 13 Mar 2014 06:49:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/13/moving-wordpress-blog.html</guid>
      <description>&lt;p&gt;Moving &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; blog posts to &lt;a href=&#34;https://blog.getpelican.com&#34;&gt;Pelican&lt;/a&gt; is really easy. Moving your images and media? Not so obvious.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/06/the-peoples-language.html</link>
      <pubDate>Thu, 06 Mar 2014 21:26:26 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/07/the-peoples-language.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.oreilly.com/content/the-new-php/&#34;&gt;The new PHP&lt;/a&gt; ← The “People’s Language” is improving! Good to see PHP turning the corner.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/03/06/you-should-go.html</link>
      <pubDate>Thu, 06 Mar 2014 20:31:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/03/07/you-should-go.html</guid>
      <description>&lt;p&gt;You should go see &lt;a href=&#34;https://bridgetkromhout.com&#34;&gt;Bridget Kromhout&lt;/a&gt; present at &lt;a href=&#34;https://www.meetup.com/DevOps-Minneapolis/events/168426002/&#34;&gt;DevOps Minneapolis meetup next week&lt;/a&gt;! She’s awesome! 👍&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/02/17/go-to-hacker.html</link>
      <pubDate>Tue, 18 Feb 2014 00:10:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/02/18/go-to-hacker.html</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Go to Hacker News.&lt;/li&gt;
&lt;li&gt;See Erlang article at first spot.&lt;/li&gt;
&lt;li&gt;Note all is normal in universe.&lt;/li&gt;
&lt;li&gt;Repeat in 6 months.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/02/10/high-art-geek.html</link>
      <pubDate>Mon, 10 Feb 2014 22:47:22 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/02/11/high-art-geek.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://tex.stackexchange.com/questions/158668/nice-scientific-pictures-show-off&#34;&gt;Nice scientific pictures show off - TeX&lt;/a&gt; ← High art geek here&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/02/09/upgraded-mediawiki-foregroundskin.html</link>
      <pubDate>Sun, 09 Feb 2014 14:25:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/02/09/upgraded-mediawiki-foregroundskin.html</guid>
      <description>&lt;p&gt;Upgraded &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; &lt;a href=&#34;https://www.mediawiki.org/wiki/Skin:Foreground&#34;&gt;Foreground Skin&lt;/a&gt; to 4.0.3 of &lt;a href=&#34;https://fontawesome.com&#34;&gt;Font Awesome&lt;/a&gt; today.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/02/01/this-newspaper-python.html</link>
      <pubDate>Sat, 01 Feb 2014 21:31:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/02/02/this-newspaper-python.html</guid>
      <description>&lt;p&gt;This &lt;a href=&#34;https://newspaper.readthedocs.org/en/latest/&#34;&gt;Newspaper Python module&lt;/a&gt; looks amazing! Can’t wait to try it on my link wiki.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/29/highlight-of-the.html</link>
      <pubDate>Wed, 29 Jan 2014 19:51:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/30/highlight-of-the.html</guid>
      <description>&lt;p&gt;Highlight of the day? Meeting with &lt;a href=&#34;https://twitter.com/davidhussman&#34;&gt;David Hussman&lt;/a&gt;! Minneapolis is lucky to have a talent like him here!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/20/i-was-so.html</link>
      <pubDate>Mon, 20 Jan 2014 21:58:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/21/i-was-so.html</guid>
      <description>&lt;p&gt;I was so disappointed &lt;a href=&#34;https://wikiapiary.com/wiki/Fish_Hooks_Wiki&#34;&gt;this wiki&lt;/a&gt; wasn’t about &lt;em&gt;actual&lt;/em&gt; fish hooks.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/20/teamsps-chef-tech.html</link>
      <pubDate>Mon, 20 Jan 2014 12:22:02 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/20/teamsps-chef-tech.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.chef.io&#34;&gt;Chef&lt;/a&gt; Tech Lunch for #TeamSPS!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2021/c0c58e26db.jpg&#34; width=&#34;600&#34; height=&#34;448&#34; alt=&#34;Group of people seated around a conference table attending a Chef Architecture presentation on a projected screen.&#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/14/huge-new-feature.html</link>
      <pubDate>Tue, 14 Jan 2014 22:08:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/15/huge-new-feature.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://blog.statuspage.io/getting-the-right-notification-to-the-right-user&#34;&gt;Getting the Right Notification to the Right User&lt;/a&gt; ← Huge new feature on &lt;a href=&#34;https://www.statuspage.io/&#34;&gt;Status Page&lt;/a&gt; allowing per service notifications! Can’t wait to get the &lt;a href=&#34;https://www.spscommerce.com&#34;&gt;SPS Commerce&lt;/a&gt; page live!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/09/me-too-murphybytes.html</link>
      <pubDate>Thu, 09 Jan 2014 15:02:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/09/me-too-murphybytes.html</guid>
      <description>&lt;p&gt;Me too.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/murphybytes&#34;&gt;@murphybytes&lt;/a&gt;: I can never keep useradd and adduser straight&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/08/got-wikiapiary-database.html</link>
      <pubDate>Wed, 08 Jan 2014 23:14:39 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/09/got-wikiapiary-database.html</guid>
      <description>&lt;p&gt;Got &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; database moved to &lt;a href=&#34;https://pypi.org/project/yoyo-migrations/&#34;&gt;yoyo-migrations&lt;/a&gt;. Yoyo works well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/07/finally-made-the.html</link>
      <pubDate>Tue, 07 Jan 2014 23:52:43 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/08/finally-made-the.html</guid>
      <description>&lt;p&gt;Made the leap to using Composer to manage &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; extensions like &lt;a href=&#34;https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki&#34;&gt;Semantic MediaWiki&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/03/061326.html</link>
      <pubDate>Fri, 03 Jan 2014 01:13:26 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/03/061326.html</guid>
      <description>&lt;p&gt;Happy to have found &lt;a href=&#34;https://pypi.org/project/yoyo-migrations/&#34;&gt;yoyo-migrations&lt;/a&gt; for Python.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/02/113714.html</link>
      <pubDate>Thu, 02 Jan 2014 12:37:14 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/02/113714.html</guid>
      <description>&lt;p&gt;Fun day hacking on &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; and hanging out at &lt;a href=&#34;http://urbanbeancoffee.com&#34;&gt;Urban Bean Coffee&lt;/a&gt;. Working on adding &lt;a href=&#34;https://docs.celeryproject.org/en/stable/&#34;&gt;Celery&lt;/a&gt; to the bots. Thanks &lt;a href=&#34;https://twitter.com/optimuspaul&#34;&gt;Paul&lt;/a&gt; for guidance!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2014/01/01/infracoder-meetup-means.html</link>
      <pubDate>Wed, 01 Jan 2014 16:47:16 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2014/01/01/infracoder-meetup-means.html</guid>
      <description>&lt;p&gt;Infracoder meetup means I’ll finally get to meet &lt;a href=&#34;https://twitter.com/dberkholz&#34;&gt;Donnie Berkholz&lt;/a&gt; too! 😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/12/29/cant-believe-i.html</link>
      <pubDate>Sun, 29 Dec 2013 09:51:20 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/12/29/cant-believe-i.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://kapeli.com/dash&#34;&gt;Dash for macOS&lt;/a&gt; ← Can’t believe I didn’t know about Dash. Great reference app for developers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/12/24/damn-didnt-have.html</link>
      <pubDate>Tue, 24 Dec 2013 09:52:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/12/24/damn-didnt-have.html</guid>
      <description>&lt;p&gt;Didn’t have my anti-spam settings right for &lt;a href=&#34;https://wikiapiary.com/wiki/Wiki_on_a_Stick&#34;&gt;Wiki on a Stick&lt;/a&gt;. It was blank, likely will just reset it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>One Year for WikiApiary</title>
      <link>https://www.thingelstad.com/2013/12/22/one-year-for.html</link>
      <pubDate>Sun, 22 Dec 2013 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/12/22/one-year-for.html</guid>
      <description>&lt;p&gt;Yesterday &lt;a href=&#34;http://wikiapiary.com/&#34;&gt;WikiApiary&lt;/a&gt; had a very &lt;em&gt;meta&lt;/em&gt; tweet when it wished itself Happy Birthday! A while back I realized that if you looked the edit history of the &amp;ldquo;Main Page&amp;rdquo; of a MediaWiki website you could infer the date the wiki was started, it&amp;rsquo;s birthday. WikiApiary then wishes wikis a happy birthday on that date. Yesterday was WikiApiary&amp;rsquo;s big day.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Happy Birthday WikiApiary &lt;a href=&#34;http://t.co/wRk4Cs5iO0&#34;&gt;http://t.co/wRk4Cs5iO0&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/MediaWiki?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#MediaWiki&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/wiki?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#wiki&lt;/a&gt;&lt;/p&gt;&amp;mdash; WikiApiary (@WikiApiary) &lt;a href=&#34;https://x.com/WikiApiary/status/414548099256684544?ref_src=twsrc%5Etfw&#34;&gt;December 22, 2013&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/4095ae1735.png&#34; width=&#34;600&#34; height=&#34;601&#34; alt=&#34;Eight cartoon bumblebees circling a yellow sunflower illustration on a white background&#34;&gt;
&lt;p&gt;The
first year of WikiApiary has been great! The comments people make about it and the great contributions that many people have made to the wiki reflect the utility and interest in the data. WikiApiary was a holiday break project for me in 2012 and it&amp;rsquo;s continued to get additions and modifications from a number of people throughout the world. It is the first project I&amp;rsquo;ve started that I feel has gotten a true community around it and people that are moving it forward independent of what I&amp;rsquo;m doing. That is really great! This idea of a &amp;ldquo;&lt;em&gt;Wiki to track other wikis&lt;/em&gt;&amp;rdquo; clearly caught on with some people.&lt;/p&gt;
&lt;p&gt;In WikiApiary&amp;rsquo;s first year it has collected &lt;strong&gt;1,855,979,520&lt;/strong&gt; statistics samples in its database, just &lt;strong&gt;2.6GB&lt;/strong&gt; of data. As of today, WikiApiary is collecting data from &lt;strong&gt;9,555 active wikis&lt;/strong&gt;. It shows &lt;strong&gt;2,478,637 active users&lt;/strong&gt; over &lt;strong&gt;384,870,041 pages&lt;/strong&gt; with &lt;strong&gt;2,894,060,197 edits&lt;/strong&gt; in the part of the wikiverse that it monitors.&lt;/p&gt;
&lt;p&gt;Looking at visitor activity during this first year, WikiApiary had &lt;strong&gt;32,416 visits&lt;/strong&gt; with &lt;strong&gt;105,895 page views&lt;/strong&gt;. &lt;strong&gt;9,346&lt;/strong&gt; of those visits were from MediaWiki.org. The top 10 countries visiting the site were:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Country&lt;/th&gt;
          &lt;th&gt;Visits&lt;/th&gt;
          &lt;th&gt;Pct&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;United States&lt;/td&gt;
          &lt;td&gt;10,243&lt;/td&gt;
          &lt;td&gt;31.6%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Germany&lt;/td&gt;
          &lt;td&gt;3,422&lt;/td&gt;
          &lt;td&gt;10.6%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;United Kingdom&lt;/td&gt;
          &lt;td&gt;2,095&lt;/td&gt;
          &lt;td&gt;6.5%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Russian Federation&lt;/td&gt;
          &lt;td&gt;1,853&lt;/td&gt;
          &lt;td&gt;5.7%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;France&lt;/td&gt;
          &lt;td&gt;1,084&lt;/td&gt;
          &lt;td&gt;3.3%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Canada&lt;/td&gt;
          &lt;td&gt;1,000&lt;/td&gt;
          &lt;td&gt;3.1%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Netherlands&lt;/td&gt;
          &lt;td&gt;814&lt;/td&gt;
          &lt;td&gt;2.5%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;India&lt;/td&gt;
          &lt;td&gt;755&lt;/td&gt;
          &lt;td&gt;2.3%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Spain&lt;/td&gt;
          &lt;td&gt;714&lt;/td&gt;
          &lt;td&gt;2.2%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;China&lt;/td&gt;
          &lt;td&gt;687&lt;/td&gt;
          &lt;td&gt;2.1%&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;WikiApiary visitors weigh heavier than average to Linux.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Operating System&lt;/th&gt;
          &lt;th&gt;Visits&lt;/th&gt;
          &lt;th&gt;Pct&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows 7&lt;/td&gt;
          &lt;td&gt;14,989&lt;/td&gt;
          &lt;td&gt;46.2%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;4,029&lt;/td&gt;
          &lt;td&gt;12.4%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows XP&lt;/td&gt;
          &lt;td&gt;3,876&lt;/td&gt;
          &lt;td&gt;12%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Mac OS&lt;/td&gt;
          &lt;td&gt;3,473&lt;/td&gt;
          &lt;td&gt;10.7%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows 8&lt;/td&gt;
          &lt;td&gt;1,707&lt;/td&gt;
          &lt;td&gt;5.3%&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Chrome dominates the browser choice for WikiApiary visitors.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Browser&lt;/th&gt;
          &lt;th&gt;Visits&lt;/th&gt;
          &lt;th&gt;Pct&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome 26.0&lt;/td&gt;
          &lt;td&gt;2,377&lt;/td&gt;
          &lt;td&gt;7.3%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Safari 6.0&lt;/td&gt;
          &lt;td&gt;2,319&lt;/td&gt;
          &lt;td&gt;7.2%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome 30.0&lt;/td&gt;
          &lt;td&gt;2,087&lt;/td&gt;
          &lt;td&gt;6.4%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome 28.0&lt;/td&gt;
          &lt;td&gt;1,976&lt;/td&gt;
          &lt;td&gt;6.1%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chrome 27.0&lt;/td&gt;
          &lt;td&gt;1,756&lt;/td&gt;
          &lt;td&gt;5.4%&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;2,455 of the 32,416 (7.6%)&lt;/strong&gt; visits to WikiApiary were from logged in users. &lt;em&gt;All websites statistics are from the amazing &lt;a href=&#34;http://piwik.org&#34;&gt;Piwik&lt;/a&gt; project. No data is shared with Google or other search engines.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;WikiApiary is largely about graphs, so that seems like a logical way to explore the first year of WikiApiary. The number of active users on WikiApiary has roughly been around 30 for most of the year, peaking over 50. This doesn&amp;rsquo;t seem like a ton, but most wikis that are monitored actually have fewer than 5 active users. The total number of users is over 250 and grows steadily. Those are &lt;strong&gt;all&lt;/strong&gt; real accounts too, no spam accounts. Registration is required to edit so this is a good reflection of engagement.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/97bde96e53.png&#34; width=&#34;600&#34; height=&#34;192&#34; alt=&#34;Line chart showing WikiApiary active users peaking near 50 in July-August 2013 then declining, with cumulative users rising steadily to about 262 by December 2013.&#34;&gt;
&lt;p&gt;Edit activity on WikiApiary is mostly robotic. The bots are constantly tending to the data set and they do this with edits. You can see the edit rate jumped in October after I added tracking for MaxMind geo data as well as Whois records for wikis. &lt;strong&gt;Over 5 million edits&lt;/strong&gt; in the first year.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/4ad133b953.png&#34; width=&#34;600&#34; height=&#34;187&#34; alt=&#34;Area chart showing WikiApiary edit count rising from near 0 in February 2013 to over 5 million by December 2013.&#34;&gt;
&lt;p&gt;Total pages of content largely reflect the number of wikis being tracked, plus the number of extensions and skins that exist. Notably you can see the initial load of sites in February and March. There were additional farmer bots that added in some reasonably sized farms in June. In October the pages spike again with the addition of more datasets.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/15acebd999.png&#34; width=&#34;600&#34; height=&#34;192&#34; alt=&#34;Line chart showing WikiApiary pages and articles growth from Jan 2013 to Dec 2013, both rising steeply to about 53K pages and 25.65K articles.&#34;&gt;
&lt;p&gt;WikiApiary is itself the 11th largest Semantic MediaWiki installation that it tracks. The largest is &lt;a href=&#34;http://wikiapiary.com/wiki/Gyvosios_gamtos_enciklopedija&#34;&gt;Gyvosios gamtos enciklopedija&lt;/a&gt; with over 16 million properties (think of a property as a data value). WikiApiary has &lt;strong&gt;over 3.3 million property values&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/4c4039761d.png&#34; width=&#34;600&#34; height=&#34;189&#34; alt=&#34;Area chart showing WikiApiary property count growing from near 0 in January 2013 to roughly 3.5M by December 2013.&#34;&gt;
&lt;p&gt;These 3.3 million properties are queried in MediaWiki templates so you can see the data. There are &lt;strong&gt;nearly 140,000 queries&lt;/strong&gt; in WikiApiary.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/83f23f488f.png&#34; width=&#34;600&#34; height=&#34;190&#34; alt=&#34;Area chart showing WikiApiary query count rising from about 50K in April 2013 to 140K in December 2013.&#34;&gt;
&lt;h3 id=&#34;special-thanks&#34;&gt;Special Thanks&lt;/h3&gt;
&lt;p&gt;WikiApiary has had a lot of contributions with additions of wikis and help with templates and bots. &lt;a href=&#34;http://wikiapiary.com/wiki/User:Kghbln&#34;&gt;Karsten Hoffmeyer&lt;/a&gt; has been a &lt;a href=&#34;http://wikiapiary.com/wiki/Special:Contributions/Kghbln&#34;&gt;huge part of WikiApiary&lt;/a&gt; and is also an administrator on the site. Karsten helps with adding wikis and fending off the occasional bad edits. WikiApiary also has a very distinctive look from the &lt;a href=&#34;http://foreground.wikiwonders.net/wiki/&#34;&gt;Foreground skin&lt;/a&gt; which was built by my friend &lt;a href=&#34;https://garrickvanburen.com&#34;&gt;Garrick van Buren&lt;/a&gt;. Mark Hershberger has also been an active part of WikiApiary and is exploring ways that MediaWiki installs can automatically add themselves to WikiApiary. Huge thanks to &lt;a href=&#34;https://meta.wikimedia.org/wiki/User:Nemo_bis&#34;&gt;Frederico Leva&lt;/a&gt; (Nemo) for &lt;a href=&#34;https://www.mediawiki.org/w/index.php?title=Template%3AExtension&amp;amp;diff=659727&amp;amp;oldid=657147&#34;&gt;linking extension pages&lt;/a&gt; on MediaWiki.org to their respective page on WikiApiary. This drives a lot of exposure for WikiApiary and provides great value to visitors of MediaWiki.org. A big thank you also to &lt;a href=&#34;https://twitter.com/optimuspaul&#34;&gt;Paul DeCoursey&lt;/a&gt; who &lt;a href=&#34;https://github.com/thingles/WikiApiary/commit/9c82198fe155a915960c607813688ef300c2fa68&#34;&gt;rewrote the Javascript code&lt;/a&gt; to embed the charts into the pages, and support multiple charts with usable controls.&lt;/p&gt;
&lt;p&gt;Also, I think one of the things that makes WikiApiary unique is that it is built with &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; and &lt;a href=&#34;http://semantic-mediawiki.org&#34;&gt;Semantic MediaWiki&lt;/a&gt; and the related suite of extensions. This is such a wonderful set of software and a special thanks to James HK, &lt;a href=&#34;http://www.bn2vs.com/blog/&#34;&gt;Jeroen De Dauw&lt;/a&gt; and &lt;a href=&#34;http://yaronkoren.com&#34;&gt;Yaron Koren&lt;/a&gt;. All of them have helped out and provided input on WikiApiary at times in the first year.&lt;/p&gt;
&lt;h3 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve got a ton of plans for WikiApiary, and I keep picking them off slowly. I&amp;rsquo;ve not had much time for the project the last couple of months but whatever time I have had has been going into &lt;a href=&#34;https://github.com/thingles/WikiApiary&#34;&gt;rewriting the bots&lt;/a&gt;. The first versions were just hacked up and difficult to understand. I&amp;rsquo;m working on a rewrite that includes unit tests, a good object model and code that is easy enough to understand that I hope to get some more contributors involved. The other huge thing being added is parallel requests. Right now WikiApiary is limited in collecting from more sites due to how it collects, in serial. The new bots will do that in parallel and will dramatically change the cost of running a collection sequence. There should be no problem going from 10,000 to 100,000 or more wikis being monitored.&lt;/p&gt;
&lt;p&gt;I would also like to see the &lt;a href=&#34;https://github.com/thingles/HoneyBee&#34;&gt;Honey Bee MediaWiki extension&lt;/a&gt; get going which will be the first step of an extension that leverages WikiApiary inside of the wiki it&amp;rsquo;s running in.&lt;/p&gt;
&lt;p&gt;Additionally I&amp;rsquo;d like to do a whole deeper level of analysis of MediaWiki websites and have been contacted by two groups who have written algorithms that do this and are interested in adding their code to WikiApiary. I hope to make that easier with the bot rewrite mentioned above.&lt;/p&gt;
&lt;p&gt;I also want to provide a base Farmer class that can easily be extended so that bots that farm new wikis into WikiApiary are easier. My big objective is to finally pull in Wikia.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m proud of WikiApiary and plan on continuing to host it (no small feat actually, given its scale) and work on it. I see WikiApiary as one of my &amp;ldquo;decade project&amp;rdquo; so I don&amp;rsquo;t have to move too fast. I just keep things rolling the right way.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/12/17/upgraded-piwik-to.html</link>
      <pubDate>Tue, 17 Dec 2013 22:53:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/12/18/upgraded-piwik-to.html</guid>
      <description>&lt;p&gt;Upgraded &lt;a href=&#34;https://www.piwik.org/&#34;&gt;Piwik&lt;/a&gt; to the just released 2.0. Very easy. Great new bits.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/11/30/094858.html</link>
      <pubDate>Sat, 30 Nov 2013 10:48:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/30/094858.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Stumped on this dumb Python &lt;a href=&#34;https://travis-ci.org/thingles/WikiApiary/builds/14737862&#34;&gt;import nosetests error&lt;/a&gt;. Help &lt;a href=&#34;https://entropywins.wtf&#34;&gt;Jeroen De Dauw&lt;/a&gt; &lt;a href=&#34;https://twitter.com/optimuspaul&#34;&gt;Paul&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finally figured out magic for &lt;a href=&#34;https://travis-ci.org/thingles/WikiApiary/builds/14739073&#34;&gt;relative module imports&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Got &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; bots flowing through &lt;a href=&#34;https://travis-ci.org&#34;&gt;Travis CI&lt;/a&gt; and &lt;a href=&#34;https://coveralls.io&#34;&gt;Coveralls&lt;/a&gt; (&lt;a href=&#34;https://github.com/thingles/WikiApiary/tree/refactor-class&#34;&gt;see badges&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Integrated &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; bots into &lt;a href=&#34;https://landscape.io/&#34;&gt;Landscape&lt;/a&gt;. Starting with brutal 19% rating.&lt;/li&gt;
&lt;li&gt;Got my &lt;a href=&#34;https://landscape.io/&#34;&gt;Landscape&lt;/a&gt; score from &lt;a href=&#34;https://landscape.io/github/thingles/WikiApiary/refactor-class&#34;&gt;18% to 43%&lt;/a&gt;. Still poor, but improving!&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/11/28/made-a-profile.html</link>
      <pubDate>Thu, 28 Nov 2013 08:38:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/28/made-a-profile.html</guid>
      <description>&lt;p&gt;Made a &lt;a href=&#34;https://www.ohloh.net/accounts/thingles&#34;&gt;profile for myself on Ohloh&lt;/a&gt; and also setup &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; as a &lt;a href=&#34;https://www.ohloh.net/p/WikiApiary&#34;&gt;project on Ohloh&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/11/23/little-scared-to.html</link>
      <pubDate>Sat, 23 Nov 2013 21:11:43 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/24/little-scared-to.html</guid>
      <description>&lt;p&gt;Little scared to upgrade my master branch of &lt;a href=&#34;https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki&#34;&gt;Semantic MediaWiki&lt;/a&gt;. 😕 Composer newbie.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/11/20/there-never-was.html</link>
      <pubDate>Wed, 20 Nov 2013 17:21:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/20/there-never-was.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://johntreadway.com/2013/11/19/the-end-of-private-cloud-5-stages-of-loss-and-grief/&#34;&gt;The End of Private Cloud – 5 Stages of Loss and Grief&lt;/a&gt; ← There never was a private cloud, just a private mirage.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/11/16/im-sort-of.html</link>
      <pubDate>Sat, 16 Nov 2013 08:06:20 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/16/im-sort-of.html</guid>
      <description>&lt;p&gt;I’m sort of embarrassed by how sloppy my filesystem has gotten in some areas. I blame the cloud.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/11/16/procps-security-updates.html</link>
      <pubDate>Sat, 16 Nov 2013 07:26:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/16/procps-security-updates.html</guid>
      <description>&lt;p&gt;&lt;code&gt;procps&lt;/code&gt; security updates cause &lt;code&gt;rkhunter&lt;/code&gt; &lt;a href=&#34;https://launchpad.net/ubuntu/+source/procps/1:3.2.8-11ubuntu6.3&#34;&gt;warnings that give pause&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 2</title>
      <link>https://www.thingelstad.com/2013/11/14/aws-reinvent-day.html</link>
      <pubDate>Thu, 14 Nov 2013 21:05:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/14/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;Great seats for day 2 &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; keynote by Amazon CTO &lt;a href=&#34;https://www.allthingsdistributed.com&#34;&gt;Werner Vogels&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/23e0f7e9ad.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference hall audience facing a stage with a massive screen displaying the AWS re:Invent logo in white and yellow text.&#34;&gt;
&lt;p&gt;The kerning on the &amp;rsquo; in the AWS re:Invent font could use some help.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/4b1fb7a62a.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;re:Play party invitation presented by Intel showing date Thursday 8-11pm in Hall D with games libations and live concert&#34;&gt;
&lt;p&gt;Amazon releases RDS for &lt;a href=&#34;https://www.postgresql.org&#34;&gt;PostgreSQL&lt;/a&gt; today! Nice!&lt;/p&gt;
&lt;p&gt;Great to watch Werner giving AWS re:Invent keynote.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/547fd4cdac.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Bald presenter in black t-shirt on a large conference stage with AWS re:Invent branding and circuit board design on the screen behind him, audience in foreground&#34;&gt;
&lt;p&gt;Wow. New i2 instances are crazy. New c3 instances = super computer on demand. EC2 spot market is revolutionary. Allows a model that has never been available before.&lt;/p&gt;
&lt;p&gt;Amazon Kinesis for managing streaming data. This looks very interesting. I think Amazon Kinesis just revamped a project #TeamSPS is starting right now. Awesome. This Kinesis demo has awesome visuals. AWS Kinesis looks huge.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.allthingsdistributed.com&#34;&gt;Werner Vogels&lt;/a&gt; sporting Red Hot Chili Peppers shirt now. Nirvana this morning. My guess is for tonight shirt? Foo Fighters.&lt;/p&gt;
&lt;p&gt;Attending the Kinesis introduction session at AWS re:Invent. Kinesis for stock market data seems like such an awesome fit. I’m guessing &lt;a href=&#34;https://www.linkedin.com/in/stephen-orban-7086471/&#34;&gt;Stephen Orban&lt;/a&gt; and &lt;a href=&#34;https://www.dowjones.com&#34;&gt;Dow Jones&lt;/a&gt; are already testing. 😀 Kinesis streams != Queues.&lt;/p&gt;
&lt;p&gt;Saying goodbye to AWS re:Invent and heading home. Really happy I came. Fun things ahead for #TeamSPS!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 1</title>
      <link>https://www.thingelstad.com/2013/11/13/aws-reinvent.html</link>
      <pubDate>Wed, 13 Nov 2013 19:57:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/13/aws-reinvent.html</guid>
      <description>&lt;p&gt;Ready for &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt;!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/6cec6bf6b9.jpg&#34; width=&#34;600&#34; height=&#34;900&#34; alt=&#34;AWS re:Invent conference badge for Jamie Thingelstad from SPS Commerce, held by a hand against a dark background.&#34;&gt;
&lt;p&gt;Perhaps the largest dining hall ever. &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/fe8f431e5c.jpg&#34; width=&#34;1200&#34; height=&#34;350&#34; alt=&#34;Panoramic view of a vast convention center dining hall filled with hundreds of attendees seated at round tables with red chairs.&#34;&gt;
&lt;p&gt;Great seat for &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; keynote.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/b3a449b6e6.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Large conference hall packed with hundreds of seated attendees facing two large screens showing the AWS re:Invent logo and a live tweet display&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/rob-krystyniak-b8927a9/&#34;&gt;Rob Krystyniak&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/maas_8128&#34;&gt;@maas_8128&lt;/a&gt;,&lt;a href=&#34;https://twitter.com/zwingocom&#34;&gt;@zwingocom&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/LukeSamaha&#34;&gt;@LukeSamaha&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/scottbjer&#34;&gt;@scottbjer&lt;/a&gt;, and &lt;a href=&#34;https://twitter.com/pixelsnbits&#34;&gt;@pixelsnbits&lt;/a&gt; 👍 #TeamSPS ready for AWS re:Invent keynote!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/c42ba61782.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Group of six colleagues wearing conference lanyards seated in rows at an AWS re:Invent keynote hall, smiling at the camera&#34;&gt;
&lt;p&gt;“we are finally data center free!” quote from &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;9,000 attendees from 57 countries. &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Amazon Workspaces. Huh.&lt;/p&gt;
&lt;p&gt;Great to see former colleagues at &lt;a href=&#34;https://www.dowjones.com&#34;&gt;Dow Jones&lt;/a&gt; getting highlighted at AWS re:Invent! Congrats all!&lt;/p&gt;
&lt;p&gt;Amazon AppStream looks interesting.&lt;/p&gt;
&lt;p&gt;Tradeworx segment of #awsreinvent keynote is mind blowing.&lt;/p&gt;
&lt;p&gt;Terabyte of data added a day to S3.&lt;/p&gt;
&lt;p&gt;This graph shows the power of AWS.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/7bdd1275f1.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Conference presentation slide showing a graph of 1780000 AWS core hours with a 952000 peak, scaling more than 200 percent month-over-month, then archived to Glacier, with silhouetted audience in&#34;&gt;
&lt;p&gt;Attending Big Data: State of the Union session by Paul Duffy at AWS re:Invent.&lt;/p&gt;
&lt;p&gt;Morning keynote at AWS re:Invent was great. Hit right topics. Expanded thinking.&lt;/p&gt;
&lt;p&gt;Crap. Phone is at 12% battery already! Argh.&lt;/p&gt;
&lt;p&gt;Love the &lt;a href=&#34;https://aws.amazon.com/opendata/public-datasets/&#34;&gt;Amazon Public Datasets&lt;/a&gt; and Big Open Data effort. Great stuff.&lt;/p&gt;
&lt;p&gt;You could make a lot of $$$ selling precharged battery packs for phones at #awsreinvent.&lt;/p&gt;
&lt;p&gt;I don’t know what’s more impressive: AWS scaling or the dining service feeding 9,000 people.&lt;/p&gt;
&lt;p&gt;Pro tip for those in #awsreinvent dining hangar and trying to find people. The pillars have numbers.&lt;/p&gt;
&lt;p&gt;At session about Amazon Redshift at #awsreinvent with &lt;a href=&#34;https://www.linkedin.com/in/rob-krystyniak-b8927a9/&#34;&gt;Rob Krystyniak&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Going to Netflix Development Patterns for Rapid Iteration, Scale, Performance &amp;amp; Availability session at AWS re:Invent next.&lt;/p&gt;
&lt;p&gt;Someone should make a twitter client optimized for conferences.&lt;/p&gt;
&lt;p&gt;Netflix red, black and blue systems concept is very smart. Did something similar at &lt;a href=&#34;https://www.dowjones.com&#34;&gt;Dow Jones&lt;/a&gt; but no blue concept.&lt;/p&gt;
&lt;p&gt;I think it might finally be time to move all my personal web stuff to AWS.&lt;/p&gt;
&lt;p&gt;Guys in suit coats playing ping pong at #awsreinvent Dev Lounge.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/8108478484.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Bald man in a suit playing ping-pong inside a large conference hall with a Developer Lounge glass enclosure and AWS Support signs visible behind him.&#34;&gt;
&lt;p&gt;Fun running into &lt;a href=&#34;https://twitter.com/jondahl&#34;&gt;@jondahl&lt;/a&gt; at AWS re:Invent!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AWS re:Invent - Day 0</title>
      <link>https://www.thingelstad.com/2013/11/12/aws-reinvent-day.html</link>
      <pubDate>Tue, 12 Nov 2013 19:58:23 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/12/aws-reinvent-day.html</guid>
      <description>&lt;p&gt;Looking forward to joining other #teamsps folks at &lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;I’m not sure why, but I always find it a little sad to fly out at night.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://reinvent.awsevents.com&#34;&gt;AWS re:Invent&lt;/a&gt; iOS app could use some help. 😕 just not as useful as it should be.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/11/02/new-mac-python.html</link>
      <pubDate>Sat, 02 Nov 2013 06:17:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/11/02/new-mac-python.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://celestialteapot.com/exedore/&#34;&gt;Exedore&lt;/a&gt; ← New Mac Python tool.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/10/30/wikiworks-most-collaborative.html</link>
      <pubDate>Wed, 30 Oct 2013 04:47:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/10/30/wikiworks-most-collaborative.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://wikiapiary.com/wiki/MozillaWiki&#34;&gt;1,000+ editors&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/wikiworks&#34;&gt;@wikiworks&lt;/a&gt;: Most collaborative #SMW-based #wiki via &lt;a href=&#34;https://twitter.com/yolandagil&#34;&gt;@yolandagil&lt;/a&gt; research: &lt;a href=&#34;https://twitter.com/Mozilla&#34;&gt;@Mozilla&lt;/a&gt; Wiki #SMWCon&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/10/20/i-successfully-setup.html</link>
      <pubDate>Sun, 20 Oct 2013 10:35:16 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/10/20/i-successfully-setup.html</guid>
      <description>&lt;p&gt;I successfully setup GNU mailman this morning. Where do I go to get my merit badge?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/10/19/running-wikiapiary-a.html</link>
      <pubDate>Sat, 19 Oct 2013 20:54:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/10/20/running-wikiapiary-a.html</guid>
      <description>&lt;p&gt;Running &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt;, a wiki that tracks as many &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; sites as possible, sometimes you find some really strange stuff out there.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/10/18/lua-keeps-showing.html</link>
      <pubDate>Fri, 18 Oct 2013 05:56:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/10/18/lua-keeps-showing.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.lua.org&#34;&gt;Lua&lt;/a&gt; keeps showing up in interesting places.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/mestery&#34;&gt;@mestery&lt;/a&gt;: &lt;a href=&#34;https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTQ4ODk&#34;&gt;Lua Scripting Support Added To NetBSD Kernel&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/09/21/i-so-like.html</link>
      <pubDate>Sat, 21 Sep 2013 15:02:20 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/09/21/i-so-like.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://leafo.net/posts/creating_an_image_server.html&#34;&gt;Nginx image processing server with OpenResty and Lua&lt;/a&gt; ← I like nginx, bonus &lt;a href=&#34;https://www.lua.org&#34;&gt;Lua&lt;/a&gt; here too!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/09/21/my-dentists-website.html</link>
      <pubDate>Sat, 21 Sep 2013 08:50:22 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/09/21/my-dentists-website.html</guid>
      <description>&lt;p&gt;My dentist’s website uses a black background. This seems totally wrong to me.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/09/17/amen-dont-use.html</link>
      <pubDate>Tue, 17 Sep 2013 20:16:45 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/09/18/amen-dont-use.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.chrisstucchio.com/blog/2013/hadoop_hatred.html&#34;&gt;Don&amp;rsquo;t use Hadoop - your data isn&amp;rsquo;t that big&lt;/a&gt; ← Amen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/09/12/just-incredible-what.html</link>
      <pubDate>Thu, 12 Sep 2013 23:23:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/09/13/just-incredible-what.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://readwrite.com/2013/08/21/gartner-aws-now-5-times-the-size-of-other-cloud-vendors-combined/&#34;&gt;Gartner: AWS Now Five Times The Size Of Other Cloud Vendors Combined&lt;/a&gt; — just incredible what AWS has become.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/09/10/queues-are-magical.html</link>
      <pubDate>Tue, 10 Sep 2013 21:45:01 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/09/11/queues-are-magical.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://engineering.wingify.com/posts/scaling-with-queues/&#34;&gt;Scaling with Queues&lt;/a&gt; ← queues are magical for performance.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/09/10/great-reminder-of.html</link>
      <pubDate>Tue, 10 Sep 2013 20:24:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/09/11/great-reminder-of.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://glog.glennf.com/blog/2013/9/6/yahoos-logo-reveals-the-worst-aspects-of-engineering-mindset&#34;&gt;Yahoo&amp;rsquo;s Logo Reveals the Worst Aspects of the Engineering Mindset&lt;/a&gt; ← great reminder of the distinction and mutual respect required between engineers and designers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/08/30/at-university-of.html</link>
      <pubDate>Fri, 30 Aug 2013 15:49:13 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/08/30/at-university-of.html</guid>
      <description>&lt;p&gt;At &lt;a href=&#34;https://www.cs.umn.edu&#34;&gt;University of Minnesota Computer Science&lt;/a&gt; Memorial event celebrating the accomplishments of John Riedl. What a &lt;a href=&#34;https://www.thingelstad.com/2013/07/21/goodbye-to-my.html&#34;&gt;great man and mentor&lt;/a&gt;. Amazing roster of people celebrating John Riedl’s career here. Researchers from academia, Google and Yahoo.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/08/05/debating-wether-i.html</link>
      <pubDate>Mon, 05 Aug 2013 13:45:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/08/05/debating-wether-i.html</guid>
      <description>&lt;p&gt;Debating wether I should have 2 4G servers or 1 8G server at &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; for my personal server. 😕 One Ubuntu to manage sounds better.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/08/02/found-out-this.html</link>
      <pubDate>Fri, 02 Aug 2013 09:28:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/08/02/found-out-this.html</guid>
      <description>&lt;p&gt;Found out this morning that &lt;a href=&#34;https://www.linkedin.com/in/sonamehring/&#34;&gt;Sona Mehring&lt;/a&gt; and I share common Perl skills! &lt;code&gt;$_&lt;/code&gt; FTW! 🙂&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/08/01/updating-to-wordpress.html</link>
      <pubDate>Thu, 01 Aug 2013 17:12:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/08/01/updating-to-wordpress.html</guid>
      <description>&lt;p&gt;Updating to &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; 3.6. Hope this is smooth. 😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Paging Large Datasets in Semantic MediaWiki</title>
      <link>https://www.thingelstad.com/2013/07/30/paging-large-datasets.html</link>
      <pubDate>Tue, 30 Jul 2013 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/07/30/paging-large-datasets.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been working with &lt;a href=&#34;http://yaronkoren.com&#34;&gt;Yaron Koren&lt;/a&gt;&amp;rsquo;s new &lt;a href=&#34;http://migadv.com&#34;&gt;Miga&lt;/a&gt; project to provide an offline, mobile optimized way of accessing the nutrition data in &lt;a href=&#34;http://wikinosh.com/&#34;&gt;Wikinosh&lt;/a&gt;. &lt;a href=&#34;http://wikinosh.com/miga/#&#34;&gt;It works pretty well!&lt;/a&gt; However, we hit a couple of walls trying to get the 20,000+ food items in Wikinosh exported for use in Miga. If you are trying to page thru large data sets in &lt;a href=&#34;http://semantic-mediawiki.org/wiki/Semantic_MediaWiki&#34;&gt;Semantic MediaWiki&lt;/a&gt; read on.&lt;/p&gt;
&lt;h3 id=&#34;large-offsets&#34;&gt;Large Offsets&lt;/h3&gt;
&lt;p&gt;The best way to do this is to use queries of 500 items at a time and use incrementing offsets to retrieve each set of rows. This works really well and is easy to code. However, when you run this the first time if you have over 5,000 records you will notice that your while loop will never finish. Very odd. When you look at the data you will also see that after a few thousand rows, the first set of data just repeats over and over and you never reach the end.&lt;/p&gt;
&lt;p&gt;A quick look in SMW_QueryProcessor.php on line 611 shows this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$params[&amp;#39;offset&amp;#39;] = array(
    &amp;#39;type&amp;#39; =&amp;gt; &amp;#39;integer&amp;#39;,
    &amp;#39;default&amp;#39; =&amp;gt; 0,
    &amp;#39;negatives&amp;#39; =&amp;gt; false,
    &amp;#39;upperbound&amp;#39; =&amp;gt; 5000 // TODO: make setting
 );
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now that makes sense. It turns out that if your offset value is greater than 5,000 it won&amp;rsquo;t be used. To make matters worse, this doesn&amp;rsquo;t generate an error it simply ignores the offset. Ugh! The &amp;ldquo;TODO&amp;rdquo; is still a to do, there is no setting for this. If your working with large data, you will want to increase the offset to something large enough to accommodate your largest set. Since Wikinosh has 21,000+ items, I set it to &lt;code&gt;30000&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;query-max&#34;&gt;Query Max&lt;/h3&gt;
&lt;p&gt;Now that you have your offset changed you can go ahead and run your export again. It will chug along and then hit 10,000 records and stop. What? Sure, you increased your offset however you probably still have the default &lt;code&gt;$smwgQMaxLimit&lt;/code&gt; value of &lt;code&gt;10000&lt;/code&gt;. So, if your offset is greater than the query max, you get 0 rows and your done. This setting &lt;strong&gt;does&lt;/strong&gt; have a way to override, set &lt;code&gt;$smwgQMaxLimit = 30000;&lt;/code&gt; in your LocalSettings.php and you will be ready to go.&lt;/p&gt;
&lt;p&gt;With these two changes in place, I can now easily page through 500 records at a time and get everything out exactly as I expect.&lt;/p&gt;
&lt;p&gt;There are currently two bugs open on these behaviors. Check those for current status of these settings: &lt;a href=&#34;https://bugzilla.wikimedia.org/show_bug.cgi?id=49203&#34;&gt;SMW Ask query offset has a hardcoded limit&lt;/a&gt; and &lt;a href=&#34;https://bugzilla.wikimedia.org/show_bug.cgi?id=52137&#34;&gt;SMW Ask query offset should error if maximum offset is exceeded&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Goodbye to my friend, John Riedl</title>
      <link>https://www.thingelstad.com/2013/07/21/goodbye-to-my.html</link>
      <pubDate>Sun, 21 Jul 2013 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/07/21/goodbye-to-my.html</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/5416b9d812.jpg&#34; alt=&#34;John T. Riedl&#34;&gt;&lt;/p&gt;
&lt;p&gt;Three years ago my friend, mentor and former professor &lt;a href=&#34;https://en.wikipedia.org/wiki/John_T._Riedl&#34;&gt;John Riedl&lt;/a&gt; shared the news with our book club that he had been diagnosed with cancer. &lt;a href=&#34;https://en.wikipedia.org/wiki/Melanoma&#34;&gt;Melanoma&lt;/a&gt;. He spent the last three years fighting it. He did it all right, as the scientist he was. He was able to try never-before tested treatments. He adopted a &lt;a href=&#34;https://en.wikipedia.org/wiki/Vegan_nutrition&#34;&gt;vegan&lt;/a&gt; diet. He was strong and vital. He was optimistic, as always, and we were all optimistic for him. In the last month things got much worse very quickly. Yesterday I joined well over two hundred others in celebrating his life and spirit at his funeral. It was a perfect ceremony for a man that was loved and admired so much. I would like to share the story of how I came to know John.&lt;/p&gt;
&lt;h3 id=&#34;hackers-v-crackers&#34;&gt;Hackers v. Crackers&lt;/h3&gt;
&lt;p&gt;I started at the &lt;a href=&#34;http://www.umn.edu/&#34;&gt;University of Minnesota&lt;/a&gt; in 1990. So did &lt;a href=&#34;http://www-users.cs.umn.edu/~riedl/&#34;&gt;Dr. Riedl&lt;/a&gt;. 1990 was his first year as a professor in the Computer Science department of the Institute of Technology. At some point during that year the &lt;a href=&#34;http://www.mndaily.com&#34;&gt;Minnesota Daily&lt;/a&gt; wrote a big exposé article on how bad &lt;em&gt;hackers&lt;/em&gt; were. They were supposedly breaking into every computer system around, stealing credit cards and doing illegal things. I was fairly fresh from reading &lt;a href=&#34;http://www.stevenlevy.com/index.php/books/hackers&#34;&gt;Stephen Levy&amp;rsquo;s fantastic book &lt;em&gt;Hackers&lt;/em&gt;&lt;/a&gt; and I took great offense at this article. See, hackers are exceptional software developers (aka coders). People that break into computers? Those are &lt;em&gt;crackers&lt;/em&gt;. A completely different type of software person focused on compromising systems, both technical and human.&lt;/p&gt;
&lt;p&gt;I read this article and it got me all worked up so I sent a letter to the editor telling the Daily that they got it all wrong. Their &lt;em&gt;hacker&lt;/em&gt; article was wrong and should have used the term &lt;em&gt;cracker&lt;/em&gt;. This is clearly a semantic battle that never was. I don&amp;rsquo;t think anyone used the term &lt;em&gt;cracker&lt;/em&gt; for people that broke into systems much after that point or even before, but I was principled.&lt;/p&gt;
&lt;p&gt;The day after that letter ran I remember getting a phone call in my Frontier Hall dorm room. I picked it up and the guy introduced himself as Dr. Riedl, in the computer science department. He mentioned that he and &lt;a href=&#34;http://www-users.cs.umn.edu/~carlis/&#34;&gt;Dr. Carlis&lt;/a&gt; were going to write an opinion piece on the article the Daily had published and wondered if I would mind if they quoted me. I have no idea why he thought he needed to ask, but he did and I stammered out &amp;ldquo;Sure&amp;rdquo; at some point. We chatted briefly on other University stuff and he ended by saying that &amp;ldquo;If I ever needed anything, feel free to stop by.&amp;rdquo; I said thanks and looked forward to reading the article.&lt;/p&gt;
&lt;h3 id=&#34;losing-unix-access&#34;&gt;Losing Unix Access?&lt;/h3&gt;
&lt;p&gt;A while after the article I was facing a problem. In 1990 when you took a Computer Science class you were given an account on the Unix workstations. However, that account was provisioned for the class you were enrolled in. So, I had an account but it was going to disappear when the quarter ended.&lt;/p&gt;
&lt;p&gt;This was traumatic for me. You see, I had discovered &lt;a href=&#34;http://en.wikipedia.org/wiki/Unix&#34;&gt;Unix&lt;/a&gt; and it was like an entirely new world of technology had opened up. Actually, it wasn&amp;rsquo;t &amp;ldquo;like&amp;rdquo; that, it specifically was that! I had discovered &lt;a href=&#34;http://en.wikipedia.org/wiki/IRC&#34;&gt;IRC&lt;/a&gt; and was chatting with people around the world. I was &lt;a href=&#34;http://en.wikipedia.org/wiki/FTP&#34;&gt;FTP&lt;/a&gt;&amp;lsquo;ing to servers at other Universities. I was building software on my own. This was amazing! And it was going to go away when my class ended. So, I went to see Dr. Riedl.&lt;/p&gt;
&lt;p&gt;I went to his office and explained my predicament. His response? He put me on his graduate research team. This is the team that eventually became &lt;a href=&#34;http://www.grouplens.org&#34;&gt;GroupLens&lt;/a&gt;, but I don&amp;rsquo;t think it had that name at that time. I went from hoping to get an account &lt;em&gt;somehow&lt;/em&gt; to getting 24-hour access to a lab with dedicated machines, and a permanent account on a handful of SunOS workstations. I was in heaven! I was also a clueless freshman that couldn&amp;rsquo;t do much beside help with testing the stuff the grad students were working on. While my friends were going to parties on the weekend, I was heading to the graduate lab in the CSci building to explore the systems and software, and very importantly the pre-web Internet. I spent hours there just learning and learning. (To be clear, access to the computer lab was clearly not the only thing that kept me out of the social scene on the weekends. 🙂)&lt;/p&gt;
&lt;h3 id=&#34;go-and-build-things&#34;&gt;Go and Build Things&lt;/h3&gt;
&lt;p&gt;I learned so much in the CSci lab and loved being able to &lt;a href=&#34;https://en.wikipedia.org/wiki/Man_page&#34;&gt;ask grad students questions that probably drove them a little crazy&lt;/a&gt;. It turns out I liked that a lot more than going to my other classes. Both Dr. Riedl and Dr. Carlis recognized that I knew the technology, but didn&amp;rsquo;t seem to be ready for all of the college experience. They both opened the door that maybe I should go and &lt;em&gt;work in industry&lt;/em&gt; for a while. Maybe I would come back to the University, or maybe I wouldn&amp;rsquo;t. And that is what I did, and I never did end up coming back.&lt;/p&gt;
&lt;p&gt;I lost touch with Dr. Riedl for a while. To be fair, we were both crazy busy. He took a break from the University to start NetPerceptions and had a wild ride. I was busy building BigCharts and then growing MarketWatch. Years later, after he had returned to the University I reached out to get lunch and we had a great time catching up. We stayed in contact for a long time after that. He graciously invited me to speak at the University of Minnesota a number of times, including being the keynote speaker at the Computer Science departments annual open house. He also gave a nice quote for me when I &lt;a href=&#34;https://www.thingelstad.com/2008/05/15/under-forty-award.html&#34;&gt;received the Forty Under 40 award&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;book-club&#34;&gt;Book Club&lt;/h3&gt;
&lt;p&gt;In late 2007 I got an email from him about a book club. 17 years from when we first met, wow. He mentioned that he was part of this small book club of geeky guys that liked to read about technology topics, and strayed off topic as they wished. Honestly, I wasn&amp;rsquo;t much of a reader at the time but the idea of reading books with a group that included John Riedl was far too much to pass up on. I joined without hesitation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/a12bdd2af3.jpg&#34; alt=&#34;Book Club Group&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://rwbookclub.com/wiki/User:Riedl&#34;&gt;John was a voracious reader&lt;/a&gt; I realized. That shouldn&amp;rsquo;t have surprised me given his scholarly and scientific background. He was also a great person to discuss books with, as are &lt;a href=&#34;http://rwbookclub.com/wiki/User:Snowfall&#34;&gt;Tom&lt;/a&gt;, &lt;a href=&#34;http://rwbookclub.com/wiki/User:Erik&#34;&gt;Erik&lt;/a&gt; and &lt;a href=&#34;http://rwbookclub.com/wiki/User:Dfrankow&#34;&gt;Dan&lt;/a&gt;, the other members of the club. I count myself truly lucky to have shared a book club with John for 6 years. I&amp;rsquo;ve come to recognize it as a unique experience. Reading informs oneself, and reading together over the course of many years, brings you together and allows for raucous and challenging conversations. As Tom said in a reference to the club and John, &amp;ldquo;&lt;a href=&#34;https://www.facebook.com/thomasderickson/posts/10151469935936831&#34;&gt;For years to come I&amp;rsquo;ll read something and think &amp;lsquo;John would really like this.&amp;rsquo;&lt;/a&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The world is worse off without John here. He was a brilliant man, mentor and teacher who had such an impact on my life. And you know what? I wasn&amp;rsquo;t alone. I&amp;rsquo;ve heard many stories like mine of people who&amp;rsquo;s lives are substantially better due to their interactions with John. At his funeral, the common refrain was how much of a mentor he was. My condolences are with his wife Maureen who I got to read a handful of books with as well in our members + spouse meetings, and his children Eric, Karen and Kevin who I really only know through the annual Christmas letter, but all seem to be incredible individuals in their own right. No surprise there.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related links:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.legacy.com/obituaries/twincities/obituary.aspx?pid=165905795&#34;&gt;John&amp;rsquo;s obituary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.caringbridge.org/visit/windsurferjohn/journal&#34;&gt;John&amp;rsquo;s CaringBridge site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.wikimedia.org/2013/07/18/researching-collaboration-better-world-john-riedl-1962-2013/&#34;&gt;Researching collaboration for a better world post&lt;/a&gt; from Wikimedia Foundation&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cs.umn.edu/RiedlMemorial&#34;&gt;John Riedl Memorial Celebration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.startribune.com/local/217247711.html&#34;&gt;Obituary: U&amp;rsquo;s John Riedl was pioneer of recommender systems&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/07/19/195413.html</link>
      <pubDate>Fri, 19 Jul 2013 14:54:13 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/07/19/195413.html</guid>
      <description>&lt;p&gt;Very impressed with &lt;a href=&#34;https://www.tradingview.com&#34;&gt;TradingView&lt;/a&gt;. If I were to build &lt;a href=&#34;http://www.bigcharts.com/&#34;&gt;BigCharts.com&lt;/a&gt; again today, I would like to think it would be what they did.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/07/18/my-professor-and.html</link>
      <pubDate>Thu, 18 Jul 2013 22:49:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/07/19/my-professor-and.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://diff.wikimedia.org/2013/07/18/researching-collaboration-better-world-john-riedl-1962-2013/&#34;&gt;Researching collaboration for a better world: John T. Riedl (1962 – 2013)&lt;/a&gt; ← My professor and friend John Riedl honored by Wikimedia.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/07/15/made-a-super.html</link>
      <pubDate>Mon, 15 Jul 2013 18:02:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/07/15/made-a-super.html</guid>
      <description>&lt;p&gt;Made a super simple &lt;a href=&#34;https://github.com/jthingelstad/ParseURL&#34;&gt;MediaWiki extension for parsing URLs&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Stopping MediaWiki Spam with Dynamic Questy Captchas</title>
      <link>https://www.thingelstad.com/2013/07/09/stopping-mediawiki-spam.html</link>
      <pubDate>Tue, 09 Jul 2013 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/07/09/stopping-mediawiki-spam.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;This method of using Questy Captcha has been defeated by some spammers. Please check out my &lt;a href=&#34;https://www.thingelstad.com/2014/updated-dynamic-questy-captchas/&#34;&gt;updated dynamic Questy Captcha method&lt;/a&gt;.&lt;/strong&gt; &lt;a href=&#34;http://www.mediawiki.org/&#34;&gt;MediaWiki&lt;/a&gt; websites are often plagued by spammers. It&amp;rsquo;s annoying in the extreme. If you setup a blank MediaWiki website and do nothing it is likely that within a couple of weeks your site will be found, and in a matter of days you will have thousands of spam user accounts and tens of thousands of pages of spam. There are a number of ways to stop wikispam. I tried using &lt;a href=&#34;http://recaptcha.com&#34;&gt;Recaptcha&lt;/a&gt; to little benefit. I still got a large number of spam registrations on my publicly available wikis. I&amp;rsquo;ve found the combination below to be incredible efficient.&lt;/p&gt;
&lt;p&gt;I started to use &lt;a href=&#34;http://www.mediawiki.org/wiki/Extension:QuestyCaptcha&#34;&gt;QuestyCaptcha&lt;/a&gt; which is a plugin for the &lt;a href=&#34;http://www.mediawiki.org/wiki/Extension:ConfirmEdit&#34;&gt;ConfirmEdit&lt;/a&gt; extension (&lt;a href=&#34;http://wikiapiary.com/wiki/Extension:ConfirmEdit&#34;&gt;WikiApiary&lt;/a&gt;) which uses a simple question/answer paradigm and that worked well. However, the hard part with Questy is figuring out what questions to use. Particularly if your wiki is global, you need to avoid using questions that are specific to one culture or location, or even language. What color is the sky? Well, in what language? For &lt;a href=&#34;http://wikiapiary.com/&#34;&gt;WikiApiary&lt;/a&gt; I want to make sure that people from anywhere are able to register. I started with simple questions, like &amp;ldquo;What is the name of this website?&amp;rdquo; but that was quickly defeated and spam registrations started showing up. What to do?&lt;/p&gt;
&lt;p&gt;I decided to see if QuestyCaptcha could accommodate dynamic questions and it can! So, the first thing I did was decide to use a question that required someone to know something generic, but could also be easily found with a single click on a URL. My choice was to ask about the GMT time, because if you &lt;a href=&#34;https://www.google.com/search?q=gmt+time&#34;&gt;search for &amp;ldquo;gmt time&amp;rdquo; on Google&lt;/a&gt;, it tells you the answer. The PHP function &lt;code&gt;gmdate&lt;/code&gt; will also give the answer. So I created two questions that asked for the day of the week and the hour (24 hour time) at GMT, and provide hyperlinks to the answer. This worked great!&lt;/p&gt;
&lt;p&gt;Then I decided to go a little further and ask a very dynamic question. This time I generated an 8 character random string, and ask the user to identify one of the characters in the string. No language issue! No culture challenges! Simple. Here is the code for both of these solutions as it would appear in your &lt;code&gt;LocalSettings.php&lt;/code&gt; file.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Let&amp;#39;s stop MediaWiki registration spam
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;require_once&lt;/span&gt;( &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$IP&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/extensions/ConfirmEdit/ConfirmEdit.php&amp;#34;&lt;/span&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;require_once&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$IP&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/extensions/ConfirmEdit/QuestyCaptcha.php&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$wgCaptchaClass &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;QuestyCaptcha&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Set questions for Questy
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# First a couple that can be answered with a linked to Google search
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$wgCaptchaQuestions[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;question&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;What day of the week is it at &amp;lt;a href=&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;://&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;google&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;search&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;q&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;gmt&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;time&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;Greenwich Mean Time&amp;lt;/a&amp;gt; (GMT) right now?&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;answer&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;gmdate&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;l&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$wgCaptchaQuestions[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;question&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;In 24-hour format, what hour is it in &amp;lt;a href=&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;://&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;google&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;search&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;q&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;gmt&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;time&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;Greenwich Mean Time&amp;lt;/a&amp;gt; (GMT) right now?&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;answer&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;gmdate&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;G&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Now a more complicated one
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Generate a random string 8 characters long
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengeString &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;substr&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;md5&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;uniqid&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;mt_rand&lt;/span&gt;(), &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;)), &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Pick a random location in those 8 strings
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengeIndex &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Let&amp;#39;s use words to describe the position, just to make it a bit more complicated
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengePositions &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;first&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;second&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;third&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fourth&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fifth&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sixth&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;seventh&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;eighth&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$myChallengePositionName &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $myChallengePositions[$myChallengeIndex &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Build the question/anwer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$wgCaptchaQuestions[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;question&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Please provide the &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$myChallengePositionName&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; character from the sequence &amp;lt;code&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$myChallengeString&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;/code&amp;gt;:&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;answer&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $myChallengeString[$myChallengeIndex &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Skip CAPTCHA for people who have confirmed emails
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$wgGroupPermissions[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;emailconfirmed&amp;#39;&lt;/span&gt;][&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;skipcaptcha&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ceAllowConfirmedEmail &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After putting these in place I&amp;rsquo;ve had nearly zero spam registrations (1 or 2 were clearly done by a human testing it). Now, can this be broken? Sure, easily. But not nearly as easy as static questions that could be harvested by a person and then put into a tool to automatically create accounts. In order to attack me, spammers would have to write a special handler that dealt with the randomness of the questions. This is very unlikely.&lt;/p&gt;
&lt;p&gt;Feel free to use these examples, or, use other dynamic question/answer combinations. It&amp;rsquo;s not obvious that this type of configuration works with QuestyCaptcha, but it does and it allows for very powerful spam blocking.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/06/27/decided-to-give.html</link>
      <pubDate>Thu, 27 Jun 2013 07:43:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/06/27/decided-to-give.html</guid>
      <description>&lt;p&gt;Decided to give &lt;a href=&#34;http://saltstack.com&#34;&gt;SaltStack&lt;/a&gt; a go for managing my small &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; setup. Feels like a good fit.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/06/02/spent-the-late.html</link>
      <pubDate>Sun, 02 Jun 2013 01:48:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/06/02/spent-the-late.html</guid>
      <description>&lt;p&gt;Spent the late night hunting a &lt;a href=&#34;https://phabricator.wikimedia.org/T50838&#34;&gt;bug with MediaWiki 1.21 and Semantic Forms&lt;/a&gt;. Oi!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/05/28/chef-frustrates-me.html</link>
      <pubDate>Tue, 28 May 2013 23:12:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/05/29/chef-frustrates-me.html</guid>
      <description>&lt;p&gt;&lt;code&gt;chef&lt;/code&gt; frustrates me with its Ruby-ness. Why can’t we have some deploy frameworks in Python?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/05/25/got-my-mediawiki.html</link>
      <pubDate>Sat, 25 May 2013 23:58:08 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/05/26/got-my-mediawiki.html</guid>
      <description>&lt;p&gt;Got my &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; farm upgraded to 1.21. Some great improvements, and excited to open the door on &lt;a href=&#34;https://www.lua.org&#34;&gt;Lua&lt;/a&gt; modules!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/05/18/figured-out-the.html</link>
      <pubDate>Sat, 18 May 2013 22:10:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/05/19/figured-out-the.html</guid>
      <description>&lt;p&gt;Figured out the &lt;a href=&#34;https://wikiapiary.com/wiki/WikiApiary_talk:Operations/2013/May#Banned_IP_check_causing_slowness_and_removed_.28aka_Performance_victory.21.29&#34;&gt;root cause of slowness on my MediaWiki farm&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/05/08/build-ship-test.html</link>
      <pubDate>Wed, 08 May 2013 13:28:30 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/05/08/build-ship-test.html</guid>
      <description>&lt;p&gt;Build. Ship. Test. Huh? 🙂&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/04/20/trying-to-use.html</link>
      <pubDate>Sat, 20 Apr 2013 14:16:25 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/04/20/trying-to-use.html</guid>
      <description>&lt;p&gt;Trying to use the &lt;a href=&#34;https://www.paychex.com&#34;&gt;Paychex&lt;/a&gt; website and filled with rage over “Server Error in &amp;lsquo;/&amp;rsquo; Application.”. Way to “upgrade”…&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Display MediaWiki job queue size inside your wiki</title>
      <link>https://www.thingelstad.com/2013/04/20/display-mediawiki-job.html</link>
      <pubDate>Sat, 20 Apr 2013 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/04/20/display-mediawiki-job.html</guid>
      <description>&lt;p&gt;I wanted to find an easy way to show the current size of the &lt;a href=&#34;https://www.mediawiki.org/wiki/Manual:Job_queue&#34;&gt;MediaWiki job queue&lt;/a&gt; on &lt;a href=&#34;http://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt;. When you make changes to templates that are used on thousands of pages the queue can get backed up and it&amp;rsquo;s nice to have an easy way to keep an eye on this. The job queue is even one of the data points WikiApiary tracks and graphs. But I wanted something that was as close to realtime as possible. It wasn&amp;rsquo;t hard to do. This solution uses the &lt;a href=&#34;http://www.mediawiki.org/wiki/Extension:External_Data&#34;&gt;External Data&lt;/a&gt; (&lt;a href=&#34;http://wikiapiary.com/wiki/Extension:External_Data&#34;&gt;see WikiApiary usage page&lt;/a&gt;) extension.&lt;/p&gt;
&lt;p&gt;First we need to get the data. Let&amp;rsquo;s start by calling the siteinfo API method. The magic words are used to make this generic, and this &lt;strong&gt;should&lt;/strong&gt; result in the right URL. If you are using a protocol-relative server setting you will have to modify this.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{#get_web_data: url={{SERVER}}{{SCRIPTPATH}}/api.php?action=query&amp;amp;meta;=siteinfo&amp;amp;siprop;=statistics&amp;amp;format;=json
  | format=JSON
  | data=jobs=jobs}}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now External Data has done the work and the value is stored for us. Now we get it by simply calling:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{{#external_value:jobs}}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I like to put that in a style so it&amp;rsquo;s big and obvious.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re thinking ahead you&amp;rsquo;ll now be saying &amp;ldquo;Yeah, that&amp;rsquo;s neat, but it will be cached in MediaWiki for a hours!&amp;rdquo;. Yes, it will be unless you add a &lt;code&gt;__NOCACHE__&lt;/code&gt; directive to the page and use the &lt;a href=&#34;https://www.mediawiki.org/wiki/Extension:MagicNoCache&#34;&gt;MagicNoCache&lt;/a&gt; extension. This extension allows you to disable the MediaWiki cache on a page-by-page basis, very handy.&lt;/p&gt;
&lt;p&gt;If you wanted to use this in multiple places you could even put an &lt;code&gt;&amp;lt;onlyinclude&amp;gt;&lt;/code&gt; around it and transclude the job queue size in other pages, however I would be cautious about that if using the &lt;code&gt;__NOCACHE__&lt;/code&gt; directive as well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/04/14/digging-some-ideas.html</link>
      <pubDate>Sun, 14 Apr 2013 22:58:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/04/15/digging-some-ideas.html</guid>
      <description>&lt;p&gt;Digging some ideas of putting &lt;a href=&#34;https://panic.com&#34;&gt;Panic&lt;/a&gt; Status Board panels together with data from &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt;. Hmmm…&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/04/10/love-to-see.html</link>
      <pubDate>Wed, 10 Apr 2013 11:24:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/04/10/love-to-see.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.linode.com/blog/linode/linode-nextgen-ram-upgrade/&#34;&gt;Linode NextGen: RAM Upgrade&lt;/a&gt; ← Love to see Linode doing great stuff. My server is migrating now.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/04/07/slides-from-my.html</link>
      <pubDate>Sun, 07 Apr 2013 09:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/04/07/slides-from-my.html</guid>
      <description>&lt;p&gt;Slides from my &lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt; &lt;a href=&#34;https://wiki.minnestar.org/wiki/Build_and_Deploy_Ridiculously_Advanced_MediaWiki_Websites&#34;&gt;Build Advanced MediaWiki Websites&lt;/a&gt; are on the wiki.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Minnebar 8</title>
      <link>https://www.thingelstad.com/2013/04/06/084400.html</link>
      <pubDate>Sat, 06 Apr 2013 08:44:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/04/06/084400.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt; crowd assembling.&lt;/li&gt;
&lt;li&gt;Getting serious in advanced MongoDB session!&lt;/li&gt;
&lt;li&gt;Attending Hadoop session. Lot of people here. Clearly Hadoop is hot point via “big data”.&lt;/li&gt;
&lt;li&gt;Exploring dimensions of free content with &lt;a href=&#34;https://marcgrabanski.com&#34;&gt;Marc Grabanski&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;At &lt;a href=&#34;https://twitter.com/iandees&#34;&gt;Ian Dees&lt;/a&gt; Obama Tech talk!&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2024/18c7bd54-b978-4fcf-81cb-217264204cba.jpg&#34; width=&#34;600&#34; height=&#34;148&#34; alt=&#34;Large indoor conference gathering with hundreds of attendees seated at round tables eating and talking in a bright atrium with trees&#34;&gt;
&lt;p&gt;&lt;em&gt;See also &lt;a href=&#34;https://www.thingelstad.com/collections/minnebar/&#34;&gt;Minnebar collection&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/29/excited-to-drop.html</link>
      <pubDate>Fri, 29 Mar 2013 22:57:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/30/excited-to-drop.html</guid>
      <description>&lt;p&gt;Excited to “drop some science” at &lt;a href=&#34;https://sessions.minnestar.org/sessions/9&#34;&gt;my MediaWiki session&lt;/a&gt; at &lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/28/wonder-if-goodreads.html</link>
      <pubDate>Thu, 28 Mar 2013 17:23:02 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/28/wonder-if-goodreads.html</guid>
      <description>&lt;p&gt;Wonder if Goodreads API will drop access to ratings now that Amazon bought it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/23/sublime-text-plugin.html</link>
      <pubDate>Sat, 23 Mar 2013 20:44:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/24/sublime-text-plugin.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/tosher/Mediawiker&#34;&gt;Mediawiker&lt;/a&gt; ← Sublime Text 2 plugin to edit MediaWiki pages directly. Very nice!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/16/python-gives-me.html</link>
      <pubDate>Sat, 16 Mar 2013 22:37:18 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/17/python-gives-me.html</guid>
      <description>&lt;p&gt;Python gives me this great productivity flow, like Perl used to. But unlike Perl, I don’t feel dirty afterward.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/12/im-presenting-at.html</link>
      <pubDate>Tue, 12 Mar 2013 00:40:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/12/im-presenting-at.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;I’m presenting at &lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt; 8: &lt;a href=&#34;https://sessions.minnestar.org/sessions/9&#34;&gt;Build and Deploy Ridiculously Advanced MediaWiki Websites!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Also as board member of &lt;a href=&#34;https://minnestar.org&#34;&gt;Minnestar&lt;/a&gt; am presenting &lt;a href=&#34;https://sessions.minnestar.org/sessions/8&#34;&gt;Minnebar 8 on Minnebar&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I personally dare you to go with the “Advanced” level for your &lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt; session. Get your geek on people!&lt;/li&gt;
&lt;li&gt;Who’s leading a “Dive into &lt;a href=&#34;https://www.lua.org&#34;&gt;Lua&lt;/a&gt;!” session at &lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt;? Please? Someone?&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/11/took-my-linode.html</link>
      <pubDate>Tue, 12 Mar 2013 00:19:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/12/took-my-linode.html</guid>
      <description>&lt;p&gt;Took my &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; VPS to a loadavg of 13+ with a nasty bug in a &lt;a href=&#34;https://wikiapiary.com/wiki/Main_Page&#34;&gt;WikiApiary&lt;/a&gt; bot. Fixed now. Happy LiSH got me on console!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/08/204323.html</link>
      <pubDate>Fri, 08 Mar 2013 15:43:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/08/204323.html</guid>
      <description>&lt;p&gt;One of my &lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt; 8 sessions: &lt;a href=&#34;https://sessions.minnestar.org/sessions/9&#34;&gt;Build and Deploy Ridiculously Advanced MediaWiki Websites&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/03/08/wow-piwik-looks.html</link>
      <pubDate>Fri, 08 Mar 2013 07:44:19 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/03/08/wow-piwik-looks.html</guid>
      <description>&lt;p&gt;Wow, &lt;a href=&#34;https://www.piwik.org/&#34;&gt;Piwik&lt;/a&gt; 1.11 looks like a very solid release. Love the new settings improvements and native HTML maps!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/02/23/initialized-four-new.html</link>
      <pubDate>Sat, 23 Feb 2013 08:34:25 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/02/23/initialized-four-new.html</guid>
      <description>&lt;p&gt;Initialized four new wikis this morning and it’s not even 8am. 😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/02/22/this-is-big.html</link>
      <pubDate>Fri, 22 Feb 2013 19:33:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/02/23/this-is-big.html</guid>
      <description>&lt;p&gt;This is big!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/mediawiki&#34;&gt;@mediawiki&lt;/a&gt;: &lt;a href=&#34;https://twitter.com/Wikipedia&#34;&gt;@Wikipedia&lt;/a&gt; starts &lt;a href=&#34;https://en.wikipedia.org/wiki/Wikipedia:Lua&#34;&gt;supporting Lua for writing templates&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/02/03/remember-that-godaddy.html</link>
      <pubDate>Sun, 03 Feb 2013 19:25:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/02/04/remember-that-godaddy.html</guid>
      <description>&lt;p&gt;Remember that GoDaddy is a terrible company that you should not do business with. Ignore the Super Bowl commercials.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/01/31/i-just-created.html</link>
      <pubDate>Thu, 31 Jan 2013 21:10:48 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/02/01/i-just-created.html</guid>
      <description>&lt;p&gt;I just created my first ever &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; barnstar — &lt;a href=&#34;https://wikiapiary.com/wiki/Template:Barnstar/Awesome&#34;&gt;You make WikiApiary awesome&lt;/a&gt;! I think this level += 1 me in wiki speak.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/01/31/im-clearly-not.html</link>
      <pubDate>Thu, 31 Jan 2013 20:31:42 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/02/01/im-clearly-not.html</guid>
      <description>&lt;p&gt;I’m clearly not grokking Python classes. May have to bug &lt;a href=&#34;https://twitter.com/optimuspaul&#34;&gt;Paul&lt;/a&gt; for some pointers tomorrow.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2013/01/06/attempting-to-write.html</link>
      <pubDate>Sun, 06 Jan 2013 11:10:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2013/01/06/attempting-to-write.html</guid>
      <description>&lt;p&gt;Attempting to write &lt;a href=&#34;https://github.com/thingles/WikiApiary&#34;&gt;Python for WikiApiary&lt;/a&gt; that is not embarrassing. 🙂&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/12/08/just-consolidated-my.html</link>
      <pubDate>Sat, 08 Dec 2012 16:40:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/12/08/just-consolidated-my.html</guid>
      <description>&lt;p&gt;Just consolidated my &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; 1024 and Linode 768 host into a single Linode 2048. Expecting better performance and easier admin.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Adding Email Mention Notification to WordPress P2</title>
      <link>https://www.thingelstad.com/2012/12/02/adding-email-mention.html</link>
      <pubDate>Sun, 02 Dec 2012 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/12/02/adding-email-mention.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m using the P2 theme on a couple of websites, one of them is for the &lt;a href=&#34;http://team.minnestar.org/&#34;&gt;team minnestar&lt;/a&gt; to help coordination and collaboration. P2 supports the ability to use a &lt;a href=&#34;https://micro.blog/user&#34;&gt;@user&lt;/a&gt; notation to mention other users on the site, but it doesn&amp;rsquo;t do anything other than highlight the user. This snippet of PHP added to the bottom of the P2 functions.php will send email notifications on those mentions. This isn&amp;rsquo;t heavily tested but it works well for me.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; * Custom code added to P2 to enable email notifications
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; * when a user is @mentioned in the site.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; * Original at [trepmal.com/2011/06/2...](http://trepmal.com/2011/06/24/using-wordpress-multisite-p2-and-more/)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; * and modified from there.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;add_action&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;publish_post&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;send_email_notification_once&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;send_email_notification_once&lt;/span&gt;($postID) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $post &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_post&lt;/span&gt;($postID);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $author &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_userdata&lt;/span&gt;($post&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;post_author&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;global&lt;/span&gt; $p2;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $mentions &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $p2&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;components&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mentions&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;find_mentions&lt;/span&gt;($post&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;post_content&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $permalink &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_permalink&lt;/span&gt;($postID);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $blog_title &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_bloginfo&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;foreach&lt;/span&gt; ( $mentions &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; $match ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $email &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_user_by&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slug&amp;#39;&lt;/span&gt;,$match)&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;user_email&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $message &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;You have been mentioned in this post:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$permalink&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;$post&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;post_content&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; &amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;wp_mail&lt;/span&gt;($email, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$blog_title&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;] You&amp;#39;ve been mentioned by &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;$author&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;display_name&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, $message);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;add_action&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_post&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;send_email_notification_once_comment&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;send_email_notification_once_comment&lt;/span&gt;($commentID){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $comment &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_comment&lt;/span&gt;($commentID);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;global&lt;/span&gt; $p2;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $mentions &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $p2&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;components&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mentions&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;find_mentions&lt;/span&gt;($comment&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;comment_content&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $permalink &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_permalink&lt;/span&gt;($comment&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;comment_post_ID&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $blog_title &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_bloginfo&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;foreach&lt;/span&gt; ( $mentions &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; $match ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $email &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_user_by&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slug&amp;#39;&lt;/span&gt;,$match)&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;user_email&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $message &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;You have been mentioned by &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;$comment&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;comment_author&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; in this comment:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$permalink&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;$comment&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;comment_content&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; &amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;wp_mail&lt;/span&gt;($email, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$blog_title&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;] You&amp;#39;ve been mentioned in a comment by &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;$comment&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;comment_author&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, $message);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/11/06/took-a-moment.html</link>
      <pubDate>Tue, 06 Nov 2012 23:54:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/11/07/took-a-moment.html</guid>
      <description>&lt;p&gt;Took a moment during election coverage to upgrade to MediaWiki 1.20, released a couple hours ago! All went very, very smooth. Not even a hiccup. New new diff view is a welcome improvement. Much easier to read.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Agile Day Twin Cities 2012</title>
      <link>https://www.thingelstad.com/2012/11/02/nice-line-from.html</link>
      <pubDate>Fri, 02 Nov 2012 11:58:51 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/11/02/nice-line-from.html</guid>
      <description>&lt;p&gt;Presenting at Twin Cities Agile Day today!&lt;/p&gt;
&lt;p&gt;Minneapolis Institute of Art is nice venue for Twin Cities Agile Day.&lt;/p&gt;
&lt;p&gt;Attending &lt;a href=&#34;https://www.sussna-associates.com&#34;&gt;Jeff Sussna&lt;/a&gt; session on continuous delivery.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2019/59e521a5f8.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Attendees seated at round tables watch a presenter speak in front of a projected slide in a conference room.&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Andon_(manufacturing)&#34;&gt;Andon on Wikipedia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nice line from &lt;a href=&#34;https://twitter.com/davidhussman&#34;&gt;David Hussman&lt;/a&gt;: &lt;strong&gt;(Value) = (Why) / (How)&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MediaWiki Template Filter Title</title>
      <link>https://www.thingelstad.com/2012/10/31/mediawiki-template-filter.html</link>
      <pubDate>Wed, 31 Oct 2012 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/10/31/mediawiki-template-filter.html</guid>
      <description>&lt;p&gt;I was recently doing some cleaning on our &lt;a href=&#34;http://rwbookclub.com/&#34;&gt;Read/Write Book Club&lt;/a&gt; website and ran into an interesting challenge. All of the books in the wiki are in a couple of categories, but I wanted them sorted right ignoring A, An and The beginning of the title. MediaWiki supports this in the category tag allowing you to specify &lt;code&gt;[Category:Book|Sort Title]&lt;/code&gt; and early on in the wiki I had a second field in the form for Sort Title asking the person editing the book to do this.&lt;/p&gt;
&lt;p&gt;The result was nobody did it and all the books with &amp;ldquo;The&amp;rdquo; in the beginning of the title were all under T. Shouldn&amp;rsquo;t this be easy to just deal with in the wiki itself?&lt;/p&gt;
&lt;p&gt;Well, it turned out to be much harder than you would think in large part because MediaWiki doesn&amp;rsquo;t honor spaces in template tags. My first attempt to do this was rather brute force, simply look for the three cases that I want to get rid of in the title and chop it off.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;includeonly&amp;gt;
{{#if:{{{1|}}} | {{#vardefine:title_filter_temp|{{{1}}} }}
{{#if: {{#pos:{{#var:title_filter_temp}}|The }} | {{#ifexpr: {{#pos:{{#var:title_filter_temp}}|The }} = 0 | {{#vardefine:title_filter_temp| {{#sub:{{#var:title_filter_temp}}|4}} }} }} }}
{{#if: {{#pos:{{#var:title_filter_temp}}|A }} | {{#ifexpr: {{#pos:{{#var:title_filter_temp}}|A }} = 0 | {{#vardefine:title_filter_temp| {{#sub:{{#var:title_filter_temp}}|2}} }} }} }}
{{#if: {{#pos:{{#var:title_filter_temp}}|An }} | {{#ifexpr: {{#pos:{{#var:title_filter_temp}}|An }} = 0 | {{#vardefine:title_filter_temp| {{#sub:{{#var:title_filter_temp}}|3}} }} }} }}
{{#var:title_filter_temp}}
| No parameter passed to [[Template:Filter title]]. }}&amp;lt;/includeonly&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This worked in many cases, but not all. A book like &lt;a href=&#34;http://rwbookclub.com/wiki/Antifragile&#34;&gt;Antifragile&lt;/a&gt; got in trouble with this approach since the &amp;ldquo;An&amp;rdquo; matched it got sorted in &amp;ldquo;T&amp;rdquo;. You would think this would be an easy fix right? Don&amp;rsquo;t look for &amp;ldquo;An&amp;rdquo; but instead for &amp;ldquo;An &amp;ldquo;, including the space in the match. Unfortunately it is nearly impossible to pass a space into a MediaWiki template. MediaWiki effectively trims all template inputs of spaces so a space by itself becomes, effectively, null. A different approach was needed.&lt;/p&gt;
&lt;p&gt;After some consideration I came up with this approach that uses the &lt;a href=&#34;http://www.mediawiki.org/wiki/Extension:Arrays&#34;&gt;Arrays extension&lt;/a&gt;. I like it a lot more than the first attempt! The basic idea is to break the title into an array of strings on the space (note that &lt;code&gt;#arraydefine&lt;/code&gt; allowed me to use a regex pattern to avoid the problem of not being able to pass in a space). I then check if the first element in that array matches a set of targets (in the &lt;code&gt;#switch&lt;/code&gt; statement). If it does, set the index to 1, otherwise 0, and build a &lt;strong&gt;new&lt;/strong&gt; array from that index offset. Like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;includeonly&amp;gt;{{
#arraydefine:filter_title_temp|{{{1|No title was provided}}}|/\s/}}{{
#switch: {{#arrayindex:filter_title_temp|0}}
 | A | An | The = {{#vardefine:filter_title_i|1}}
 | #default = {{#vardefine:filter_title_i|0}}
}}{{
#arrayslice: filter_title_new | filter_title_temp | {{#var:filter_title_i}} }}{{
#arrayprint: filter_title_new | _ | @@@@ | @@@@ }}{{
#arrayreset:filter_title_temp|filter_title_new}}&amp;lt;/includeonly&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This works great with one exception. I still get confounded with the space problem when assembling the new title in the &lt;code&gt;#arrayprint&lt;/code&gt; method. I decided to print the new title with underscores where the spaces were. Since this is used for the sorting condition, this is fine. The end user never sees the title and the wiki will sort right if given Title_of_the_Book.&lt;/p&gt;
&lt;p&gt;Now the sortable titles are all generated and the &lt;a href=&#34;http://rwbookclub.com/wiki/Category:Book&#34;&gt;Book Category&lt;/a&gt; page looks awesome.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Bookmarking with Semantic MediaWiki</title>
      <link>https://www.thingelstad.com/2012/07/01/bookmarking-with-semantic.html</link>
      <pubDate>Sun, 01 Jul 2012 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/07/01/bookmarking-with-semantic.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/c8641ec8d5.png&#34; alt=&#34;Black paperclip icon on a white background&#34; style=&#34;width: 160px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;I have been doing a lot of exploration using &lt;a href=&#34;http://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; and the &lt;a href=&#34;http://semantic-mediawiki.org/&#34;&gt;Semantic MediaWiki&lt;/a&gt; suite of extensions. I&amp;rsquo;ve deployed a number of wikis doing a wide variety of things. For a few months I had been pondering the idea of hosting my own bookmarking site using Semantic MediaWiki. I decided to give it a try and put together links_thing.&lt;/p&gt;
&lt;p&gt;First a quick primer. Semantic MediaWiki is an extension that lets you store and query data in wiki pages. Wikis have been awesome at dealing with documents and text for a long time. But if you wanted to put a table of data in a wiki that didn&amp;rsquo;t work very well. And if you wanted to query that table of data? Well, that was just crazy. Semantic MediaWiki gives you the ability to associate properties with pages and then query them. So, for my bookmarks each wiki page in the category bookmark is a bookmark and has a number of properties, including things like Has URL, Created at, Has excerpt. You get the idea. You put all this logic into the Templates that the wiki uses, making them into Semantic Templates and even the data entry can be made user friendly using Semantic Forms to create fancy forms with a variety of standard controls.&lt;/p&gt;
&lt;h3 id=&#34;making-it&#34;&gt;Making it&lt;/h3&gt;
&lt;p&gt;Building this wiki was pretty easy. I mostly just thought for a while about the properties that a bookmark has. I wanted to get it right since I could use the scaffolding that Semantic MediaWiki has to create a &amp;ldquo;class&amp;rdquo; and template out all the basic stuff. It&amp;rsquo;s easy enough to add after the fact too. After making the class for Bookmarks there was only one real thing I needed to prove. I had to be able to have a Bookmarklet that would automatically populate the URL, Title and Excerpt for a bookmark. Of course the timestamp needed to be done to but I knew how to do that.&lt;/p&gt;
&lt;p&gt;After some digging I figured out how to pass parameters into the Forms to pre-populate fields and also how to tell Semantic Forms to name the page based on a field in the form (namely, the TItle of the bookmark). After proving that out I was ready to go.&lt;/p&gt;
&lt;h3 id=&#34;importing&#34;&gt;Importing&lt;/h3&gt;
&lt;p&gt;I wasn&amp;rsquo;t willing to lose any data, and I knew it was just a matter of shoveling. I used Pinboard&amp;rsquo;s JSON export and then whipped up a little Python program to turn that into a CSV that could be imported using the &lt;a href=&#34;https://www.mediawiki.org/wiki/Extension:Data_Transfer&#34;&gt;Data Transfer&lt;/a&gt; extension. I easily imported just under 4,000 links and had all my data there.&lt;/p&gt;
&lt;h3 id=&#34;fun-stuff&#34;&gt;Fun Stuff&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve been using my new Bookmark wiki exclusively for the last few weeks and I&amp;rsquo;m absolutely loving it. Here are just some of the reasons why:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It is mine. Put simply, I don&amp;rsquo;t need to rely on anyone else to keep it working of me. For an archive, this feels reassuring.&lt;/li&gt;
&lt;li&gt;This seems simple, but it&amp;rsquo;s so helpful to be able to do regular expression driven find and replace through all my bookmarks. I&amp;rsquo;ve probably done 50 of these cleaning things up. For example, I didn&amp;rsquo;t like that a lot of bookmarks had a title that ended in &amp;quot; - Home&amp;quot; or &amp;quot; - My Super Cool Blog&amp;quot;. A quick search and replace and they are gone.&lt;/li&gt;
&lt;li&gt;I thought it would be interesting to see my bookmarks on a calendar. Seems like a simple thing but I don&amp;rsquo;t think any bookmarking service does it. So I made a calendar view.&lt;/li&gt;
&lt;li&gt;Wouldn&amp;rsquo;t it be nice to be able to see YouTube and Vimeo videos I bookmark without having to go to the video pages one at a time? I made a video view.&lt;/li&gt;
&lt;li&gt;I really want my bookmarking tool to have URL Checking. I hate short URL&amp;rsquo;s because I suspect they will go away. I also don&amp;rsquo;t like analytics tags being bugged into my URLs. I have a Check URL Template that checks for these in my wiki, and a bot that cleans them up.&lt;/li&gt;
&lt;li&gt;I thought it would be cool to see statistics on my bookmarks so I created a Bookmark Statistics view.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is just the beginning. I&amp;rsquo;m sure I&amp;rsquo;ll be adding a lot of other tweaks over time.&lt;/p&gt;
&lt;h3 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next?&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve now building a little Python application called LinkBot. LinkBot runs on a schedule and validates URL&amp;rsquo;s for me. I&amp;rsquo;ll write up about that application separately.&lt;/p&gt;
&lt;p&gt;I would love to share this suite of templates and properties with anyone else. It&amp;rsquo;s easy to export the pages off of my wiki and import them into your own. If you are interested I have cloning information and feel free to connect.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/05/18/i-ran-this.html</link>
      <pubDate>Fri, 18 May 2012 23:37:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/05/19/i-ran-this.html</guid>
      <description>&lt;p&gt;I ran this command in the wrong directory!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo find . -type f -print -exec rm &#39;{}&#39; \;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;luckily the damage is repairable, but plenty bad… and if anyone gives me crap for not using &lt;code&gt;xargs&lt;/code&gt;, I’m ignoring you… meant to run that in &lt;code&gt;/srv/www/wordpress/fastcgi_cache&lt;/code&gt;. Instead arrowed up and hit return in &lt;code&gt;/opt/etc/nginx&lt;/code&gt;. Yeah.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My Sessions at MinneBar 7</title>
      <link>https://www.thingelstad.com/2012/05/15/my-sessions-at.html</link>
      <pubDate>Tue, 15 May 2012 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/05/15/my-sessions-at.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://wiki.minnestar.org/wiki/MinneBar_7&#34;&gt;MinneBar 7&lt;/a&gt; was just a little over a month ago and the videos the two sessions I did are now online.&lt;/p&gt;
&lt;h3 id=&#34;running-a-virtual-server-with-confidence&#34;&gt;Running a Virtual Server with Confidence&lt;/h3&gt;
&lt;p&gt;I gave one talk on &lt;a href=&#34;http://wiki.minnestar.org/wiki/Running_a_Virtual_Server_with_Confidence&#34;&gt;Running a Virtual Server with Confidence&lt;/a&gt;. I got a lot of really good feedback from this session, people found it really useful and adopted a number of the suggestions I made. I didn&amp;rsquo;t use slides for this, instead I just walked through my build notes and shared that URL.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/NRrSlrrp-gI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;h3 id=&#34;every-http-status-code&#34;&gt;Every HTTP Status Code&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://garrickvanburen.com/&#34;&gt;Garrick&lt;/a&gt; and I also thought it would be fun to do a talk on &lt;a href=&#34;http://wiki.minnestar.org/wiki/Every_HTTP_Status_Code&#34;&gt;Every HTTP Status Code&lt;/a&gt;. We made it fun and walked through each one.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/yslcjnkbXUw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/05/14/just-created-my.html</link>
      <pubDate>Mon, 14 May 2012 22:05:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/05/15/just-created-my.html</guid>
      <description>&lt;p&gt;Just created my very first MediaWiki bot! It&amp;rsquo;s working like mad for me right now. 😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/05/09/my-running-a.html</link>
      <pubDate>Wed, 09 May 2012 15:19:14 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/05/09/my-running-a.html</guid>
      <description>&lt;p&gt;My &lt;a href=&#34;http://wiki.minnestar.org/wiki/Running_a_Virtual_Server_with_Confidence#tab=Video&#34;&gt;Running a VPS with Confidence&lt;/a&gt; session from Minnebar just got online.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/05/07/just-sent-a.html</link>
      <pubDate>Mon, 07 May 2012 23:06:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/05/08/just-sent-a.html</guid>
      <description>&lt;p&gt;Just sent a diff to add two Tag Cloud features to Semantic Results Format extension for &lt;a href=&#34;https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki&#34;&gt;Semantic MediaWiki&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/04/11/i-feel-a.html</link>
      <pubDate>Wed, 11 Apr 2012 22:15:08 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/04/12/i-feel-a.html</guid>
      <description>&lt;p&gt;I feel a growing desire to learn &lt;a href=&#34;https://www.latex-project.org&#34;&gt;LaTeX&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/03/26/infinite-scroll-is.html</link>
      <pubDate>Mon, 26 Mar 2012 15:55:19 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/03/26/infinite-scroll-is.html</guid>
      <description>&lt;p&gt;Infinite scroll is torture for OCD types like me. You can never finish!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MediaWiki Template Get Hostname</title>
      <link>https://www.thingelstad.com/2012/03/26/mediawiki-template-get.html</link>
      <pubDate>Mon, 26 Mar 2012 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/03/26/mediawiki-template-get.html</guid>
      <description>&lt;p&gt;I was working on a template for one my personal wikis and needed to get the hostname for a given URL. Using the capabilities of the &lt;a href=&#34;http://www.mediawiki.org/wiki/Extension:ParserFunctions&#34;&gt;Parser Functions extension&lt;/a&gt; for &lt;a href=&#34;http://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; I whipped up this template. I figured others may find this useful so here it is. The first version has a bunch of spaces and newlines added to make it more readable.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{#vardefine: hoststart | {{#expr: {{#pos: {{{1|}}} | // }} + 2 }} }}
{{#vardefine: hostend | {{#pos: {{{1|}}} | / | {{#expr: {{#pos: {{{1|}}} | // }} + 2 }} }} }}
{{#vardefine: hostlen | {{#expr: {{#var: hostend }} - {{#var: hoststart }} }} }}
{{#sub: {{{1|}}} | {{#var: hoststart}} | {{#var: hostlen}} }}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To put it in your own MediaWiki, copy this version that removes the spaces and newlines.&lt;/p&gt;
&lt;p&gt;To use this template put it on a page like
&lt;code&gt;Template:Get hostname&lt;/code&gt; and then call it in your
pages as&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{Get hostname|https://www.thingelstad.com/another-reason-you-need-to-use-a-password-manager/}}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;which will return &lt;code&gt;www.thingelstad.com&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/03/23/rt-damonallison-this.html</link>
      <pubDate>Fri, 23 Mar 2012 12:06:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/03/23/rt-damonallison-this.html</guid>
      <description>&lt;p&gt;😊&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/damonallison&#34;&gt;@damonallison&lt;/a&gt; &lt;code&gt;/* this is the ugliest code you will ever see. squint hard and pray right now */&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/03/04/okay-i-was.html</link>
      <pubDate>Sun, 04 Mar 2012 15:47:33 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/03/04/okay-i-was.html</guid>
      <description>&lt;p&gt;I was happy with Python — until I needed to spawn to the shell for a command. 😬&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/02/26/125812.html</link>
      <pubDate>Sun, 26 Feb 2012 14:58:12 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/02/26/125812.html</guid>
      <description>&lt;p&gt;Ubuntu is requesting a reboot. 208 days uptime. 😢&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MediaWiki Templates</title>
      <link>https://www.thingelstad.com/2012/02/25/why-mediawiki-needs.html</link>
      <pubDate>Sat, 25 Feb 2012 07:33:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/02/25/why-mediawiki-needs.html</guid>
      <description>&lt;p&gt;Why &lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; needs &lt;a href=&#34;https://www.lua.org&#34;&gt;Lua&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{#vardefine:
 time_delta|{{#expr:
  {{#timel: U|2/24/12}} - 
  {{#timel: U|{{#time: Y-m-d }} }}
 }}
}}
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/02/23/reading-python-essential.html</link>
      <pubDate>Thu, 23 Feb 2012 21:14:25 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/02/24/reading-python-essential.html</guid>
      <description>&lt;p&gt;Reading &lt;a href=&#34;https://www.oreilly.com/library/view/python-essential-reference/9780768687040/&#34;&gt;Python Essential Reference (4th Ed)&lt;/a&gt; by Beazley and love Python&amp;rsquo;s style.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Versioned Backup of Typerighter Account</title>
      <link>https://www.thingelstad.com/2012/02/15/versioned-backup-of.html</link>
      <pubDate>Wed, 15 Feb 2012 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/02/15/versioned-backup-of.html</guid>
      <description>&lt;p&gt;My friend &lt;a href=&#34;http://garrickvanburen.com/&#34;&gt;Garrick&lt;/a&gt; has been working on a really cool project called Typerighter. &lt;a href=&#34;https://typerighter.com/&#34;&gt;Typerighter&lt;/a&gt; is a notepad for your browser. It has almost no interface and just lets you focus on writing. He&amp;rsquo;s done some really cool things with it, like making it easy to keep notes for each day and make a document public and share it with the world (by default everything is private).&lt;/p&gt;
&lt;p&gt;I suggested to Garrick that I really wanted a way to backup my account. I trust he&amp;rsquo;s got my data backed up well, but it&amp;rsquo;s even better if I don&amp;rsquo;t have to trust at all because I have my data. He added a private RSS feed that dumps all of your documents out and I quickly put a script together so I now have nightly, versioned backups of all my information in Typerighter.&lt;/p&gt;
&lt;p&gt;Here is the script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This script is run by cron and downloads all of my material from [typerighter.com](http://typerighter.com/)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# It uses Git to keep track of changes in the archive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;URL&lt;span style=&#34;color:#f92672&#34;&gt;=[&lt;/span&gt;your-username.typerighter.com/archive/m...&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;https://your-username.typerighter.com/archive/my-secret-token&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GIT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/local/bin/git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CURL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/bin/curl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Get my documents&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$CURL --silent --output typerighter.rss &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$URL&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Detect if there is an existing repo, if not, make one&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; ! -d .git &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Creating the git repo…&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $GIT init
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $GIT add *
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$GIT commit --quiet --all --message&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Automatic commit of archive.&amp;#39;&lt;/span&gt; &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This script does want to be in the right directory when you run it. I put this in my crontab for it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; * * * &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;cd /home/thingles/autobackups/typerighter; ./backup-typerighter.sh&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Using Git is the part that I really like. Not only do I have a current backup, but I can use standard Git tools to get old versions of documents at any time.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Shutting Down Some Websites</title>
      <link>https://www.thingelstad.com/2012/02/08/shutting-down-some.html</link>
      <pubDate>Wed, 08 Feb 2012 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/02/08/shutting-down-some.html</guid>
      <description>&lt;p&gt;I recently decided to prune some websites that I was hosting, mostly ideas that I set up and then never took anywhere. Tammy had also decided to take her blog, Smaller Than a Redwood, down. I could have just deleted them but I wanted to be a good &amp;ldquo;net.citizen&amp;rdquo; and not give people &amp;ldquo;404 Page not found&amp;rdquo; errors but instead the more appropriate &amp;ldquo;410 Gone&amp;rdquo; message. Here is a simple way to do this with &lt;a href=&#34;http://nginx.org/&#34;&gt;nginx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First, I catch the websites main configuration which I keep in a file for each site in &lt;code&gt;/opt/etc/nginx/sites-available&lt;/code&gt;. I try to keep these configurations really simple, just handling the URLs, ports and then doing the application configuration in an include.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Redirect to non-www hostname
server {
  listen 80;
  listen [::]:80;
  server_name www.roadsignwordplay.com;
  rewrite ^ [roadsignwordplay.com](http://roadsignwordplay.com)$request_uri? permanent;
}

server {
  listen   80;
  listen   [::]:80;
  server_name roadsignwordplay.com;
  include /opt/etc/nginx/site-gone;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The include line then pulls in this configuration. I pointed this at a new directory in &lt;code&gt;/srv/www&lt;/code&gt; so that any files that the site used to have could be left wherever they are. I also turn on an access log so I can easily see how many people are still going to the website. I still do a &lt;code&gt;try_files&lt;/code&gt; because I have a robots.txt to help search engines know to go away. The important part is returning a 410 status and not a 404. The 410 is then handled by the &lt;code&gt;@site-gone&lt;/code&gt; rule.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# this config is loaded into sites that are dead
root /srv/www/site-gone/public_html;
access_log /srv/www/site-gone/logs/$host-access.log;
error_log /srv/www/site-gone/logs/error.log ;

location / {
  try_files $uri =410;
}

error_page 410 @site-gone;
location @site-gone {
  rewrite ^(.*)$ /site-gone.html break;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Voila! Site is now &amp;ldquo;gone&amp;rdquo;. I whipped up a simple HTML page to serve so people would know that the site was no longer available. And with that I wish Smaller Than a Redwood, Road Sign Wordplay, Road Sign Bingo, MediaWiki Cookbook, Sandbox Wiki and thinglesBot farewell!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/02/01/huh-vim-was.html</link>
      <pubDate>Wed, 01 Feb 2012 22:54:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/02/02/huh-vim-was.html</guid>
      <description>&lt;p&gt;Huh, vim was &lt;a href=&#34;https://en.wikipedia.org/wiki/Vim_(text_editor)&#34;&gt;originally written for the Amiga&lt;/a&gt;? Had no idea.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2012/02/01/this-is-awesome.html</link>
      <pubDate>Wed, 01 Feb 2012 22:48:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2012/02/02/this-is-awesome.html</guid>
      <description>&lt;p&gt;This is awesome!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/wikiworks&#34;&gt;@wikiworks&lt;/a&gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/2012-01-30/Technology_report&#34;&gt;MediaWiki devs choose Lua as the future scripting language for templates&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/12/31/181205.html</link>
      <pubDate>Sat, 31 Dec 2011 19:12:05 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/12/31/181205.html</guid>
      <description>&lt;p&gt;At dinner and two 20ish developers at table next are praising the greatness of .Net and C#. Using word &amp;ldquo;enterprise&amp;rdquo; a lot. First time I&amp;rsquo;ve heard WCF referenced in about 5 years. #makeitstop&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>WeSolver</title>
      <link>https://www.thingelstad.com/2011/12/31/wesolver.html</link>
      <pubDate>Sat, 31 Dec 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/12/31/wesolver.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been having a lot of fun working with &lt;a href=&#34;http://www.mediawiki.org/wiki/MediaWiki&#34;&gt;MediaWiki&lt;/a&gt; and particularly the &lt;a href=&#34;http://semantic-mediawiki.org/&#34;&gt;Semantic MediaWiki&lt;/a&gt; extensions. A few months ago a friend from when I worked at Dow Jones, &lt;a href=&#34;http://www.wesolver.org/wiki/User:Armistral&#34;&gt;Armistral&lt;/a&gt;, asked me for some input on how he could build this website he was working on. He wanted to create a site where people could work together to solve &lt;a href=&#34;http://www.wesolver.org/wiki/Category:Problems&#34;&gt;problems&lt;/a&gt;. Thus &lt;a href=&#34;http://www.wesolver.org/wiki/Main_Page&#34;&gt;WeSolver&lt;/a&gt; was born. I strongly recommended that he use MediaWiki and he ran with it. The site is now live and he&amp;rsquo;s done a nice job setting it all up. Check it out and if your so inspired see what you can do to help with &lt;a href=&#34;http://www.wesolver.org/wiki/Category:Solutions&#34;&gt;a solution&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/12/20/love-seeing-wardcunningham.html</link>
      <pubDate>Tue, 20 Dec 2011 23:49:43 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/12/21/love-seeing-wardcunningham.html</guid>
      <description>&lt;p&gt;Love seeing &lt;a href=&#34;http://c2.com/~ward/&#34;&gt;Ward Cunningham&lt;/a&gt;, creator of the wiki, on the fundraiser campaign for &lt;a href=&#34;https://www.wikipedia.org&#34;&gt;Wikipedia&lt;/a&gt;. (I&amp;rsquo;ve been a contributor for 4 years now).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/11/26/forget-wordpress-caching.html</link>
      <pubDate>Sat, 26 Nov 2011 15:53:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/26/forget-wordpress-caching.html</guid>
      <description>&lt;p&gt;Forget WordPress caching plugins if using nginx, just use &lt;a href=&#34;http://wiki.nginx.org/HttpFcgiModule#fastcgi_cache_path&#34;&gt;fastcgi_cache_path&lt;/a&gt;. Same for MediaWiki.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/11/26/solid-browsermob-load.html</link>
      <pubDate>Sat, 26 Nov 2011 15:45:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/26/solid-browsermob-load.html</guid>
      <description>&lt;p&gt;Solid &lt;a href=&#34;https://browsermob.com/&#34;&gt;Browsermob&lt;/a&gt; &lt;a href=&#34;https://browsermob.com/load/test/share/fb994c9c6d774acdb78c24dc3085a555&#34;&gt;load test&lt;/a&gt; on my new &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; VPS with &lt;a href=&#34;https://nginx.org&#34;&gt;nginx&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Count 404&#39;s in group of access logs</title>
      <link>https://www.thingelstad.com/2011/11/26/count-s-in.html</link>
      <pubDate>Sat, 26 Nov 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/26/count-s-in.html</guid>
      <description>&lt;p&gt;I found myself needing to see all of the 404 errors in the access logs for all virtual hosts on my web server. I put all of my logs for a given application (in this case WordPress) in one place (&lt;code&gt;/srv/www/wordpress/logs/$host-access.log&lt;/code&gt;). Logrotate kicks in to keep them segmented and compress them by day.&lt;/p&gt;
&lt;p&gt;A bunch of Unix magic later&amp;hellip;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zgrep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; 404 &amp;#34;&lt;/span&gt; *-access.log* | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; -f 1,7 | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed s/&lt;span style=&#34;color:#ae81ff&#34;&gt;\:&lt;/span&gt;.*&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;/&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;/ | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed s/&lt;span style=&#34;color:#ae81ff&#34;&gt;\-&lt;/span&gt;access.*&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;/&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;/ | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sort | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uniq -c | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sort -n -r | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;head -20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;zgrep is just grep that handles both normal and gzipped files. Pipe that into cut to pull out just the data we want. The two sed commands pull out data that would mess up the aggregation (the IP address of the requester and part of the filename). Sort puts prepares the stream for uniq to do the counting. Then do a numeric sort in reverse and show the top 20 404&amp;rsquo;s in all log files.&lt;/p&gt;
&lt;p&gt;Output looks like&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    380 thingelstad.com /wp-content/uploads/2011/09/cropped-20090816-101826-0200.jpg
    301 thingelstad.com /wp-content/uploads/2009/06/Peppa-Pig-Cold-Winter-Day-DVD-Cover.jpg
    300 thingelstad.com /wp-content/thingelstad/uploads/2011/10/Halloween-2011-1000x750.jpg
    264 thingelstad.com /wp-content/uploads/2007/12/guitar-hero-iii-cover-image.jpg
    130 thingelstad.com /apple-touch-icon.png
    129 thingelstad.com /apple-touch-icon-precomposed.png
    121 thingelstad.com /wp-content/uploads/import/o_nintendo-ds-lite.jpg
    114 thingelstad.com /wp-content/thingelstad/uploads/2011/10/Crusty-Tofu-1000x750.jpg
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Of course the next step would be to further the pipe into a &lt;code&gt;curl --head&lt;/code&gt; command to see which 404&amp;rsquo;s are still problematic. That just makes me smile. 🙂&lt;/p&gt;
&lt;p&gt;As an aside, sort combined with &lt;code&gt;uniq -c&lt;/code&gt; has to be one of the most deceptively powerful yet simple set of commands out there. I&amp;rsquo;m amazed at how often they give me exactly what I&amp;rsquo;m looking for.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Move to Linode</title>
      <link>https://www.thingelstad.com/2011/11/20/move-to-linode.html</link>
      <pubDate>Sun, 20 Nov 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/20/move-to-linode.html</guid>
      <description>&lt;p&gt;This website (and all the other websites I run) should all be running &lt;strong&gt;much&lt;/strong&gt; faster now. This weekend I flipped everything from my previous VPS at &lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt; to a new instance at &lt;a href=&#34;https://www.linode.com/&#34;&gt;Linode&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is a ridiculous amount I could write about the move, and I&amp;rsquo;ll try to share what I think is most helpful to others. In general I can say that the Linode hosts are a lot faster than the Slicehost instance I had. Doing basic Linux stuff was 2-3 times faster on Linode than on Slicehost.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/0604f0c284.png&#34; alt=&#34;Bar chart showing PHP cache hits at 99.9% (1588335) versus misses at 0.1% (2234), with green and brown bars respectively.&#34; style=&#34;max-width: 219px; &#34; /&gt;
&lt;p&gt;My new setup is also a lot faster due to how I deployed &lt;a href=&#34;https://wordpress.org/&#34;&gt;WordPress&lt;/a&gt; and &lt;a href=&#34;https://www.mediawiki.org/&#34;&gt;MediaWiki&lt;/a&gt;. I&amp;rsquo;m now running everything on &lt;a href=&#34;https://nginx.com/&#34;&gt;nginx&lt;/a&gt; instead of &lt;a href=&#34;http://www.apache.org/&#34;&gt;Apache&lt;/a&gt;. I&amp;rsquo;m also serving all my PHP out of php5-cgi instead of mod_php. Perhaps even more importantly I got all of my wiki and blog instances running under one PHP install for MediaWiki and WordPress. As a result, the &lt;a href=&#34;https://php.net/manual/en/book.apc.php&#34;&gt;APC&lt;/a&gt; module for PHP can do its job right. I&amp;rsquo;m now getting 99.9% PHP cache hits.&lt;/p&gt;
&lt;p&gt;With all that said I fully expect I may have a thing or two not working right now. If you see anything broken a comment or email would be great.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/11/11/041646.html</link>
      <pubDate>Fri, 11 Nov 2011 23:16:46 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/12/041646.html</guid>
      <description>&lt;p&gt;I think I might be getting &amp;ldquo;over the hump&amp;rdquo; with nginx. Had to debug something in my config and it actually made sense. 🙂&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/11/11/very-cool-rt.html</link>
      <pubDate>Fri, 11 Nov 2011 17:43:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/11/very-cool-rt.html</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://github.com/openresty/lua-nginx-module#readme&#34;&gt;lua-nginx-module&lt;/a&gt; is very cool.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/11/02/want-a-piwik.html</link>
      <pubDate>Wed, 02 Nov 2011 19:42:28 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/03/want-a-piwik.html</guid>
      <description>&lt;p&gt;Want a &lt;a href=&#34;https://www.piwik.org/&#34;&gt;Piwik&lt;/a&gt; extension that shows number of IPv4 versus &lt;a href=&#34;https://en.wikipedia.org/wiki/IPv6&#34;&gt;IPv6&lt;/a&gt; requests.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/11/02/003859.html</link>
      <pubDate>Wed, 02 Nov 2011 19:38:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/11/03/003859.html</guid>
      <description>&lt;p&gt;I have an &lt;a href=&#34;http://ipv6.thingelstad.com&#34;&gt;IPv6 only website&lt;/a&gt; since &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; supports that. But none of my networks support &lt;a href=&#34;https://en.wikipedia.org/wiki/IPv6&#34;&gt;IPv6&lt;/a&gt;. Can&amp;rsquo;t see my own toy.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/10/13/dennis-ritchies-passing.html</link>
      <pubDate>Thu, 13 Oct 2011 15:53:32 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/10/13/dennis-ritchies-passing.html</guid>
      <description>&lt;p&gt;Dennis Ritchie&amp;rsquo;s passing makes me want to go back and re-read The &lt;a href=&#34;https://en.wikipedia.org/wiki/The_C_Programming_Language&#34;&gt;C Programming Language&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/10/07/building-git-so.html</link>
      <pubDate>Fri, 07 Oct 2011 22:55:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/10/08/building-git-so.html</guid>
      <description>&lt;p&gt;Building &lt;code&gt;git&lt;/code&gt;, so I&amp;rsquo;m installing about 200 packages first. That makes sense. 😕&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Detect Slow Cacti Polling</title>
      <link>https://www.thingelstad.com/2011/10/02/detect-slow-cacti.html</link>
      <pubDate>Sun, 02 Oct 2011 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/10/02/detect-slow-cacti.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a big fan of graphs, and as such am a big fan of &lt;a href=&#34;http://www.cacti.net/&#34;&gt;Cacti&lt;/a&gt;. I&amp;rsquo;ve used it at work and at home. It&amp;rsquo;s a wonderfully powerful, and ridiculously complicated front-end to &lt;a href=&#34;http://oss.oetiker.ch/rrdtool/&#34;&gt;RRDTool&lt;/a&gt;, which is also wonderfully powerful and ridiculously complicated. I&amp;rsquo;ve used Cacti to graph hundreds of servers, the temperature in my house, &lt;a href=&#34;https://www.thingelstad.com/2006/06/13/solar-panels-started.html&#34;&gt;heat collected from solar panels&lt;/a&gt; and &lt;a href=&#34;https://www.thingelstad.com/2009/03/30/tracking-twitter-followers.html&#34;&gt;Twitter followers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By default Cacti runs a poller every 5 minutes to collect data. Cacti gets very unhappy if the time required to run the poller exceeds the 5 minute interval. You will get blank data gaps and there aren&amp;rsquo;t any alarms that go off when this happens. Polling times can also vary without any changes in Cacti. If you are polling an external service and it gets slow, that could spike your polling times up in a terrible way.&lt;/p&gt;
&lt;p&gt;I decided to write a quick script to catch this. Rather than integrate it into Cacti&amp;rsquo;s poller I made it completely separate. Save this script to a shell script and add it to &lt;code&gt;/etc/cron.hourly&lt;/code&gt; and you can rest easily knowing your Cacti poller is healthy.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# by Jamie Thingelstad&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Where is the log?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CACTI_LOG&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/local/cacti/log/cacti.log
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Sample up how many lines?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CACTI_SAMPLE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Warning level for 5 minute poll interval, in seconds.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Nonsensical to set this higher than 300.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WARN_AT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;240&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Where is mail?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MAIL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/bin/mail
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Where to send warning? What subject?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ERR_TO&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bad-things-happening@youremail.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ERR_SUBJECT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[Cacti] Cacti Poller time is too high&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Scan the cacti log and see how things are&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Grep for STATS \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Get the last CACTI_SAMPLE samples \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Find the duration field (cut) \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Remove the label (cut) \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Strip the decimal points, make it an integer (cut) \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Add the total of all the samples and count the number of samples (awk) \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#   - this step is needed because the file may have &amp;lt; CACTI_SAMPLES in it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;POLL_DATA&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SYSTEM STATS&amp;#34;&lt;/span&gt; $CACTI_LOG | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            tail -$CACTI_SAMPLE | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; -f &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;:&amp;#34;&lt;/span&gt; -f &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt; -f &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{ sum += $1; count++ } END { print sum, count }&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Get the two variables we want&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TOTAL_TIME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo $POLL_DATA | awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TOTAL_COUNT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo $POLL_DATA | awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Figure out the allowed time as a multiple of WARN_AT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AVERAGE_TIME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$((&lt;/span&gt;$TOTAL_TIME &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; $TOTAL_COUNT&lt;span style=&#34;color:#66d9ef&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Check how long it took and warn if too long, in seconds&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$AVERAGE_TIME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -gt &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$WARN_AT&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Polling is exceeded limit, send warning&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ERR_MESSAGE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Polling time for cacti is dangerously high. Last &lt;/span&gt;$TOTAL_COUNT&lt;span style=&#34;color:#e6db74&#34;&gt; polling periods averaged &lt;/span&gt;$AVERAGE_TIME&lt;span style=&#34;color:#e6db74&#34;&gt; seconds, higher than &lt;/span&gt;$WARN_AT&lt;span style=&#34;color:#e6db74&#34;&gt; second threshold.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo $ERR_MESSAGE | $MAIL -s &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ERR_SUBJECT&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ERR_TO&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;/dev/null 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some notes on what this script is doing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sampling 24 lines means 24 five-minute polling periods, in other
words, the last 24 * 5 minutes, or 2 hours.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The script will calculate the average of the last 24 (or fewer)
samples and alarm if it is over threshold. One sample over the
threshold won&amp;rsquo;t matter since it uses the average.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;awk&lt;/code&gt; complexity is used to deal with a new
log file that has fewer than &lt;code&gt;CACTI_SAMPLE&lt;/code&gt;
events.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/09/21/hoping-that-the.html</link>
      <pubDate>Wed, 21 Sep 2011 07:16:16 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/09/21/hoping-that-the.html</guid>
      <description>&lt;p&gt;Hoping that the materials for &lt;a href=&#34;https://www.semantic-mediawiki.org/wiki/SMWCon&#34;&gt;SMWCon&lt;/a&gt; are shared for those that can&amp;rsquo;t attend.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/09/18/this-looks-incredibly.html</link>
      <pubDate>Sun, 18 Sep 2011 20:19:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/09/19/this-looks-incredibly.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://developer.squareup.com/blog/cube-time-series-visualization&#34;&gt;Cube: Time Series Visualization&lt;/a&gt; ← This looks incredibly interesting. Cool possibilities.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/08/24/thanks-to-sage.html</link>
      <pubDate>Wed, 24 Aug 2011 01:37:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/08/24/thanks-to-sage.html</guid>
      <description>&lt;p&gt;Thanks to sage guidance from &lt;a href=&#34;https://www.linkedin.com/in/danfrankowski/&#34;&gt;Dan Frankowski&lt;/a&gt; I got my first AppEngine site running tonight at the &amp;ldquo;write&amp;rdquo; meeting of our book club.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/08/02/forcing-myself-to.html</link>
      <pubDate>Wed, 03 Aug 2011 00:12:29 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/08/03/forcing-myself-to.html</guid>
      <description>&lt;p&gt;Forcing myself to leave the warm, and comforting, arms of &lt;a href=&#34;http://www.apache.org&#34;&gt;Apache&lt;/a&gt; for the speed and power of &lt;a href=&#34;http://nginx.org&#34;&gt;nginx&lt;/a&gt;. Getting there, and about time…&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/08/03/yeah-got-my.html</link>
      <pubDate>Wed, 03 Aug 2011 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/08/03/yeah-got-my.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Yeah, got my very first &lt;a href=&#34;https://en.wikipedia.org/wiki/IPv6&#34;&gt;IPv6&lt;/a&gt; only website running on my new &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; host. &lt;a href=&#34;http://ipv6.thingelstad.com&#34;&gt;ipv6.thingelstad.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Unfortunately, no networks I have access to are IPv6 capable. Bummer.&lt;/li&gt;
&lt;li&gt;Plan to have all of my websites IPv6 available as I transition them to &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/08/02/doing-some-unix.html</link>
      <pubDate>Tue, 02 Aug 2011 00:56:35 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/08/02/doing-some-unix.html</guid>
      <description>&lt;p&gt;Doing some Unix cleaning tonight and found the website I host for my cousin had been compromised. Ugh! 😕&lt;/p&gt;
&lt;p&gt;One crappy &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; plugin (is-human) with a PHP exec hack.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/08/01/wow-my-new.html</link>
      <pubDate>Tue, 02 Aug 2011 00:44:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/08/02/wow-my-new.html</guid>
      <description>&lt;p&gt;Wow, my new &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; VPS is easily 2x faster than my old &lt;a href=&#34;https://www.slicehost.com&#34;&gt;Slicehost&lt;/a&gt; VPS.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/07/30/tyler-got-a.html</link>
      <pubDate>Sat, 30 Jul 2011 23:18:44 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/07/31/tyler-got-a.html</guid>
      <description>&lt;p&gt;Tyler got a new background to his landing page website. tylerthing.com Gave me an excuse to use the text-shadow CSS attribute.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/07/30/did-some-big.html</link>
      <pubDate>Sat, 30 Jul 2011 01:22:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/07/30/did-some-big.html</guid>
      <description>&lt;p&gt;Did some big time exploring with MediaWiki and &lt;a href=&#34;https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki&#34;&gt;Semantic MediaWiki&lt;/a&gt; tonight. Cool stuff!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/07/30/crazy-impressed-with.html</link>
      <pubDate>Sat, 30 Jul 2011 01:12:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/07/30/crazy-impressed-with.html</guid>
      <description>&lt;p&gt;Crazy impressed with &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt; so far. Hope to have my sites moved this weekend. Wish it was easier to move a VPS.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Perceived Project Progress</title>
      <link>https://www.thingelstad.com/2011/07/17/perceived-project-progress.html</link>
      <pubDate>Sun, 17 Jul 2011 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/07/17/perceived-project-progress.html</guid>
      <description>&lt;p&gt;Our remodeling project is scheduled for 12 weeks. I&amp;rsquo;m very familiar with project execution, that is a big part of what I do for a living. Watching the progress of our remodel I&amp;rsquo;ve been thinking about real versus perceived project progress. The chart below reflects the relationship.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/c3727b021a.png&#34; alt=&#34;Perceived Project
Progress&#34;&gt;&lt;/p&gt;
&lt;p&gt;When we build software there is a decent amount of time getting groundwork put in. You have to get the build process working right, get your integration tests working, get version control working the way you want it. You probably need to use some framework code. It is a lot of stuff that doesn&amp;rsquo;t really feel like progress to a non-technical person.&lt;/p&gt;
&lt;p&gt;Then you start framing out the software. Big swaths go in place, but mostly just stubs. Everything looks like it is coming together really fast, but it is largely a façade. Things are just in place to make sure it all comes together right.&lt;/p&gt;
&lt;p&gt;At the end, it feels like the thing is so close to done but it just keeps dragging on. The edge cases have to be handled, error handling needs improvement. You need to log things. Not to mention that final design of the visual elements. This is where people get frustrated.&lt;/p&gt;
&lt;p&gt;I fully expect the same thing to happen with &lt;a href=&#34;https://www.thingelstad.com/collections/morgan-remodel&#34;&gt;this remodel&lt;/a&gt;. It seemed like a long time to get the structural stuff rolling. This week it seemed like a lot started to happen, and with the framing right around the corner it will feel like we are almost there. Then, things will take a very long time to get the light switches all wired up right and all the final punch list items completed.&lt;/p&gt;
&lt;p&gt;While I ride the Perceived Progress line I&amp;rsquo;m going to try to keep a good grounding on the Actual Progress line. It is the only one that matters after all.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/07/15/i-had-a-blast-hacking.html</link>
      <pubDate>Fri, 15 Jul 2011 21:33:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/07/15/i-had-a-blast-hacking.html</guid>
      <description>&lt;p&gt;I had a blast hacking MediaWiki tonight with my awesome book club gang: John Riedl, &lt;a href=&#34;https://twitter.com/dfrankow&#34;&gt;Dan Frankowski&lt;/a&gt;, Erik Jordan, and &lt;a href=&#34;http://www.tomeri.org&#34;&gt;Tom Erickson&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/07/12/any-of-you.html</link>
      <pubDate>Wed, 13 Jul 2011 00:52:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/07/13/any-of-you.html</guid>
      <description>&lt;p&gt;Any of you out there use &lt;a href=&#34;https://www.linode.com&#34;&gt;Linode&lt;/a&gt;? I&amp;rsquo;m about to sign up and would be happy to send the referral to a friend.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/07/04/just-upgraded-wordpress.html</link>
      <pubDate>Mon, 04 Jul 2011 20:00:39 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/07/05/just-upgraded-wordpress.html</guid>
      <description>&lt;p&gt;Just upgraded 8 &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; sites to 3.2 in about 5 minutes. Super easy. (Wish MediaWiki was that easy.)&lt;/p&gt;
&lt;p&gt;The Edit Post screen is shockingly nicer, but so similar. Feels crazy faster and much calmer. Nicer type too!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Google Reminding People to Update</title>
      <link>https://www.thingelstad.com/2011/06/19/google-reminding-people.html</link>
      <pubDate>Sun, 19 Jun 2011 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/06/19/google-reminding-people.html</guid>
      <description>&lt;p&gt;I got this email yesterday for a blog that I help my brother-in-law out with. I haven&amp;rsquo;t ever seen a notice like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dear site owner or webmaster of &lt;code&gt;domain-name-removed&lt;/code&gt;. Your site
appears to be running an older version of WordPress. Google recommends
that you update to the latest release. Older or unpatched software may
be vulnerable to hacking or malware that can hurt your users. To
download the latest release, visit the &lt;a href=&#34;http://wordpress.org/download/&#34;&gt;WordPress download page&lt;/a&gt;. If you have any additional
questions about why you are receiving this message, Google has
provided more background information in a &lt;a href=&#34;http://googlewebmastercentral.blogspot.com/2009/11/new-software-version-notifications-for.html&#34;&gt;blog post&lt;/a&gt;
about this subject. Best wishes, Google Search Quality Team&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I didn&amp;rsquo;t know that Google would send a notice like this. Seems like a good thing to do to keep the web a better place.&lt;/p&gt;
&lt;p&gt;I logged in and upgraded his site for him.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update July 6th:&lt;/strong&gt; This seems less cool than I hoped. Today I&amp;rsquo;ve gotten a number of emails on blogs that I upgraded on 7/4 to the newest WordPress saying I should upgrade them. Maybe Google is just seeing that the site is running WordPress and sending a note regardless of what version it is currently running?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/04/13/nginx-hits-v.html</link>
      <pubDate>Wed, 13 Apr 2011 20:09:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/04/14/nginx-hits-v.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://nginx.org/2011.html&#34;&gt;Nginx hits v1&lt;/a&gt;! Cool.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/04/05/font-stack-of.html</link>
      <pubDate>Tue, 05 Apr 2011 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/04/05/font-stack-of.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m going to suggest that we have a new title, Font Stack of Boredom™, for the following CSS block.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;font-family: Arial, Verdana, Helvetica, sans-serif;&lt;/code&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/03/23/152034.html</link>
      <pubDate>Wed, 23 Mar 2011 10:20:34 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/03/23/152034.html</guid>
      <description>&lt;p&gt;One of my favorite mashups we ever did at &lt;a href=&#34;https://www.marketwatch.com&#34;&gt;MarketWatch&lt;/a&gt; put realtime news on a live timeline. Cool stuff.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2011/03/23/im-a-big.html</link>
      <pubDate>Wed, 23 Mar 2011 10:19:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/03/23/im-a-big.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.propublica.org/nerds/timelinesetter-a-new-way-to-display-timelines-on-the-web&#34;&gt;TimelineSetter: A New Way to Display Timelines on the Web&lt;/a&gt; ← I’m a big fan of timelines as a tool to tell a story. Excited that &lt;a href=&#34;https://www.propublica.org/&#34;&gt;ProPublica&lt;/a&gt; is making it easier.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Was Wrong on OpenID</title>
      <link>https://www.thingelstad.com/2011/02/27/was-wrong-on.html</link>
      <pubDate>Sun, 27 Feb 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/02/27/was-wrong-on.html</guid>
      <description>&lt;p&gt;My friend &lt;a href=&#34;http://www-users.cs.umn.edu/~riedl/&#34;&gt;John&lt;/a&gt; asked me to present at a class of his next week at the &lt;a href=&#34;http://www.umn.edu/&#34;&gt;U of MN&lt;/a&gt;. I took an old Keynote presentation I had from a couple of years ago to start with and ran across this slide. I don&amp;rsquo;t think I could have been more wrong!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/6834c8e9c2.jpg&#34; alt=&#34;Slide titled Future Case listing four bullet points about OpenID becoming a social graph, hCard, browser-integrated, and a customer gateway.&#34;&gt;
&lt;p&gt;I was definitely an &lt;a href=&#34;http://openid.net/&#34;&gt;OpenID&lt;/a&gt; advocate at the time, and for a long time before this talk. Makes me sad though since OpenID was open, and not owned by any one company. Hyperlinks between OpenID&amp;rsquo;s are such an elegant way of creating connections and is so web friendly.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>I 💚 Unix</title>
      <link>https://www.thingelstad.com/2011/02/19/i-heart-unix.html</link>
      <pubDate>Sat, 19 Feb 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/02/19/i-heart-unix.html</guid>
      <description>&lt;p&gt;Maybe this should be titled &amp;ldquo;I [Heart] Shell&amp;rdquo;, but it seems more fitting to lay praise at Unix. Sometimes you do something on the prompt and you just look and think &amp;ldquo;Wow, that would be crazy hard on any other platform!&amp;rdquo;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; true; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;date; netstat -n | grep 1.2.3.4 | awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{print $6}&amp;#39;&lt;/span&gt; | sort | uniq -c; sleep 300;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I was debugging a problem with leaking network connections to a host and needed to see what was going on, checking in every 5 minutes.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>LinkedIn InMap</title>
      <link>https://www.thingelstad.com/2011/02/06/linkedin-inmap.html</link>
      <pubDate>Sun, 06 Feb 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/02/06/linkedin-inmap.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://linkedin.com/&#34;&gt;LinkedIn&lt;/a&gt; created this cool &lt;a href=&#34;http://inmaps.linkedinlabs.com/&#34;&gt;InMap&lt;/a&gt; visualization of your network.&lt;/p&gt;
&lt;p&gt;Useless really, but it sure looks nifty. 😀&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/04c5c585f9.png&#34; alt=&#34;Network graph showing Jamie Thingelstad at center connected to hundreds of contacts grouped in colored clusters across blue green orange red and purple nodes.&#34;&gt;
</description>
    </item>
    
    <item>
      <title>&#34;Synced&#34; Is Not a Word</title>
      <link>https://www.thingelstad.com/2011/01/11/synced-is-not.html</link>
      <pubDate>Tue, 11 Jan 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/01/11/synced-is-not.html</guid>
      <description>&lt;p&gt;Let me nitpick for a moment. I&amp;rsquo;m a huge fan of &lt;a href=&#34;http://www.omnigroup.com/products/omnifocus/&#34;&gt;Omnifocus&lt;/a&gt; and I use it on my Macs, iPhone and iPad. I&amp;rsquo;ve bought it for everything I use regularly and I use it dozens of times every day. One of the key things that Omnifocus does so well is synchronize all of your task data across all the devices you use. It works great. I&amp;rsquo;ve never had it lose anything and I can really trust that nothing gets lost.&lt;/p&gt;
&lt;p&gt;However, when I synchronize my phone I&amp;rsquo;m always irked with the screen. The problem: &lt;strong&gt;synced&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/852cfc8d0a.jpg&#34; alt=&#34;OmniFocus app main screen on iPhone showing Inbox, Projects, Contexts, Due Soon, Overdue, Flagged, Search, and Perspectives, with a sync progress overlay reading Updating with synced data.&#34; style=&#34;max-width: 400px;&#34; /&gt;
&lt;p&gt;We also &amp;ldquo;synced&amp;rdquo; on the iPad.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/1749c198d8.jpg&#34; alt=&#34;OmniFocus iPad app showing a dark modal dialog with a progress bar and the message Updating with synced data displayed over the Errands task list.&#34; /&gt;
&lt;p&gt;Yes, I&amp;rsquo;m being picky. The problem is that &amp;ldquo;synced&amp;rdquo; is not a word. Don&amp;rsquo;t believe me? Ask the &lt;a href=&#34;http://www.oed.com/&#34;&gt;OED&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/7d88919bad.jpg&#34; alt=&#34;Oxford English Dictionary website showing a quick search results page with no dictionary entries found for synced&#34; style=&#34;max-width: 400px;&#34; /&gt;
&lt;p&gt;That&amp;rsquo;s right. &lt;strong&gt;It isn&amp;rsquo;t a word.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There isn&amp;rsquo;t a great solution. Apple decided to use &amp;ldquo;Sync in Progress&amp;rdquo; when connecting to iTunes. That seems a lot better than &amp;ldquo;Updating with synced data&amp;rdquo; to me.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Apps With Notifications</title>
      <link>https://www.thingelstad.com/2011/01/11/apps-with-notifications.html</link>
      <pubDate>Tue, 11 Jan 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/01/11/apps-with-notifications.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve got a lot of applications on my iPhone. They are spread over multiple pages, and some of them are in folders with similar applications. I also get notifications from a lot of applications. I&amp;rsquo;ve found that it would be really nice if there was a way on my iPhone to see all the applications that had badge notifications for me to see. But where would you put it? I thought about it for a bit and it hit me that it would be really cool if when you swiped left to the Spotlight screen to do a search, it could show the applications that have outstanding notifications. Something like this.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/f0ca03c67f.jpg&#34; alt=&#34;iPhone Spotlight search screen showing Mail with 1 notification, OmniFocus with 6, and Carcassonne with 1, above a keyboard.&#34; style=&#34;max-width: 400px; &#34; /&gt;
&lt;p&gt;If you start to type those icons would go away and the typical search results would show instead. I think that would be pretty slick!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kindle Icon Confusion</title>
      <link>https://www.thingelstad.com/2011/01/11/kindle-icon-confusion.html</link>
      <pubDate>Tue, 11 Jan 2011 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2011/01/11/kindle-icon-confusion.html</guid>
      <description>&lt;p&gt;Just yesterday &lt;a href=&#34;http://www.amazon.com/&#34;&gt;Amazon&lt;/a&gt; released the Kindle application into the &lt;a href=&#34;http://www.apple.com/mac/app-store/&#34;&gt;Mac App Store&lt;/a&gt;. They also released a new version of the &lt;a href=&#34;http://itunes.apple.com/us/app/kindle/id302584613?mt=8&#34;&gt;iOS Kindle application&lt;/a&gt;. Time to install and update. On the iPhone I noticed that they had a new icon that put the Kindle brand front and center.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/3c489e7d9e.gif&#34; alt=&#34;Kindle app listing in the Mac App Store showing a blue icon of a person reading under a tree, labeled Books, updated Jan 10 2011, free&#34; style=&#34;max-width: 218px; &#34; /&gt;
&lt;p&gt;Nice. I then went to the &lt;a href=&#34;http://itunes.apple.com/us/app/kindle/id405399194?mt=12&#34;&gt;Mac App Store and found the old icon&lt;/a&gt;?&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/a64b4f6f9a.gif&#34; alt=&#34;Amazon Kindle iOS app listing showing a dark blue icon with a person reading under a tree, 4.5 star rating, 77 ratings, marked as Installed&#34; style=&#34;max-width: 223px; &#34; /&gt;
&lt;p&gt;Huh? The same app, released within a day or two of each other? Maybe someone missed an email.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Remote.app and Cover Art</title>
      <link>https://www.thingelstad.com/2010/12/13/remoteapp-and-cover.html</link>
      <pubDate>Mon, 13 Dec 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/12/13/remoteapp-and-cover.html</guid>
      <description>&lt;p&gt;I keep a mountain of content in iTunes and I am constantly accessing it one way or another. The iPad Remote application is one of the more common methods. It is a very well done application. Super easy, fast, polished.&lt;/p&gt;
&lt;p&gt;Except one thing. I have no idea why, but Remote insists on using a square &lt;strong&gt;black&lt;/strong&gt; mask under cover art. Here is what it looks like.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/87d4e00f84.jpg&#34; alt=&#34;iPad Remote app TV Shows library showing M*A*S*H seasons 1-11 plus other titles displayed with black square background behind non-square cover art.&#34;&gt;
&lt;p&gt;Why oh why do this? iTunes itself just puts the images on white and it looks great. This looks like crap. Drives me bonkers. Apple, please change this! I have nearly broke down and changed all non-square cover art to square. However, then it looks weird on Apple TV. Why put any default color under it?&lt;/p&gt;
&lt;p&gt;(Before you ask, yes, I own all episodes of M*A*S*H on DVD and ripped them all into iTunes.)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Sparklines Used Well</title>
      <link>https://www.thingelstad.com/2010/12/13/sparklines-used-well.html</link>
      <pubDate>Mon, 13 Dec 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/12/13/sparklines-used-well.html</guid>
      <description>&lt;p&gt;I absolutely dig the way the My-Cast weather application for the iPhone uses &lt;a href=&#34;http://en.wikipedia.org/wiki/Sparkline&#34;&gt;sparklines&lt;/a&gt;. Works just as it should, and conveys information without me even thinking about it. (Just in case, the sparklines are the little word-sized graphs next to each data item.)&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/1140368e5d.png&#34; alt=&#34;My-Cast iPhone weather app showing Minneapolis MN conditions: mostly cloudy, 1 degree, winds N 0 mph, dewpoint -8, humidity 65%, pressure 30.32 inHg, visibility 10 miles, each stat paired with a&#34; style=&#34;max-width: 640px; &#34; /&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/10/28/i-signed-up.html</link>
      <pubDate>Thu, 28 Oct 2010 20:02:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/10/29/i-signed-up.html</guid>
      <description>&lt;p&gt;I signed up last night!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://kernest.com/konstellations&#34;&gt;Introducing Kernest Konstellations&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/10/01/just-spent-the.html</link>
      <pubDate>Fri, 01 Oct 2010 01:04:06 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/10/01/just-spent-the.html</guid>
      <description>&lt;p&gt;Just spent the last two hours exploring DevOps with &lt;a href=&#34;https://opscode.com/&#34;&gt;OpsCode&lt;/a&gt; and Chef. Nearly got my EC2 instance bootstrapped!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/09/13/224510.html</link>
      <pubDate>Mon, 13 Sep 2010 22:45:10 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/09/13/224510.html</guid>
      <description>&lt;p&gt;I can&amp;rsquo;t believe it&amp;rsquo;s taken me this long to &lt;code&gt;chsh zsh&lt;/code&gt; on my Mac. Hello again &lt;a href=&#34;https://www.zsh.org&#34;&gt;zsh&lt;/a&gt;. It&amp;rsquo;s been too long old buddy!&lt;/p&gt;
&lt;p&gt;I really wish I still had that &lt;code&gt;.zshrc&lt;/code&gt; file I spent forever optimizing in college.&lt;/p&gt;
&lt;p&gt;If you are thinking &amp;ldquo;Oh, that is what he did in college! Play with his &lt;code&gt;.zshrc!&lt;/code&gt;&amp;rdquo; That&amp;rsquo;s fair.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/09/13/took-a-lot.html</link>
      <pubDate>Mon, 13 Sep 2010 22:42:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/09/14/took-a-lot.html</guid>
      <description>&lt;p&gt;Required installing many dependencies but I now have &lt;code&gt;chef&lt;/code&gt; and &lt;code&gt;knife&lt;/code&gt; gems installed to start playing with deployments.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/09/13/considering-aws-ec.html</link>
      <pubDate>Mon, 13 Sep 2010 09:32:42 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/09/13/considering-aws-ec.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/index.html?concepts_micro_instances.html&#34;&gt;Burstable performance instances&lt;/a&gt; — Considering AWS EC2 Micro instances? Read this doc to understand the compute profile.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/09/10/planning-out-deploying.html</link>
      <pubDate>Sat, 11 Sep 2010 00:23:04 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/09/11/planning-out-deploying.html</guid>
      <description>&lt;p&gt;Planning out deploying thingelstad.com on Amazon EC2 with autoscaling and independent SQL/NFS server.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/09/10/103143.html</link>
      <pubDate>Fri, 10 Sep 2010 10:31:43 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/09/10/103143.html</guid>
      <description>&lt;p&gt;As odd as this seems at first, Amazon EC2&amp;rsquo;s new &amp;ldquo;micro&amp;rdquo; instance is a game changer. Ridiculously cheap for the right task.&lt;/p&gt;
&lt;p&gt;A t1.micro reserved instance comes in at $54/year!&lt;/p&gt;
&lt;p&gt;If your curious, here is &lt;a href=&#34;https://aws.amazon.com/about-aws/whats-new/2010/09/09/announcing-micro-instances-for-amazon-ec2/&#34;&gt;Amazon&amp;rsquo;s Micro announcement&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/09/08/first-impression-of.html</link>
      <pubDate>Wed, 08 Sep 2010 13:19:42 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/09/08/first-impression-of.html</guid>
      <description>&lt;p&gt;First impression of Google Streaming Search: hate it. Distracting, clunky. It&amp;rsquo;s like someone not allowing me to finish a sentence.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/09/01/035415.html</link>
      <pubDate>Wed, 01 Sep 2010 22:54:15 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/09/02/035415.html</guid>
      <description>&lt;p&gt;Not a fan of the new visual elements in iTunes 10. Reminds me of the grayscale of NeXT.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/08/30/221811.html</link>
      <pubDate>Mon, 30 Aug 2010 17:18:11 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/08/30/221811.html</guid>
      <description>&lt;p&gt;Got a great rundown from &lt;a href=&#34;https://opscode.com/&#34;&gt;OpsCode&lt;/a&gt; on Chef and managing cloud instances on EC2. Very impressive!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/07/27/browsermob-seems-to.html</link>
      <pubDate>Tue, 27 Jul 2010 10:58:33 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/07/27/browsermob-seems-to.html</guid>
      <description>&lt;p&gt;BrowserMob seems to be a winner in this space. Like that you can write your own test cases using Selenium.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/05/27/doing-a-make.html</link>
      <pubDate>Thu, 27 May 2010 23:33:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/05/28/doing-a-make.html</guid>
      <description>&lt;p&gt;Doing a &lt;code&gt;make&lt;/code&gt; on &lt;code&gt;git&lt;/code&gt; is so clean that I just like to sit and watch all the commands go by so cleanly.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/05/27/mediawiki-is-sort.html</link>
      <pubDate>Thu, 27 May 2010 22:55:12 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/05/28/mediawiki-is-sort.html</guid>
      <description>&lt;p&gt;MediaWiki is sort of blowing my mind.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Stock Charts in HTML5</title>
      <link>https://www.thingelstad.com/2010/03/12/stock-charts-in.html</link>
      <pubDate>Fri, 12 Mar 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/03/12/stock-charts-in.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.humblesoftware.com/finance/index&#34;&gt;HumbleFinance&lt;/a&gt; produces really nice looking, smooth and interactive charts in HTML5 using Canvas. Very nice. At &lt;a href=&#34;http://www.marketwatch.com/&#34;&gt;MarketWatch&lt;/a&gt; we had been trying to do this several years ago but it was really hard to get the user experience we wanted. I think browser technology has finally reached the point where you can do this stuff right. (&lt;a href=&#34;http://daringfireball.net/linked/2010/03/12/humblefinancial&#34;&gt;via Daring Fireball&lt;/a&gt;)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/03/09/flavorsme.html</link>
      <pubDate>Tue, 09 Mar 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/03/09/flavorsme.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://flavors.me/&#34;&gt;Flavors.me&lt;/a&gt; ← Having a personal landing page is getting more popular. I like the concept, but I don&amp;rsquo;t want to have this hosted elsewhere. We could easily build these sites with some specialized &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; themes.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/03/09/harmony.html</link>
      <pubDate>Tue, 09 Mar 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/03/09/harmony.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://mrdoob.com/lab/javascript/harmony/&#34;&gt;Harmony&lt;/a&gt; ← Very cool HTML5 painting tool.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/03/09/peeing-and-hockey.html</link>
      <pubDate>Tue, 09 Mar 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/03/09/peeing-and-hockey.html</guid>
      <description>&lt;p&gt;Peeing and Hockey — What a &lt;a href=&#34;https://www.patspicks.com/blog/item/what_if_everybody_flushed_at_once_Edmonton_water_gold_medal_hockey_game/&#34;&gt;great chart&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/22391ba83e.jpg&#34; alt=&#34;Line graph showing Edmonton water demand dropping during Canada&#39;s Olympic gold medal hockey game on Feb 28 2010 with spikes at period breaks.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/03/09/typewithme.html</link>
      <pubDate>Tue, 09 Mar 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/03/09/typewithme.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://typewith.me/&#34;&gt;TypeWith.me&lt;/a&gt; ← Firing up the open sourced code from Etherpad.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Showing Your Kid to Program</title>
      <link>https://www.thingelstad.com/2010/02/06/showing-your-kid.html</link>
      <pubDate>Sat, 06 Feb 2010 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/02/06/showing-your-kid.html</guid>
      <description>&lt;p&gt;My friend &lt;a href=&#34;http://www.jimbernard.net/&#34;&gt;Jim&lt;/a&gt; and I were talking the other day and he asked me for some recommendations on a way to introduce his son to computer programming. I have shared, &lt;em&gt;probably multiple times&lt;/em&gt;, with Jim how I learned BASIC when I was around 6 years old and how important I felt that was. My very first computer was a &lt;a href=&#34;http://en.wikipedia.org/wiki/Texas_Instruments_TI-99/4A&#34;&gt;TI-99/4A&lt;/a&gt; with a cassette tape adapter to store my programs on. After a summer of mowing lawns I added an &lt;a href=&#34;http://en.wikipedia.org/wiki/TI_Extended_BASIC&#34;&gt;Extended BASIC&lt;/a&gt; cartridge to it. My mother bought me the computer when Texas Instruments decided to stop making computers. If I remember right it cost $99 at JC Penney&amp;rsquo;s including the RF adapter to plug it into your TV. How many computers can you buy today for $99? The great thing about that computer was that you turned it on and it did nothing. It just sat there flashing a cursor at you waiting for some instructions. It had a built-in BASIC interpreter and I was off to the races after my uncle Tim, who took one BASIC class in college (1978!) while becoming a carpenter, showed me some ropes. By current standards it sounds horrible, but it was simply awesome. It was like getting an infinite number of crayons and all the paper you could fill with drawings.&lt;/p&gt;
&lt;p&gt;Back to the question at hand. Today&amp;rsquo;s machines are so much more powerful, and the languages are more advanced, but that doesn&amp;rsquo;t do a lot for a 5-year-old kid that wants to play around with for loops and print statements. My answer came pretty quickly.&lt;/p&gt;
&lt;p&gt;I decided to write this up in a blog post because I think the topic is interesting. However, I&amp;rsquo;m also very interested in what other people would suggest. I suspect a biased answer from my experiences. I also expect that, sadly, my age may show in my answers as well.&lt;/p&gt;
&lt;h3 id=&#34;basic&#34;&gt;BASIC&lt;/h3&gt;
&lt;p&gt;Nobody will ever write a line of &lt;a href=&#34;http://en.wikipedia.org/wiki/BASIC&#34;&gt;BASIC&lt;/a&gt; code for anything real. However, I don&amp;rsquo;t think any future geek of my generation got through high school without going to Radio Shack and typing&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-basic&#34; data-lang=&#34;basic&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;10 &lt;span style=&#34;color:#66d9ef&#34;&gt;PRINT&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;JAMIE ROCKS!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;20 &lt;span style=&#34;color:#66d9ef&#34;&gt;GOTO&lt;/span&gt; 10
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Just being able to do simple conditionals, loops and control statements in the simple world of Basic is an amazing thing. Sure even a 5-year-old can pick up an iPhone and do some cool things with various programs. But that is &amp;ldquo;user land&amp;rdquo;. Those two lines above are not in &amp;ldquo;user land&amp;rdquo;, they are in programmer world, and that is different.&lt;/p&gt;
&lt;p&gt;For a kids 4 to 8 years old Basic can still be a lot of fun. Plus, they will learn the horrors of GOTO and realize that even though some modern languages accommodate &lt;code&gt;GOTO&lt;/code&gt; it should never be used.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/97975ae164.png&#34; alt=&#34;Pixel art of a small brown teddy bear with round ears, sitting upright against a white background.&#34; style=&#34;width: 64px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;Even though your modern machine will come with a ridiculous wealth of software it will not come with a BASIC interpreter. Open source software to the rescue with the &lt;a href=&#34;http://www.nicholson.com/rhn/basic/&#34;&gt;Chipmunk BASIC interpreter&lt;/a&gt;. I downloaded the Mac version and spent a little while reliving memories just now.&lt;/p&gt;
&lt;h3 id=&#34;logo&#34;&gt;Logo&lt;/h3&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/b1cc65a60e.jpg&#34; alt=&#34;Small turtle robot on a triangular track, used to teach children programming concepts.&#34; style=&#34;width: 100px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;The complement to showing young minds BASIC and all the text-based fun is a Logo interpreter. Logo is a fun little language where you move a &amp;ldquo;turtle&amp;rdquo; around on a canvas and place a pen up and down to create graphics. It&amp;rsquo;s a wonderful little language that you can make pictures in. How great for kids to see the result of their code!&lt;/p&gt;
&lt;p&gt;Logo interpreters were never bundled with machines but you can download &lt;a href=&#34;http://www.alancsmith.co.uk/logo/&#34;&gt;ACSLogo for Mac OS X&lt;/a&gt; that works well and is a free download.&lt;/p&gt;
&lt;h3 id=&#34;what-else&#34;&gt;What Else?&lt;/h3&gt;
&lt;p&gt;As I thought about these two selections they felt right. For kids interested in learning more about programming starting with BASIC and Logo just felt right. I did some searching on the topic and I found a number of other languages that are specifically designed for kids to learn to program. The ones I looked at seemed either &lt;a href=&#34;http://www.greenfoot.org/about/screenshots.html&#34;&gt;too much &amp;ldquo;user land&amp;rdquo;&lt;/a&gt;, clicking and dragging to me or they were simply &lt;a href=&#34;http://www.sjbaker.org/steve/software/hiccup.html&#34;&gt;overly verbose and silly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course if your kid is ready for something even more interesting, give them the really old beat up computer you have in the basement and install Linux on it and let them dive into the heart of the kernel. We live in amazing times! Maybe the crucial thing is to give your aspiring programmer the junky hardware to force creativity?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2010/01/22/played-with-twilio.html</link>
      <pubDate>Fri, 22 Jan 2010 21:06:33 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2010/01/23/played-with-twilio.html</guid>
      <description>&lt;p&gt;Played with &lt;a href=&#34;https://www.twilio.com/&#34;&gt;Twilio&lt;/a&gt; today. Impressed.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/11/10/what-the-bing.html</link>
      <pubDate>Tue, 10 Nov 2009 21:57:40 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/11/11/what-the-bing.html</guid>
      <description>&lt;p&gt;What the&amp;hellip; Bing is indexing one of my websites which has an explicit robots disallow. C&amp;rsquo;mon people!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Ridiculous Web Surveys</title>
      <link>https://www.thingelstad.com/2009/11/02/ridiculous-web-surveys.html</link>
      <pubDate>Mon, 02 Nov 2009 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/11/02/ridiculous-web-surveys.html</guid>
      <description>&lt;p&gt;It amazes me when I actually attempt to take a survey on the web how poorly designed they are. Most of the time I disregard them, but sometimes a product that I like runs a survey and I would like to offer my feedback. I got one of those recently and on the third page, which by the way is already two pages too long, they present this screen. The question being asked is, in essence, &amp;ldquo;what one feature do you most wish the product had?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/bb3455e403.png&#34; alt=&#34;Very-Bad-Web-Surveys&#34;&gt;&lt;/p&gt;
&lt;p&gt;To answer this they provide a list that is so long that it expands over the entire browser. In fact, that screen shot only shows about half of the options available. On a 30&amp;quot; monitor I could not get all the options on the screen at one time. Ridiculous. Dumb. Failure.&lt;/p&gt;
&lt;p&gt;At that point, I give up on the survey, and decide it is more fun to write this article. Sorry Strategic Vision, no feedback from me.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/10/29/ubuntu-karmic-koala.html</link>
      <pubDate>Thu, 29 Oct 2009 11:04:03 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/10/29/ubuntu-karmic-koala.html</guid>
      <description>&lt;p&gt;Ubuntu Karmic Koala? Where do they get these names. :-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Unix Lesson for Today</title>
      <link>https://www.thingelstad.com/2009/10/26/unix-lesson-for.html</link>
      <pubDate>Mon, 26 Oct 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/10/26/unix-lesson-for.html</guid>
      <description>&lt;p&gt;Learned after much difficulty today that &lt;code&gt;find&lt;/code&gt; doesn&amp;rsquo;t actually spawn a shell, and as a result trying to use backticks doesn&amp;rsquo;t work in a find exec parameter. However, you can tell find to invoke a shell to get around it. This works.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find . -name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*.DBF&amp;#34;&lt;/span&gt; -print -exec sh -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dbf2mysql -h localhost \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  -d mydatabase -t $(basename &amp;#34;$1&amp;#34; &amp;#34;.DBF&amp;#34;) -c -v \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  -P password -U username $1&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Inspired Software Keynote</title>
      <link>https://www.thingelstad.com/2009/10/12/inspired-software-keynote.html</link>
      <pubDate>Mon, 12 Oct 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/10/12/inspired-software-keynote.html</guid>
      <description>&lt;p&gt;I was honored this year to be invited by the &lt;a href=&#34;http://www.cs.umn.edu/&#34;&gt;Computer Science department&lt;/a&gt; at the &lt;a href=&#34;http://www.umn.edu/&#34;&gt;University of Minnesota&lt;/a&gt; to give the keynote for the &lt;a href=&#34;https://www.cs.umn.edu/community/outreach/open_house/2009_schedule&#34;&gt;2009 Computer Science Open House&lt;/a&gt;. The department has an open house every other year and it is a great opportunity for all the various research groups to present the work they are doing. The common area of the building was filled with researchers talking through their research and what the impacts will be. Really great stuff. Informative, inspiring, interesting.&lt;/p&gt;
&lt;p&gt;The audience for the keynote was a mix of students and people from the industry. I decided right away that I wanted to take the opportunity evangelize my perspective that software has a critical, fundamental, role in our society and that we as the people who make that software are responsible to create elegant and inspired environments. The anti-codemonkey.&lt;/p&gt;
&lt;p&gt;The talk was really put together in three sections. First, a quick brief on the huge impact that software has had on people. I was shocked in my research to find that 6 in 10 people, in the world, have a mobile phone. Talk about amazing adoption rates! I then made the case that open source is not just an alternative means of making code, but is perhaps the means that is best suited to the giant role that software plays in the world. And lastly, I wanted to reinforce the role that the individual developers has in making inspired software a reality.&lt;/p&gt;
&lt;p class=&#34;callout&#34;&gt;Related: &lt;a href=&#34;https://www.cs.umn.edu/community/outreach/open_house/past-open-house-keynote-speakers&#34;&gt;Open House Keynote Speakers&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Fancy Flash Websites on the iPhone</title>
      <link>https://www.thingelstad.com/2009/09/09/fancy-flash-websites.html</link>
      <pubDate>Wed, 09 Sep 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/09/09/fancy-flash-websites.html</guid>
      <description>&lt;p&gt;There are a bunch of reasons that you shouldn&amp;rsquo;t have a website that is just one big flash application. Here is one simple one. The other day we were thinking of going to Tejas for lunch and wanted to check their hours. Simple enough. So I brought up their website on my iPhone. This is what I got.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/0e740b3a26.png&#34; alt=&#34;iPhone browser showing Tejas Restaurant website as a blank orange screen with a tiny loading indicator, the Flash content completely failing to render.&#34; style=&#34;max-width: 320px; &#34; /&gt;
&lt;p&gt;Needless to say, totally and completely useless. In fact, it took me a while to even realize if I was on the right website. At least have the header, or something at all, in HTML! We went somewhere else.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>How to Expire Tweets on Twitter</title>
      <link>https://www.thingelstad.com/2009/08/28/how-to-expire.html</link>
      <pubDate>Fri, 28 Aug 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/08/28/how-to-expire.html</guid>
      <description>&lt;p&gt;A lot of people consider &lt;a href=&#34;http://twitter.com/&#34;&gt;Twitter&lt;/a&gt; a &lt;a href=&#34;http://en.wikipedia.org/wiki/Microblogging&#34;&gt;microblogging&lt;/a&gt; platform. I don&amp;rsquo;t really agree with that. I think &lt;a href=&#34;http://tumblr.com/&#34;&gt;Tumblr&lt;/a&gt; and &lt;a href=&#34;http://posterous.com/&#34;&gt;Posterous&lt;/a&gt; are great examples of microblogging platforms. Twitter, to me, is much more like a &amp;ldquo;micromessaging&amp;quot;platform. As such I think it has more in common with email and instant messenger than &lt;a href=&#34;http://www.wordpress.org/&#34;&gt;WordPress&lt;/a&gt; and Tumblr.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been thinking more recently about the digital trails we all leave and it struck me that Twitter really should be managed more like messaging applications. In those applications, I tend to have an expiration date for things. To be formal about it, there is a retention policy for that content. Twitter needs a retention policy. Do I really care to have archived forever the Tweet about lunch from three years ago? No. Does Google need to index it? No. The only practical use I can think of for a long history on Twitter is to be able to profile me for advertising better. No thanks.&lt;/p&gt;
&lt;p&gt;I did a little looking and couldn&amp;rsquo;t find anything to do this, so whipped up a Ruby program with the handy Twitter4R library to do what I want.&lt;/p&gt;
&lt;p&gt;This script requires &lt;a href=&#34;http://www.ruby-lang.org/en/&#34;&gt;Ruby&lt;/a&gt;, the &lt;a href=&#34;http://twitter4r.rubyforge.org/&#34;&gt;Twitter4R&lt;/a&gt; library and is intended to be ran on a schedule with a utility like cron. Edit the code to use your login credentials and set the days that you want to expire tweets after. This program will then repeatedly look at your timeline and &lt;strong&gt;delete status messages that occur more than the number of days&lt;/strong&gt; you specify ago.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/ruby&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Get requires out of the way&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rubygems&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gem(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;twitter4r&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;twitter&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;time&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Configuration parameters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;twitter_username &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;YOUR_USERNAME&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;twitter_password &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;YOUR_PASSWORD&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;delete_after_days &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Let&amp;#39;s get a Twitter Client created&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Twitter&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Client&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#e6db74&#34;&gt;:login&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; twitter_username, &lt;span style=&#34;color:#e6db74&#34;&gt;:password&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; twitter_password)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Expire deadline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;expire_before &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Time&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;now &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; (delete_after_days &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;60&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;60&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;expire_ids &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;puts &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Expiring all Twitter updates prior to &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;expire_before&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;to_s&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Iterate through timeline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Purposefully get a large number of updates. As written, if your delete_after_time does not&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# occur within the number of updates this script will never see an update that is old&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# enough and never delete anything. It would be nice if we could request the timeline from&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# the oldest tweet forward, but I cannot find a way to do that with Twitter4R. (The :since&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# parameter does not seem to do anything for a :me request)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# If you have problems with this scripte set the count to something like the number&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# of tweets you would create in delete_after_time days.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Using the defaults, if you Tweet more than 200 times in 14 days this will never expire&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# anything. If you try to use an expire length that is very long, like 365, this many not&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# work at all.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;timeline &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; client&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;timeline_for(&lt;span style=&#34;color:#e6db74&#34;&gt;:me&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;:count&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;status&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; status&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;created_at &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; expire_before
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    puts &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Queueing delete status ID &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;status&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;id&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; created at &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;status&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;created_at&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  (&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;status&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;text&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;).&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    expire_ids&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;push(status&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;id)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Now we&amp;#39;ll sort the array, this will have the affect of putting the oldest items first in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# the list to be deleted.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;expire_ids&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sort!
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;puts &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Deleting &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;expire_ids&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;length&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; tweets.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Now let&amp;#39;s delete the stuff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# The Twitter4R library delete method seems to be completely broken. So, rather than a simple&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# client.status(:delete, delete_status) we are going to go right to the API methods on Twitter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# this is ugly, but we are just going to spawn curl to do this work for us. And I&amp;#39;m sure I&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# could do this without execing curl in the shell, but, whatever...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Note: the delete method is not rate limited.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;expire_ids&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;each &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;delete_status&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  puts &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Deleting &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;delete_status&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;`curl -s -u &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;twitter_username&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;twitter_password&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; --http-request DELETE [twitter.com/statuses/...](http://twitter.com/statuses/destroy/#){delete_status}.xml`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This script does not do &lt;strong&gt;any&lt;/strong&gt; checks to make sure the delete commands succeeded. Consider yourself warned. I don&amp;rsquo;t think it matters much since if it fails a delete it will just try again the next time.&lt;/p&gt;
&lt;p&gt;Since the &lt;a href=&#34;http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses%C2%A0destroy&#34;&gt;delete method&lt;/a&gt; is not rate limited, you could run this whenever. However, I would suggest to run it at once a night, perhaps late in the evening, so that you don&amp;rsquo;t interfere with the Twitter API usage from your normal Twitter clients.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>TED Video: Hans Rosling Dataset Mindset</title>
      <link>https://www.thingelstad.com/2009/08/27/ted-video-hans.html</link>
      <pubDate>Thu, 27 Aug 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/08/27/ted-video-hans.html</guid>
      <description>&lt;p&gt;The visuals in this talk by &lt;a href=&#34;http://www.ted.com/talks/hans_rosling_at_state.html&#34;&gt;Hans Rosling at TED&lt;/a&gt; blew me away. Animated displays of 200 years of economic data about the world.&lt;/p&gt;
&lt;div style=&#34;max-width:854px&#34;&gt;&lt;div style=&#34;position:relative;height:0;padding-bottom:56.25%&#34;&gt;&lt;iframe src=&#34;https://embed.ted.com/talks/hans_rosling_let_my_dataset_change_your_mindset&#34; width=&#34;854&#34; height=&#34;480&#34; style=&#34;position:absolute;left:0;top:0;width:100%;height:100%&#34; frameborder=&#34;0&#34; scrolling=&#34;no&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Why don&#39;t RSS Readers support kill files?</title>
      <link>https://www.thingelstad.com/2009/08/23/why-dont-rss.html</link>
      <pubDate>Sun, 23 Aug 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/08/23/why-dont-rss.html</guid>
      <description>&lt;p&gt;As I was flowing through my &lt;a href=&#34;http://en.wikipedia.org/wiki/Rss&#34;&gt;RSS&lt;/a&gt; subscriptions in &lt;a href=&#34;http://www.google.com/reader/&#34;&gt;Google Reader&lt;/a&gt; I was struck for the millionth time how much everyone likes to write about &amp;ldquo;All Things Twitter&amp;rdquo;. &amp;ldquo;Man, I wish I could just zap these items from these feeds&amp;rdquo; I thought. Then it hit me that I used to do that all the time in my favorite &lt;a href=&#34;http://en.wikipedia.org/wiki/Usenet&#34;&gt;Usenet&lt;/a&gt; News Reader &lt;a href=&#34;http://en.wikipedia.org/wiki/Nn_(newsreader)&#34;&gt;nn&lt;/a&gt; nearly 20 years ago! Usenet programs nearly all supported killfiles, and it was great.&lt;/p&gt;
&lt;p&gt;What is a &lt;a href=&#34;http://en.wikipedia.org/wiki/Kill_file&#34;&gt;kill file&lt;/a&gt;? From Wikipedia:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A kill file (also killfile, bozo bin or twit list) is a per-user file
used by some Usenet reading programs (originally Larry Wall&amp;rsquo;s rn) to
discard summarily (without presenting for reading) articles matching
some particularly uninteresting (or unwanted) patterns of subject,
author, or other header lines.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is exactly what we need in our RSS readers. Please, please, pretty please?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/08/22/no-content-found.html</link>
      <pubDate>Sat, 22 Aug 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/08/22/no-content-found.html</guid>
      <description>&lt;p&gt;I seem to be very focused on the themes of &lt;a href=&#34;http://creativecommons.org/&#34;&gt;Creative
Commons&lt;/a&gt;, &lt;a href=&#34;http://www.fsf.org/&#34;&gt;GNU Public
License&lt;/a&gt; and having control of my computing future
lately. This is a good thing.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/08/20/no-content-found.html</link>
      <pubDate>Thu, 20 Aug 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/08/20/no-content-found.html</guid>
      <description>&lt;p&gt;Getting &lt;a href=&#34;https://www.nginx.com&#34;&gt;nginx&lt;/a&gt; and &lt;a href=&#34;https://php-fpm.org&#34;&gt;php-fpm&lt;/a&gt; working to make things zippy.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Dropping the www</title>
      <link>https://www.thingelstad.com/2009/08/12/dropping-the-www.html</link>
      <pubDate>Wed, 12 Aug 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/08/12/dropping-the-www.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve debated this many times, but finally decided to pull the trigger and remove the &amp;ldquo;www.&amp;rdquo; prefix from my website. This really isn&amp;rsquo;t anything that anybody need worry about. You will be redirected as appropriate to the right spot. I&amp;rsquo;ve been hesitant to drop the www because the search engines see it as &lt;a href=&#34;https://www.thingelstad.com&#34;&gt;www.thingelstad.com&lt;/a&gt;, not thingelstad.com. However, &lt;a href=&#34;http://www.google.com/webmasters/&#34;&gt;Google Webmaster tools&lt;/a&gt; seems to make this an easy change.&lt;/p&gt;
&lt;p&gt;So, away with the &amp;ldquo;www.&amp;rdquo;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My Solution for Microsoft to Get Nerds Back</title>
      <link>https://www.thingelstad.com/2009/07/30/my-solution-for.html</link>
      <pubDate>Thu, 30 Jul 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/07/30/my-solution-for.html</guid>
      <description>&lt;p&gt;I was catching up on my &lt;a href=&#34;http://daringfireball.net/&#34;&gt;Daring Fireball&lt;/a&gt; feed today and saw that &lt;a href=&#34;http://en.wikipedia.org/wiki/John_Gruber&#34;&gt;John Gruber&lt;/a&gt; had put together a longer post on &lt;a href=&#34;http://daringfireball.net/2009/07/microsofts_long_slow_decline&#34;&gt;Microsoft&amp;rsquo;s earnings shortfall&lt;/a&gt;. It&amp;rsquo;s a worthwhile read, and I think that Gruber is correct in suggesting that Microsoft has begun a very difficult time and is going to be there for a while.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Today that is simply no longer the case. Microsoft has lost all but a
sliver of this entire market. People who love computers overwhelmingly
prefer to use a Mac today. &lt;strong&gt;Microsoft&amp;rsquo;s core problem is that they
have lost the hearts of computer enthusiasts.&lt;/strong&gt; &lt;em&gt;(Emphasis mine)&lt;/em&gt;
Regular people don&amp;rsquo;t think about their choice of computer platform in
detail and with passion like nerds do because, duh, they are not
nerds. But nerds are leading indicators.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, let me be particularly cautious here. This is combustible territory I realize. A couple of months ago I was asked by a couple of people for my opinion of what Microsoft should do to change direction. After considering it for a while I came up with a simple two step plan that would make me think that something big had happened at Microsoft.&lt;/p&gt;
&lt;p&gt;Neither of these two steps I&amp;rsquo;m going to suggest are things that average consumers would notice, or even really care about. My point, agreeing with Gruber, is to do something that will get the nerds to take notice. However, before proceeding, let me come clean that I have been a huge Microsoft advocate. &lt;a href=&#34;http://www.marketwatch.com/&#34;&gt;MarketWatch.com&lt;/a&gt; is one of the largest financial websites on the Internet, and is entirely built on Windows technology. I&amp;rsquo;ve advocated with people the benefits of Windows development environments. I&amp;rsquo;ve even been &lt;a href=&#34;http://download.microsoft.com/documents/customerevidence/8620_Windows_DNA_Helps_MarketWatch.com_D.doc&#34;&gt;quoted in Microsoft case studies&lt;/a&gt;. With all that said, I can&amp;rsquo;t imagine using Windows in a new company, and I haven&amp;rsquo;t seen an early stage company using Windows for years now.&lt;/p&gt;
&lt;h3 id=&#34;unix-has-won&#34;&gt;Unix Has Won&lt;/h3&gt;
&lt;p&gt;My first suggestion for Microsoft is to wave the white flag on the &lt;a href=&#34;http://en.wikipedia.org/wiki/Architecture_of_Windows_NT&#34;&gt;NT kernel&lt;/a&gt;. Dump it. Dump it and replace it with a &lt;a href=&#34;http://www.linux.org/&#34;&gt;Linux&lt;/a&gt;, &lt;a href=&#34;http://www.freebsd.org/&#34;&gt;BSD&lt;/a&gt;, &lt;a href=&#34;http://en.wikipedia.org/wiki/Mach_(kernel)&#34;&gt;Mach&lt;/a&gt; or other Unix-type kernel. I&amp;rsquo;m not going to get into arguments about the benefits of the NT kernel and its &lt;a href=&#34;http://en.wikipedia.org/wiki/OpenVMS&#34;&gt;VMS&lt;/a&gt; lineage. This isn&amp;rsquo;t a point of &lt;a href=&#34;http://en.wikipedia.org/wiki/Thread_(computer_science)&#34;&gt;threading&lt;/a&gt; models or &lt;a href=&#34;http://en.wikipedia.org/wiki/Memory_management&#34;&gt;memory management&lt;/a&gt;. My point is both a technical and cultural one. It seems unnecessary to continue to shoulder the burden of the NT kernel. Move to an &lt;a href=&#34;http://en.wikipedia.org/wiki/Open_source&#34;&gt;open-source&lt;/a&gt; Linux kernel and stop carrying all the water yourself.&lt;/p&gt;
&lt;p&gt;What happens with Windows? Not much for the user. Microsoft should do what Apple did when it made Mac OS X. Wholesale change the kernel but keep the user experience pretty much the same. The engine is new and different, but users don&amp;rsquo;t need to know that. Meanwhile, the nerds of the world can enjoy a native shell with the thousands of Unix executables available native on the platform.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re saying to yourself &amp;ldquo;Jamie, the kernel is not Microsoft&amp;rsquo;s problem!&amp;rdquo; you are likely right. I&amp;rsquo;m not suggesting that &lt;a href=&#34;http://en.wikipedia.org/wiki/Blue_screen_of_death&#34;&gt;blue screens of death&lt;/a&gt; are regular and that the kernel is broken. I&amp;rsquo;m suggesting that Microsoft needs to adopt a new culture, a new perspective on software. They need to force themselves onto a new path that acknowledges what has happened in the open-source world for the last 20 years. Adopting an open-source Unix style kernel would send a very clear, and very loud message that things have changed. That the future is going to be different. A new path is being broken.&lt;/p&gt;
&lt;h3 id=&#34;stop-fighting-the-web-browsers&#34;&gt;Stop Fighting the Web Browsers&lt;/h3&gt;
&lt;p&gt;My second suggestion rings similar to the first, but is in a different area. I&amp;rsquo;m not going to suggest that Microsoft should abandon Internet Explorer. They can and should do what they can to make a great browser that works amazingly in Windows. Internet Explorer should be that. However, they should immediately ditch the rendering engine in IE and move to one of the open-source ones. &lt;a href=&#34;http://webkit.org/&#34;&gt;WebKit&lt;/a&gt;, &lt;a href=&#34;https://developer.mozilla.org/en/Gecko&#34;&gt;Gecko&lt;/a&gt;, anything other than &lt;a href=&#34;http://en.wikipedia.org/wiki/Trident_(layout_engine)&#34;&gt;Trident&lt;/a&gt; (or MSHTML).&lt;/p&gt;
&lt;p&gt;The nerds of the world, the ones that build the websites that everyone uses, know intimately how bad &lt;a href=&#34;http://www.microsoft.com/windows/internet-explorer/default.aspx&#34;&gt;Internet Explorer&lt;/a&gt; is. At this point, IE&amp;rsquo;s lack of compliance and its adoption of web standards is so poor that I would argue they are impeding the progress of the web. Ask any web developer and they will tell you how they could make amazingly better sites if only they could rely on the major browsers to behave well. By and large &lt;a href=&#34;http://www.mozilla.com/en-US/firefox/firefox.html&#34;&gt;Firefox&lt;/a&gt; (Gecko), &lt;a href=&#34;http://www.apple.com/safari/&#34;&gt;Safari&lt;/a&gt; (WebKit), &lt;a href=&#34;http://www.google.com/chrome&#34;&gt;Chrome&lt;/a&gt; (WebKit) all do. Even &lt;a href=&#34;http://www.opera.com/&#34;&gt;Opera&lt;/a&gt; (&lt;a href=&#34;http://en.wikipedia.org/wiki/Presto_(layout_engine)&#34;&gt;Presto&lt;/a&gt;). But Internet Explorer? No way. Microsoft has created a problem for everyone else, and they need to fix it.&lt;/p&gt;
&lt;p&gt;Again, changing the rendering engine won&amp;rsquo;t be noticeable to most people (although when sites work better and load faster they will notice that). This is another move that would signal to the leading part of the technology market, that Microsoft &amp;ldquo;gets it&amp;rdquo;. That they have woken from a long slumber and are going to do it right now.&lt;/p&gt;
&lt;h3 id=&#34;two-steps-thats-it&#34;&gt;Two Steps, That&amp;rsquo;s it&amp;hellip;&lt;/h3&gt;
&lt;p&gt;With those two moves Microsoft could wake me up, and I think a lot of other people too. They would embrace the open-source movement. They would stop positioning themselves as them against everyone else in the entire world. And, on top of it they could save money by owning the maintenance of less software, and they would have products that worked better.&lt;/p&gt;
&lt;p&gt;Of course, I doubt these things would ever happen. But then again, I also didn&amp;rsquo;t think Macs would ever have &lt;a href=&#34;http://www.apple.com/mightymouse/&#34;&gt;2-button mice&lt;/a&gt; or use Intel chips, and that all came true. Microsoft isn&amp;rsquo;t a bad company, and they aren&amp;rsquo;t going away. But they do need to recapture the hearts of people who are passionate about this stuff. This is my recommendation for how they can do that.&lt;/p&gt;
&lt;h3 id=&#34;apples-two-steps&#34;&gt;Apple&amp;rsquo;s Two Steps&lt;/h3&gt;
&lt;p&gt;Friends that have known me for a very long time know that I used to be a Mac guy for many years, and I gave up on Apple completely. I was a Mac user on &lt;a href=&#34;http://en.wikipedia.org/wiki/History_of_Mac_OS#System_1.2C_2.2C_3_.26_4&#34;&gt;System 5&lt;/a&gt;, &lt;a href=&#34;http://en.wikipedia.org/wiki/System_6&#34;&gt;System 6&lt;/a&gt; and &lt;a href=&#34;http://en.wikipedia.org/wiki/System_7&#34;&gt;System 7&lt;/a&gt;. I really loved my Macs. But, I bid the platform farewell after experiencing one too many operating system failures. I never looked back and used Windows NT and it&amp;rsquo;s follow-on versions for a many, many years.&lt;/p&gt;
&lt;p&gt;A couple of years ago I converted every computer in the house back to Macs and that is pretty much all I use now. What made me come back? Two things.&lt;/p&gt;
&lt;p&gt;First, Apple bought &lt;a href=&#34;http://en.wikipedia.org/wiki/NeXT&#34;&gt;NeXT&lt;/a&gt; computer and adopted it&amp;rsquo;s Mach-based kernel and underlying operating system. They didn&amp;rsquo;t change the user experience in a major way, but underneath it was all different. A real operating system, that didn&amp;rsquo;t crash.&lt;/p&gt;
&lt;p&gt;The second change was to abandon the Motorola &lt;a href=&#34;http://en.wikipedia.org/wiki/PowerPC&#34;&gt;PowerPC&lt;/a&gt; processor. Intel was clearly the way to go, but it seemed unlikely that they ever would.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&#34;https://www.thingelstad.com/2004/11/26/imac-g.html&#34;&gt;bought my first Mac again&lt;/a&gt; when Mac OS X 10.3 was out. It was still on the Motorola chip, but I took a flyer. Shortly thereafter they moved to Intel chip and I&amp;rsquo;ve not looked back.&lt;/p&gt;
&lt;p&gt;My point in telling this is to highlight how, for me at least, these two changes made all the difference in the world. Perhaps the two changes I&amp;rsquo;ve outlined above could do the same for Microsoft.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Fancy Email Signatures with hCard Microformat</title>
      <link>https://www.thingelstad.com/2009/07/15/fancy-email-signatures.html</link>
      <pubDate>Wed, 15 Jul 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/07/15/fancy-email-signatures.html</guid>
      <description>&lt;p&gt;I recently redid my email signature. I&amp;rsquo;ve been using an HTML signature for a while and my friend &lt;a href=&#34;http://www.thetangens.net/&#34;&gt;Kent&lt;/a&gt; complained to me one day that my emails always wrap odd on the iPhone. I figured out that I had an HTML element with a minimum width around 300 pixels. Fine for a computer, but it made the iPhone mail program scroll - in the worst way possible - horizontally.&lt;/p&gt;
&lt;p&gt;I figured since I was going to redo it I would simplify, but also wanted to add some function. So, I decided to make use the &lt;a href=&#34;http://microformats.org/wiki/hcard&#34;&gt;hCard microformat&lt;/a&gt; in the signature. It wasn&amp;rsquo;t too hard to get right, and it looks normal when viewed but an hCard aware client would see the data markup.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;width: 100%; margin: 14pt 0px; padding: 2px; border-top: 1px #dddddd dashed; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 10pt; color: black;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hcard-Jamie-Thingelstad-Personal&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vcard&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;white-space: nowrap; font-weight: bold;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;url fn&amp;#34;&lt;/span&gt;&amp;gt;Jamie Thingelstad&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mailto:jamie@thingelstad.com&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt;&amp;gt;jamie@thingelstad.com&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;white-space: nowrap;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;tel&amp;#34;&lt;/span&gt;&amp;gt;mobile: &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&amp;gt;612-810-3699&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;find me on &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;aim:addbuddy?screenname=jthingelstad&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&amp;gt;AIM&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://twitter.com/thingles&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&amp;gt;Twitter&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://www.facebook.com/thingles&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&amp;gt;Facebook&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://www.linkedin.com/in/jthingelstad&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&amp;gt;LinkedIn&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I found two tools that helped with this a lot. There is an &lt;a href=&#34;http://microformats.org/code/hcard/creator&#34;&gt;hCard creator&lt;/a&gt; that helped with figuring out what the structure should look like, and very importantly an &lt;a href=&#34;http://hcard.geekhood.net/&#34;&gt;hCard validator&lt;/a&gt; that you can pass a code fragment into and it validates and decodes it.&lt;/p&gt;
&lt;p&gt;With all that said, I don&amp;rsquo;t think there is a single email client that will honor hCard. But, if one comes along I&amp;rsquo;m ready.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Xefer Twitter Visualization</title>
      <link>https://www.thingelstad.com/2009/07/01/xefer-twitter-visualization.html</link>
      <pubDate>Wed, 01 Jul 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/07/01/xefer-twitter-visualization.html</guid>
      <description>&lt;p&gt;This graphic can generally be put in the pile of visualizations of stuff that isn&amp;rsquo;t important, but the display is cool. This &lt;a href=&#34;http://www.xefer.com/twitter/&#34;&gt;tool from Xefer&lt;/a&gt; looks at your Twitter behavior distribution over days of the week and time.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/7060820128.png&#34; alt=&#34;Bubble chart grid showing Twitter activity by day of week versus hour of day, with bar charts summarizing totals per day and hour.&#34;&gt;
&lt;p&gt;Happily, it seems I don&amp;rsquo;t use &lt;a href=&#34;http://twitter.com/&#34;&gt;Twitter&lt;/a&gt; in my sleep.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Unordered Lists to Comma Separated List</title>
      <link>https://www.thingelstad.com/2009/06/05/unordered-lists-to.html</link>
      <pubDate>Fri, 05 Jun 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/06/05/unordered-lists-to.html</guid>
      <description>&lt;p&gt;I was tweaking some layout in Tumblr today and I really wanted to take a list of tags and display them with proper grammar. For example, I wanted to have commas in the right places and to use the proper singular and plural forms as needed. My goal was something like.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;At 9pm with tags Mazie, Baseball and St. Paul Saints.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Or, if there was only one tag.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;At 9pm with tag Mazie.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The trick is that Tumblr only provides a way to iterate through the list of tags and you can&amp;rsquo;t do any funky logic in there. This is actually a benefit, since it forced me to figure out the right way to do this with CSS. After a little searching I found a really old post from 2005 &lt;a href=&#34;http://milov.nl/2883&#34;&gt;explaining comma-separated list elements&lt;/a&gt; that was pretty close to what I wanted. I did some tweaking on it and came up with the following CSS block to do exactly what I wanted.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/* Styling for a comma separated list of values from a ul */
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ul.comma-separated { display: inline; list-style: none; margin: 0; padding: 0; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ul.comma-separated li { display: inline; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/* Put the correct label in front, this should be plural for multiple tags */
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ul.comma-separated li:first-child:before { content:&amp;#34;tags &amp;#34;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/* The comma we are looking for. */
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ul.comma-separated li:before { content: &amp;#34;, &amp;#34;; white-space: pre;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/* The last element should not have a comma and should be followed with a period. */
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ul.comma-separated li:last-child:before { content:&amp;#34; and &amp;#34;; white-space: pre;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ul.comma-separated li:last-child:after { content: &amp;#34;.&amp;#34;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/* Special case required to handle a ul with only one item. */
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ul.comma-separated li:only-child:before { content:&amp;#34;tag &amp;#34;; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will take a block of HTML like this&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;ul&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;comma-separated&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;Mazie&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;Baseball&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;St. Paul Saints&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;ul&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and display it exactly how I want.&lt;/p&gt;
&lt;p&gt;This was a great exercise. I&amp;rsquo;m not a CSS guru and I don&amp;rsquo;t tend to look to CSS to solve this type of problem. I immediately wanted to start working some magic inside of a loop in the code and handle the logic there. This is much simpler, and has the huge benefit of being able to modify the contents after page load with Javascript and have the formatting dynamically adjust as needed.&lt;/p&gt;
&lt;p&gt;Now I just need to move this super smart CSS into my WordPress site as well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/05/21/now-reading-for.html</link>
      <pubDate>Thu, 21 May 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/05/21/now-reading-for.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://heliologue.com/projects/now-reading-for-wordpress-27/&#34;&gt;Now Reading for Wordpress 2.7+&lt;/a&gt;, a &amp;ldquo;more updated&amp;rdquo; version of the Now Reading plugin for WordPress.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/05/09/finally-took-the.html</link>
      <pubDate>Sat, 09 May 2009 19:41:13 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/05/10/finally-took-the.html</guid>
      <description>&lt;p&gt;Finally took the time to get all my home directory dotfiles into a Git repo. Feel happy and tidy.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/28/im-considering-a.html</link>
      <pubDate>Tue, 28 Apr 2009 19:57:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/29/im-considering-a.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m considering a &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; theme change for my site. Any pointers for awesome, clean themes? It must be on white. (Finding themes is hard!)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/28/installing-ubuntu-desktop.html</link>
      <pubDate>Tue, 28 Apr 2009 09:17:08 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/28/installing-ubuntu-desktop.html</guid>
      <description>&lt;p&gt;Installing Ubuntu 9.04 desktop edition in a VM on my MacBook Pro. I want to play with the pretty bits in addition to the server bits.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/27/bummed-that-i.html</link>
      <pubDate>Mon, 27 Apr 2009 20:16:29 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/28/bummed-that-i.html</guid>
      <description>&lt;p&gt;Bummed that I couldn&amp;rsquo;t make &lt;a href=&#34;https://www.meetup.com/ruby-mn/&#34;&gt;ruby.mn&lt;/a&gt; tonight. &lt;wave/&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/26/starting-ubuntu-upgrade.html</link>
      <pubDate>Sun, 26 Apr 2009 06:17:51 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/26/starting-ubuntu-upgrade.html</guid>
      <description>&lt;p&gt;Starting Ubuntu 9.04 upgrade on last two boxes.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Open Font Library</title>
      <link>https://www.thingelstad.com/2009/04/25/open-font-library.html</link>
      <pubDate>Sat, 25 Apr 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/25/open-font-library.html</guid>
      <description>&lt;p&gt;CSS3 is bringing &lt;code&gt;@font-face&lt;/code&gt;, which finally allows us to use a variety of real fonts on the web. Huzzah! This site offers a variety of &lt;a href=&#34;http://openfontlibrary.fontly.org/&#34;&gt;fonts in an Open Font License&lt;/a&gt;. Hopefully the number of fonts available will grow over time.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/24/starting-nd-ubuntu.html</link>
      <pubDate>Fri, 24 Apr 2009 21:00:01 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/25/starting-nd-ubuntu.html</guid>
      <description>&lt;p&gt;Starting 2nd Ubuntu upgrade to 9.04. First one went very smooth.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/23/wha-ubuntu-released.html</link>
      <pubDate>Thu, 23 Apr 2009 08:06:27 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/23/wha-ubuntu-released.html</guid>
      <description>&lt;p&gt;Wha? Ubuntu 9.04 released? Time for &lt;code&gt;do-release-upgrade&lt;/code&gt;?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/22/suspenders.html</link>
      <pubDate>Wed, 22 Apr 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/22/suspenders.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://giantrobots.thoughtbot.com/2008/10/21/suspenders&#34;&gt;Suspenders&lt;/a&gt; ← Cool starter project to get you going with your Rails work faster. Nice.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/11/you-could-spend.html</link>
      <pubDate>Sat, 11 Apr 2009 09:52:29 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/11/you-could-spend.html</guid>
      <description>&lt;p&gt;You could spend a nearly infinite amount of time goofing around with &lt;a href=&#34;https://www.cacti.net/&#34;&gt;Cacti&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/11/it-seems-fitting.html</link>
      <pubDate>Sat, 11 Apr 2009 08:19:32 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/11/it-seems-fitting.html</guid>
      <description>&lt;p&gt;It seems fitting that &lt;code&gt;make doc&lt;/code&gt; for git takes way longer than making the binaries.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/04/02/amazon-elastic-mapreduce.html</link>
      <pubDate>Thu, 02 Apr 2009 07:15:41 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/04/02/amazon-elastic-mapreduce.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://aws.amazon.com/emr/&#34;&gt;Amazon Elastic MapReduce&lt;/a&gt; looks interesting. Opens up some new solution paths!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Tracking Twitter Followers with Cacti</title>
      <link>https://www.thingelstad.com/2009/03/30/tracking-twitter-followers.html</link>
      <pubDate>Mon, 30 Mar 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/03/30/tracking-twitter-followers.html</guid>
      <description>&lt;p&gt;Two weeks ago &lt;a href=&#34;https://www.thingelstad.com/2009/03/16/guest-on-minnesota.html&#34;&gt;I was one of the guests on Midmorning on Minnesota Public Radio&lt;/a&gt; for a show about &lt;a href=&#34;http://twitter.com/&#34;&gt;Twitter&lt;/a&gt;. The result has been a lot of conversations lately about Twitter. I was intrigued to see how many people had started following me from the show and before you knew it I felt the absolute need to see Twitter follower graphs in my favorite graphing tool, &lt;a href=&#34;http://www.cacti.net/&#34;&gt;Cacti&lt;/a&gt;. I did a quick search and was surprised to not find anyone doing this already.&lt;/p&gt;
&lt;p&gt;As with anything Cacti-related there was a lot of trial and error to getting this working, and I&amp;rsquo;m positive smarter people than I can do this with much more elegance, but I got it working good enough for me and the output is pretty slick.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to join me in graph-tastic, &lt;a href=&#34;http://oss.oetiker.ch/rrdtool/&#34;&gt;RRDtool&lt;/a&gt;, Twitter navel gazing here is how. And I do know there are &lt;a href=&#34;http://twittercounter.com/thingles/month&#34;&gt;services that do these graphs&lt;/a&gt;, but I don&amp;rsquo;t believe any of them do anything more than daily counts. This samples every 5 minutes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/213ccfc3bc.png&#34; alt=&#34;detail-thingles-followers.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;I figured I&amp;rsquo;d do this in &lt;a href=&#34;http://www.ruby-lang.org/en/&#34;&gt;Ruby&lt;/a&gt; just to make the &lt;a href=&#34;http://www.perl.org/&#34;&gt;Perl&lt;/a&gt; lovers in the crowd uncomfortable. At first I tried to use the &lt;a href=&#34;http://twitter4r.rubyforge.org/&#34;&gt;Twitter4R&lt;/a&gt; gem to get to the &lt;a href=&#34;http://apiwiki.twitter.com/&#34;&gt;Twitter API&lt;/a&gt; but that had issues, mainly it couldn&amp;rsquo;t deal with paging in the Twitter API and thus just returned 100 followers. Instead, I went straight to the Twitter API and found a better call in the &lt;a href=&#34;http://apiwiki.twitter.com/REST+API+Documentation#SocialGraphMethods&#34;&gt;social graph functions&lt;/a&gt; that just returns the id&amp;rsquo;s of people you follow or follow you. Less data, lighter, and no paging! Yeah! Here is the incredibly simple code that we&amp;rsquo;ll use to get Cacti the data it wants. All the comments will make this easy to follow. 😊&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rubygems&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;open-uri&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;json&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_count&lt;/span&gt;(url)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    buffer &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; open(url, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UserAgent&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Ruby-Wget&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;read
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;JSON&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;parse(buffer)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; result&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;length
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_follower_count&lt;/span&gt;(user)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    url &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;[twitter.com/followers...](http://twitter.com/followers/ids/&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; user &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.json&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; get_count(url)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_friend_count&lt;/span&gt;(user)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    url &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;[twitter.com/friends/i...](http://twitter.com/friends/ids/&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; user &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.json&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; get_count(url)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;followers &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; get_follower_count(&lt;span style=&#34;color:#66d9ef&#34;&gt;ARGV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;friends &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; get_friend_count(&lt;span style=&#34;color:#66d9ef&#34;&gt;ARGV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;puts &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;followers:&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;followers&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; friends:&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#{&lt;/span&gt;friends&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that all this does is output one line that looks like this:&lt;/p&gt;
&lt;pre&gt;
followers:464 friends:117
&lt;/pre&gt;
&lt;p&gt;Cacti uses a simple name:value format to parse output from shell scripts. This little bit of Ruby does have some Gem dependencies, mainly a &lt;a href=&#34;http://www.json.org/&#34;&gt;JSON&lt;/a&gt; library to parse the mess we get back from the API calls into something that Ruby likes.&lt;/p&gt;
&lt;p&gt;This script takes the username as a command line parameter. This is so you can multiple twitter accounts in Cacti. Not only can you gaze at your own navel, but you can gaze at your friends navels too!&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s get to the point and show what the win is for this before we go through the Cacti configuration stuff. Here is the simple graph that we can use to track follower and friend counts over time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/09ddd370f3.png&#34; alt=&#34;graph image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t create Cacti templates for any of this, if you want to set it up yourself here are screen shots of the setup.&lt;/p&gt;
&lt;p&gt;After you have put the follower-count.rb script somewhere and verified that it works from the command line you need to make a data input method in Cacti to get the data. Here is what that looks like (click on the image to enlarge). This is where you will pass in the Twitter username. If you want to track more than one Twitter account you just create another Data Input Method and pass a different username.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you tried to track dozens or hundreds of users using this method I expect you will start hitting Twitter API request/hour limits. I currently track three accounts, which is 36 requests an hour. I haven&amp;rsquo;t hit any problems with that, but I would expect that if you were trying to track 100 accounts, and thus requesting 1,200 API calls, you would be denied.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/2f27fe5827.png&#34; alt=&#34;data-input-method.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;After you define the Data Input Method we need to create a Data Source. This one is the most tricky to get right. You need to make sure that you have the right RRA&amp;rsquo;s selected and it is &lt;strong&gt;very&lt;/strong&gt; important to get both of the Data Source Items defined and mapped to the right Internal Data Source Name. Just make the screens look like this and it will be fine. &lt;strong&gt;It is very important that you do not have a Maximum Value defined.&lt;/strong&gt; By default, Cacti will sometimes put 100 in there and cause the scripts return value to be ignored!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Remember that you will need to let a couple of poller intervals pass before the data is available for graphs to work. If you make the graphs right away expect some errors until data is available.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/17ff5f08d3.png&#34; alt=&#34;data-source-1.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here is the 2nd Data Source Item defined.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/188dd301b4.png&#34; alt=&#34;data-source-2.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;After all this we need to make the graph itself. Here is where it would be really nice for everyone else if I defined a graph template. However, I have no clue how to make a graph template so you&amp;rsquo;ll have to do it like I did, by hand. You can do this however you like, here is the most typical setup I use with 8 Graph Items.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/6267b744a2.png&#34; alt=&#34;graph.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;If your count of friends or followers is very high, and dissimilar, you may find it helpful to graph followers and friends on different graphs so you can see changes easier. This is what the first graph in this post shows that you cannot see if you put that same line on a graph with a bigger range for a Y-scale.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My Robot Returns</title>
      <link>https://www.thingelstad.com/2009/03/24/my-robot-returns.html</link>
      <pubDate>Tue, 24 Mar 2009 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/03/24/my-robot-returns.html</guid>
      <description>&lt;p&gt;I missed the 2 year birthday of my &lt;a href=&#34;http://twitter.com/&#34;&gt;Twitter&lt;/a&gt; robot, &lt;a href=&#34;http://twitter.com/thinglesbot&#34;&gt;Thinglesbot&lt;/a&gt;. He turned 2 on March 11. He was limping along though having lost connections to various sensors in the house and became a bit uninteresting. I finally took a little time tonight to get him wired up again.&lt;/p&gt;
&lt;p&gt;Happily he now breaths &lt;a href=&#34;http://www.ruby-lang.org/en/&#34;&gt;Ruby&lt;/a&gt; with the &lt;a href=&#34;http://twitter4r.rubyforge.org/&#34;&gt;Twitter4R&lt;/a&gt; library instead of &lt;a href=&#34;http://www.gnu.org/software/bash/&#34;&gt;Bash&lt;/a&gt; scripts and &lt;a href=&#34;http://curl.haxx.se/&#34;&gt;Curl&lt;/a&gt;. So much nicer to read. He still keeps everyone updated about the temperatures &lt;a href=&#34;http://twitter.com/thinglesbot/status/1385822758&#34;&gt;outside&lt;/a&gt; and &lt;a href=&#34;http://twitter.com/thinglesbot/status/1385469229&#34;&gt;inside the house&lt;/a&gt;. However, he now has a couple of new features that are just for fun. If you follow him you may get picked as his &lt;a href=&#34;http://twitter.com/thinglesbot/status/1385599425&#34;&gt;favorite follower&lt;/a&gt; some day, and he likes to share a &lt;a href=&#34;http://twitter.com/thinglesbot/status/1375634183&#34;&gt;favorite number, color or letter&lt;/a&gt; each day.&lt;/p&gt;
&lt;p&gt;Thinglesbot&amp;rsquo;s followers fell off a lot when he went silent for months. We&amp;rsquo;ll see if they pick up again. He currently has 18 followers.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/50ee3dc5b2.png&#34; alt=&#34;Line graph of Twitter follower and friend counts for thinglesbot from March 18 to 24, showing followers peaking at 18 and friends at 12.&#34; style=&#34;width: 501px; &#34; /&gt;
&lt;p&gt;Welcome back!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/01/20/did-slicehost-drop.html</link>
      <pubDate>Tue, 20 Jan 2009 16:12:51 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/01/20/did-slicehost-drop.html</guid>
      <description>&lt;p&gt;Did &lt;a href=&#34;https://www.slicehost.com&#34;&gt;Slicehost&lt;/a&gt; drop the 10% prepayment discount over $240? Huh?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Alocola Brings Location Info to the Web</title>
      <link>https://www.thingelstad.com/2009/01/20/alocola-brings-location.html</link>
      <pubDate>Tue, 20 Jan 2009 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/01/20/alocola-brings-location.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/d5d6eb97da.png&#34; alt=&#34;Alocola app logo featuring a light blue icon with puzzle pieces and a bar chart beside the brand name in blue text&#34; style=&#34;width: 228px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;My buddy &lt;a href=&#34;http://www.unpossible.com/&#34;&gt;Dan Grigsby&lt;/a&gt; has just launched his first iPhone application. The application fills an interesting gap, it allows a web site to get the location information from the iPhone. Sure, iPhone applications can do this with the iPhone SDK, but if you are a plain old web site or web application (and yes, there is still a place for them), Alocola will allow you to get that information via the web. &lt;a href=&#34;http://alocola.com/&#34;&gt;Alocola&lt;/a&gt; is a helper application that Safari launches and then it just gets the location info and returns it back to the requesting website. Slick! Great idea.&lt;/p&gt;
&lt;p&gt;All the cooler, Dan will be making the source code available under &lt;a href=&#34;http://www.gnu.org/licenses/gpl-2.0.html&#34;&gt;GPL2&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/01/18/fluid-love-for.html</link>
      <pubDate>Sun, 18 Jan 2009 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/01/18/fluid-love-for.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://shauninman.com/archive/2008/09/19/mint_plus_fluid_equals_julep&#34;&gt;Fluid Love for Mint&lt;/a&gt; ← I&amp;rsquo;m really enjoying using &lt;a href=&#34;http://haveamint.com/&#34;&gt;Mint&lt;/a&gt; for stats on thingelstad.com, and I&amp;rsquo;m a fan of &lt;a href=&#34;http://fluidapp.com/&#34;&gt;Fluid&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/01/09/dd-commands-that.html</link>
      <pubDate>Fri, 09 Jan 2009 16:03:31 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/01/09/dd-commands-that.html</guid>
      <description>&lt;p&gt;&lt;code&gt;dd&lt;/code&gt; commands that run for 2+ hours could really use a &amp;ndash;verbose flag&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/01/05/bummed-that-slicehost.html</link>
      <pubDate>Tue, 06 Jan 2009 00:08:16 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/01/06/bummed-that-slicehost.html</guid>
      <description>&lt;p&gt;Bummed that &lt;a href=&#34;https://www.slicehost.com&#34;&gt;Slicehost&lt;/a&gt; doesn&amp;rsquo;t support &lt;a href=&#34;https://en.wikipedia.org/wiki/IPv6&#34;&gt;IPv6&lt;/a&gt;. No AAAA record for me. Lame.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2009/01/01/just-setup-mint.html</link>
      <pubDate>Fri, 02 Jan 2009 00:52:38 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2009/01/02/just-setup-mint.html</guid>
      <description>&lt;p&gt;Just setup &lt;a href=&#34;https://haveamint.com/&#34;&gt;Mint&lt;/a&gt; on my site to see if it really is that much better than other packages.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/12/23/wow-merb-merging.html</link>
      <pubDate>Tue, 23 Dec 2008 17:02:24 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/12/23/wow-merb-merging.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://weblog.rubyonrails.com/2008/12/23/merb-gets-merged-into-rails-3&#34;&gt;Merb merging into Rails 3&lt;/a&gt; ← Big news!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/12/19/git-seriously-needs.html</link>
      <pubDate>Fri, 19 Dec 2008 14:04:18 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/12/19/git-seriously-needs.html</guid>
      <description>&lt;p&gt;&lt;code&gt;git&lt;/code&gt; seriously needs tab-completion for branch names.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Ugly Bash Scripting</title>
      <link>https://www.thingelstad.com/2008/12/18/ugly-bash-scripting.html</link>
      <pubDate>Thu, 18 Dec 2008 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/12/18/ugly-bash-scripting.html</guid>
      <description>&lt;p&gt;I started down this rabbit hole tonight trying to make a bash script do more than I probably should make it do. But I didn&amp;rsquo;t want to move to something else. This may be some of the ugliest stuff I&amp;rsquo;ve ever written.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; file in $files; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; !&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./00000000000001-tSQLVersions.sql&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Checking if &lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt; is already loaded...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# oh this is ugly, oh so very very ugly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# the tr on the end trims the newline out of the return from SQL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        check&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;$MySQL -u$MyUSER -h$MyHOST -p$MyPASS $MyDB --execute&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SELECT COUNT(*) FROM tSQLVersions WHERE message = &amp;#39;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;;&amp;#34;&lt;/span&gt; | tr -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        check&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;echo -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$check&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ridiculously ugly hack to hardcode updater to always assume this special file isn&amp;#39;t loaded&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        check&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;COUNT(*)0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$check&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;COUNT(*)0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Loading &lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $MySQL -u$MyUSER -h$MyHOST -p$MyPASS $MyDB &amp;lt; $file
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $MySQL -u$MyUSER -h$MyHOST -p$MyPASS $MyDB --execute&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;insert into tSQLVersions (message) values (&amp;#39;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;);&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;File &lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt; has already been loaded!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;tr -d &#39;\n&#39;&lt;/code&gt; at the end of line 6 is my personal favorite. MySQL was dumping a newline in the STDOUT and screwing up my comparison. Fix it right? Nah. Just rip that newline out of there. All better!&lt;/p&gt;
&lt;p&gt;I share this for others to know what not to do.&lt;/p&gt;
&lt;p&gt;But hey, it works. :-) Who needs any fancy pants migrations.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/12/17/just-hit-me.html</link>
      <pubDate>Wed, 17 Dec 2008 21:32:28 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/12/18/just-hit-me.html</guid>
      <description>&lt;p&gt;Just hit me how great it would be if the &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; theme world lived on something like github. Fork! Fork! Fork! Would be great.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/12/16/185238.html</link>
      <pubDate>Tue, 16 Dec 2008 19:52:38 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/12/16/185238.html</guid>
      <description>&lt;p&gt;Wrestled Capistrano down today. Now have multi-stage Capistrano deployment working for this PHP application. Nice.&lt;/p&gt;
&lt;p&gt;Today I feel like I turned the corner on two tools: git and capistrano. +1 for me.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/12/12/testing-out-sql.html</link>
      <pubDate>Fri, 12 Dec 2008 12:42:05 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/12/12/testing-out-sql.html</guid>
      <description>&lt;p&gt;Testing out SQL schema, fixing, git pushing. Having fun. Beethoven is helping along in the background.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/12/11/upgraded-to-wordpress.html</link>
      <pubDate>Thu, 11 Dec 2008 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/12/11/upgraded-to-wordpress.html</guid>
      <description>&lt;p&gt;I just took the plunge this evening and updated &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; to 2.7. So far
I&amp;rsquo;m pretty impressed. I wasn&amp;rsquo;t sure what I would think of the new admin
interface but after using it I like it a lot. I can&amp;rsquo;t wait to give the
automated upgrade feature a workout. If anything seems amiss, let me
know.&lt;/p&gt;
&lt;p&gt;Now the race is on to see how long it takes for good themes to come out
that take advantage of the threaded comments feature in 2.7.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/11/21/gitx-httpgitxfrimnl-is.html</link>
      <pubDate>Fri, 21 Nov 2008 22:48:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/11/22/gitx-httpgitxfrimnl-is.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://gitx.frim.nl/&#34;&gt;GitX&lt;/a&gt; is actually nice for seeing branching activity in your project. Also nice to see diff&amp;rsquo;s very fast.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/11/21/looking-at-ways.html</link>
      <pubDate>Fri, 21 Nov 2008 21:45:58 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/11/22/looking-at-ways.html</guid>
      <description>&lt;p&gt;Looking at ways to do push-deployment of PHP from GitHub.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/11/21/today-in-review.html</link>
      <pubDate>Fri, 21 Nov 2008 18:20:32 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/11/21/today-in-review.html</guid>
      <description>&lt;p&gt;Today in Review: PHP, Coda, Git, Ubuntu, GitHub, TextMate, FBML. Awesome.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/11/11/installing-parallels-so.html</link>
      <pubDate>Tue, 11 Nov 2008 16:20:38 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/11/11/installing-parallels-so.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Installing Parallels 4.0.&lt;/li&gt;
&lt;li&gt;So great: Vista has decided it is no longer &amp;ldquo;genuine&amp;rdquo; in the middle of the Parallels 4.0 upgrade. Vista, I hate you. Really. Hate.&lt;/li&gt;
&lt;li&gt;Windows XP images seem to have upgraded to Parallels 4.0 fine. Windows Vista? BSOD and seems completely SOL.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/11/02/psa-wordpress-users.html</link>
      <pubDate>Sun, 02 Nov 2008 18:01:44 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/11/02/psa-wordpress-users.html</guid>
      <description>&lt;p&gt;PSA: &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; users, remember to adjust your Timezone setting after the time change.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/11/01/updating-two-slicehost.html</link>
      <pubDate>Sat, 01 Nov 2008 11:34:52 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/11/01/updating-two-slicehost.html</guid>
      <description>&lt;p&gt;Updating two &lt;a href=&#34;https://www.slicehost.com&#34;&gt;Slicehost&lt;/a&gt; slices to Intrepid Ibex. Hopefully goes as smooth as my home machine last night.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/10/31/upgrade-to-was.html</link>
      <pubDate>Fri, 31 Oct 2008 20:59:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/11/01/upgrade-to-was.html</guid>
      <description>&lt;p&gt;Upgrading my home server from Ubuntu 8.04.1 (Hardy Heron) to 8.10 (Intrepid Ibex).&lt;/p&gt;
&lt;p&gt;Upgrade to Ubuntu 8.10 was totally easy, breezy.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/10/31/aptitude-install-ruby.html</link>
      <pubDate>Fri, 31 Oct 2008 14:15:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/10/31/aptitude-install-ruby.html</guid>
      <description>&lt;p&gt;&lt;code&gt;aptitude install ruby&lt;/code&gt; is a lot less than &lt;code&gt;aptitude install ruby-full&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Stop Twitter Direct Messages</title>
      <link>https://www.thingelstad.com/2008/10/31/stop-twitter-direct.html</link>
      <pubDate>Fri, 31 Oct 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/10/31/stop-twitter-direct.html</guid>
      <description>&lt;p&gt;My relationship with &lt;a href=&#34;http://twitter.com/&#34;&gt;Twitter&lt;/a&gt; &lt;a href=&#34;https://www.thingelstad.com/2007/11/04/buhbye-twitter.html&#34;&gt;ebbs&lt;/a&gt; and &lt;a href=&#34;https://www.thingelstad.com/2008/03/11/hello-again-twitter.html&#34;&gt;flows&lt;/a&gt;. Sometimes I find it very enjoyable, and at other times it seems like a worthless distraction. However, there is one part of Twitter that I have never liked, &lt;strong&gt;direct messages&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why not like direct messages? I&amp;rsquo;m not a fan of anything that creates another queue that I have to monitor and respond to. I try to keep everything in one workflow, and that workflow is email. My annoyance isn&amp;rsquo;t limited to Twitter direct messages, but extends equally to Facebook messages and any other website specific inbox. I think Facebook could actually do their members a huge service by making their message system IMAP-capable. It would make it infinitely more useful and you could happily sit in your choice of email clients. On the other hand I would rather just not deal with Twitter direct messages.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d thought for a while that part of a Twitter Pro premium service could be to turn off direct message function. I decided to take matters into my own hands and rid myself of direct messages now instead. You can use this little program to do the same for you.&lt;/p&gt;
&lt;p&gt;The first thing to do is tell Twitter to stop notifying you of a direct message. Go to your account Settings and in the Notices tab uncheck the Direct Text emails option.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/8f5b60a51a.png&#34; alt=&#34;direct-text-email-setting.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Now, this 28-line Ruby program will simply respond (via direct message) to any direct messages you have received and then delete the direct message from your account, leaving no queue behind. If you don&amp;rsquo;t like the delete, you can just comment out line 24. To make life easy this uses the &lt;a href=&#34;http://twitter4r.rubyforge.org/&#34;&gt;Twitter4R library for Ruby&lt;/a&gt;. You will have to edit lines 9 and 19 to your credentials and personal message.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Get requires out of the way&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rubygems&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gem(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;twitter4r&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;gt;=0.2.0&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;twitter&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;time&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Let&amp;#39;s get a Twitter Client created&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Put your credentials in here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Twitter&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Client&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#e6db74&#34;&gt;:login&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;USERNAME&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;:password&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;PASSWORD&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Get Direct Messages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;messages &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; client&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;messages(&lt;span style=&#34;color:#e6db74&#34;&gt;:received&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Loop through any direct messages received&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;messages&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;each &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;message&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# Reply to the message&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# Set the message text to what you want, make sure it is Twitter length compliant&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  response &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Twitter&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Message&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;create(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;:text&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;PUT YOUR MESSAGE HERE. YOU PROBABLY WANT YOUR EMAIL IN HERE.&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;:recipient&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; message&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sender,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;:client&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; client)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# Delete the message&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  client&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;message(&lt;span style=&#34;color:#e6db74&#34;&gt;:delete&lt;/span&gt;, message)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# Put a brief pause here just to make Twitter happier&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sleep &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There is no error checking and by default it outputs nothing. It is intended to be invoked via cron at whatever interval you would like. If you do not have the Twitter4R Gem installed just run &lt;code&gt;gem install twitter4r&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/10/29/turning-my-windows.html</link>
      <pubDate>Wed, 29 Oct 2008 09:11:33 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/10/29/turning-my-windows.html</guid>
      <description>&lt;p&gt;Turning my Windows Server 2003 box into a Ubuntu 8.04.1 Server box.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/10/16/textmate-rails-git.html</link>
      <pubDate>Thu, 16 Oct 2008 22:00:56 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/10/17/textmate-rails-git.html</guid>
      <description>&lt;p&gt;Textmate, Rails, Git. The rust is slowly breaking off of my hands.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MinneWordCamp Not Happening</title>
      <link>https://www.thingelstad.com/2008/10/10/minnewordcamp-not-happening.html</link>
      <pubDate>Fri, 10 Oct 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/10/10/minnewordcamp-not-happening.html</guid>
      <description>&lt;p&gt;Back in February I posted a feeler to see if people would be interested in &lt;a href=&#34;https://www.thingelstad.com/2008/02/16/interested-in-a.html&#34;&gt;getting a Minneapolis WordCamp together&lt;/a&gt;. The response was pretty great, without any date, promotion or agenda nearly 75 people signed up to indicate interest.&lt;/p&gt;
&lt;p&gt;While there has been a lot of interest, I&amp;rsquo;m not going to be able to lead the effort to get a WordCamp going here in Minneapolis. Coordinating an event like this is far outside my interest area and not something I do all that well. Plus we weren&amp;rsquo;t getting great uptake on sponsorship and the current economic meltdown is not going to make that better. We also lost our keynote speaker and were again going to have to look for a new date.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m hopeful that someone else is interested in seeing this happen and may take the lead and run with it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/30/just-added-the.html</link>
      <pubDate>Tue, 30 Sep 2008 21:59:12 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/10/01/just-added-the.html</guid>
      <description>&lt;p&gt;Just added the WordPress LifeStream plugin to my blog.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/26/running-dvdfab-inside.html</link>
      <pubDate>Fri, 26 Sep 2008 17:47:45 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/09/26/running-dvdfab-inside.html</guid>
      <description>&lt;p&gt;Running DVDFab inside of a Parallels VM working on a DVD. Seems to be working.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/25/painless-automated-install.html</link>
      <pubDate>Thu, 25 Sep 2008 09:29:09 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/09/25/painless-automated-install.html</guid>
      <description>&lt;p&gt;Painless automated install of both Vista and XP in two VM&amp;rsquo;s went great. Walked away and came back in an hour. Thanks Parallels!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/24/bracing-myself-to.html</link>
      <pubDate>Wed, 24 Sep 2008 09:52:12 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/09/24/bracing-myself-to.html</guid>
      <description>&lt;p&gt;Bracing myself to setup Windows XP and Windows Vista virtual machines on my Mac Pro.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/19/rather-excited-about.html</link>
      <pubDate>Fri, 19 Sep 2008 10:22:11 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/09/19/rather-excited-about.html</guid>
      <description>&lt;p&gt;Rather excited about news that Amazon is entering the CDN market. That is a good thing. Will help a lot of small companies.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/16/seriously-is-it.html</link>
      <pubDate>Tue, 16 Sep 2008 12:13:33 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/09/16/seriously-is-it.html</guid>
      <description>&lt;p&gt;Seriously, is it ever a good idea for an IVR system to ask you to &amp;ldquo;speak&amp;rdquo; your social security number? There is a keypad on the phone!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/15/for-the-life.html</link>
      <pubDate>Mon, 15 Sep 2008 14:28:21 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/09/15/for-the-life.html</guid>
      <description>&lt;p&gt;For the life of me I cannot figure out why spammers so badly want to create accounts on my &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; sites. Luckily SABRE solves the problem&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/09/14/installing-x-code.html</link>
      <pubDate>Sun, 14 Sep 2008 14:24:27 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/09/14/installing-x-code.html</guid>
      <description>&lt;p&gt;Installing X Code and iPhone SDK because I&amp;rsquo;m overly optimistic.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>WordPress iPhone Application and RSD Link</title>
      <link>https://www.thingelstad.com/2008/08/17/wordpress-iphone-application.html</link>
      <pubDate>Sun, 17 Aug 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/08/17/wordpress-iphone-application.html</guid>
      <description>&lt;p&gt;I &lt;a href=&#34;https://www.thingelstad.com/2008/07/22/wordpress-for-iphone.html&#34;&gt;posted before from the WordPress iPhone application&lt;/a&gt; when it was released. Its pretty nifty. When they upgraded it to 1.1 though I could no longer get it to work on my blog anymore. I was mighty confused since it worked for every other blog that is hosted on my server, but not mine.&lt;/p&gt;
&lt;p&gt;I finally &lt;a href=&#34;http://iphone.trac.wordpress.org/ticket/48#comment:3&#34;&gt;did some digging into the problem&lt;/a&gt; and for some reason my blog wasn&amp;rsquo;t outputting an RSD link which is needed for the application to find the XML-RPC endpoint. A quick &lt;code&gt;grep -R rsd&lt;/code&gt; found the issue.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;remove_action(&#39;wp_head&#39;, &#39;rsd_link&#39;);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That was hiding out in my functions.php file. I removed it and I&amp;rsquo;m cooking along with the &lt;a href=&#34;http://iphone.wordpress.org/&#34;&gt;iPhone WordPress application&lt;/a&gt; again. Beware if your theme does something similar. Found and fixed just &lt;a href=&#34;https://www.thingelstad.com/2008/08/14/summer-of-love.html&#34;&gt;before leaving town&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/08/14/just-logged-into.html</link>
      <pubDate>Thu, 14 Aug 2008 17:38:30 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/08/14/just-logged-into.html</guid>
      <description>&lt;p&gt;Just logged into my &lt;a href=&#34;https://www.slicehost.com&#34;&gt;Slicehost&lt;/a&gt; server via pTerm on iPhone via EDGE. Slow, but works.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>First ALT.NET Meetup</title>
      <link>https://www.thingelstad.com/2008/08/14/first-altnet-meetup.html</link>
      <pubDate>Thu, 14 Aug 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/08/14/first-altnet-meetup.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/c9dcc7d860.png&#34; alt=&#34;Vintage-style bottle cap logo with red and blue design reading Minneapolis ALT.NET&#34; style=&#34;width: 220px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;I received an email this morning from &lt;a href=&#34;http://webloggist.com/&#34;&gt;Ira Mitchell&lt;/a&gt; clueing me in on a group that &lt;a href=&#34;http://freemind.net/&#34;&gt;Freemind&lt;/a&gt; is helping get going called ALT.NET. The first thing I noticed was that they have a really cool &lt;a href=&#34;http://en.wikipedia.org/wiki/Grain_Belt_(beer)&#34;&gt;Minneapolis-inspired&lt;/a&gt; logo for the group and then I started trying to figure out what it was all about. From the &lt;a href=&#34;http://mplsalt.net/&#34;&gt;ALT.NET site&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;At it&amp;rsquo;s purest, the driving force behind the ALT.NET developer community may be described simply as &amp;ldquo;The pursuit of happiness.&amp;rdquo; While Microsoft has provided developers with a powerful framework and a bunch of very good tools and packages to build upon, it often feels like too much effort was put into a &amp;ldquo;one-size-fits-all&amp;rdquo; design philosophy that can make it complex, tedious, or just plain impossible to do things that don&amp;rsquo;t follow Microsoft&amp;rsquo;s prescribed approach.&lt;/p&gt;
&lt;p&gt;With other development platforms and languages offering so much choice (Java and it&amp;rsquo;s many quality open source offerings) and elegance (Ruby on Rails with its &amp;ldquo;beautiful&amp;rdquo; code and &amp;ldquo;convention over configuration&amp;rdquo; philosophy), .NET developers longed to craft cleaner, more elegant solutions without having to leave a framework that has so much to offer.&lt;/p&gt;
&lt;p&gt;ALT.NET is about following your own beliefs about application design, and using the .NET platform to support your ideas, rather than retro-fitting your ideas to the platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sounds cool! The first meet-up is at &lt;a href=&#34;https://www.thebulldogmpls.com/&#34;&gt;The Bulldog NE&lt;/a&gt;, the same place where people meet before &lt;a href=&#34;http://www.ruby.mn/&#34;&gt;Ruby Users of Minnesota&lt;/a&gt; meetings. Check it out; the beer will be good, the food will be good and hanging out with hip people working with cool technology will be good as well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/08/12/brand-new-snapshot.html</link>
      <pubDate>Tue, 12 Aug 2008 14:18:16 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/08/12/brand-new-snapshot.html</guid>
      <description>&lt;p&gt;Reading about Ubunty 7.1 to 8.04 upgrade. Thinking about just doing it. What the heck?&lt;/p&gt;
&lt;p&gt;Brand new snapshot backup created with &lt;a href=&#34;https://www.slicehost.com&#34;&gt;Slicehost&lt;/a&gt;. Time to upgrade! Yeeha! 🤠&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/08/04/slicehost-is-great.html</link>
      <pubDate>Mon, 04 Aug 2008 22:01:40 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/08/05/slicehost-is-great.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt; is great. &amp;ldquo;up 153 days, 22:17&amp;rdquo;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/08/04/now-the-proud.html</link>
      <pubDate>Mon, 04 Aug 2008 21:57:32 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/08/05/now-the-proud.html</guid>
      <description>&lt;p&gt;Now the proud owner of &lt;code&gt;minnewordcamp.com&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/07/31/switching-to-opendns.html</link>
      <pubDate>Thu, 31 Jul 2008 16:21:47 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/07/31/switching-to-opendns.html</guid>
      <description>&lt;p&gt;Switching to &lt;a href=&#34;https://www.opendns.com&#34;&gt;OpenDNS&lt;/a&gt; (who needs to try when &lt;a href=&#34;https://www.opticality.com/blog/&#34;&gt;Hadar&lt;/a&gt; says it is great!)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/07/31/just-switched-to.html</link>
      <pubDate>Thu, 31 Jul 2008 16:10:33 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/07/31/just-switched-to.html</guid>
      <description>&lt;p&gt;Just switched to using Comcast&amp;rsquo;s DNS server. I&amp;rsquo;ve always ran my own on the local LAN, but trying to reduce server count at home.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>RailsConf 2008 Recap</title>
      <link>https://www.thingelstad.com/2008/06/03/railsconf-recap.html</link>
      <pubDate>Tue, 03 Jun 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/06/03/railsconf-recap.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/0bb39b44a1.gif&#34; alt=&#34;RailsConf logo in red and dark red with film strip detail and white text on a rectangular badge&#34; style=&#34;width: 126px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;We just left Portland today on our continuing Summer of Love trip. You wont find much about Portland from me though. Our stop in Portland for me was a visit to &lt;a href=&#34;http://en.oreilly.com/rails2008/&#34;&gt;RailsConf 2008&lt;/a&gt;. Tammy did post about her thoughts on Portland. It was totally awesome that our good friends, the Tangen&amp;rsquo;s were able to come out and join us in Portland. Kent attended RailsConf with me, and Maril, Simon and Caroline hung out with Tammy and Mazie. Mazie just adored Caroline the whole time.&lt;/p&gt;
&lt;p&gt;Let me share some of my comments on RailsConf 2008. I&amp;rsquo;m not going to dive into super detail on the Rails 2.1 release announced at the conference, or the details of various sessions. You can find that elsewhere online and many of the presentations and sessions are now up on the RailsConf wiki.&lt;/p&gt;
&lt;h3 id=&#34;sessions&#34;&gt;Sessions&lt;/h3&gt;
&lt;p&gt;Here are the sessions I attended:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/4365&#34;&gt;Building Great Products Keynote&lt;/a&gt; by Joel Spolsky&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/2495&#34;&gt;Entrepreneurs On Rails&lt;/a&gt; by Dan Benjamin&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/2043&#34;&gt;Hosting and the Woes&lt;/a&gt; by Ezra Zygmuntowicz, Jamie van Dyke, Tom Mornini&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/896&#34;&gt;CRUD Doesn&amp;rsquo;t Have an &amp;lsquo;S&amp;rsquo; in It: Managing Complex Searching in Rails&lt;/a&gt; by Stephen Midgley&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/2127&#34;&gt;Flexible Scaling: How to Handle 1 Billion Pageviews&lt;/a&gt; by TJ Murphy&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/2019&#34;&gt;UI Design on Rails&lt;/a&gt; by Ryan Singer&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/4333&#34;&gt;Keynote&lt;/a&gt; by David Heinemeier Hansson&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/4337&#34;&gt;Rails 2.1 Keynote&lt;/a&gt; by Jeremy Kempter&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/963&#34;&gt;Using Git to Manage and Deploy Rails Apps&lt;/a&gt; by Scott Chacon&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/1813&#34;&gt;Asynchronous Processing with Ruby on Rails&lt;/a&gt; by Jonathon Dahl&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/2031&#34;&gt;Build Your Own Distributed, Self Configuring Rails Cluster&lt;/a&gt; by Dave Fayram, Tom Preston-Werner&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/1871&#34;&gt;Custom Nginx Modules: Accelerate Rails, HTTP Tricks&lt;/a&gt; by Adam Wiggins&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/4231&#34;&gt;The Worst Rails Code You&amp;rsquo;ve Ever Seen (and How Not to Write It Yourself)&lt;/a&gt; by Obie Fernandez&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/1849&#34;&gt;De-Railing: Smashing the Rails Stack&lt;/a&gt; by Aaron Bedra&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sadly, I missed &lt;a href=&#34;http://en.oreilly.com/rails2008/public/schedule/detail/4336&#34;&gt;Kent Beck&amp;rsquo;s Keynote&lt;/a&gt; on Saturday evening. I hear it was really good.&lt;/p&gt;
&lt;h3 id=&#34;highlights&#34;&gt;Highlights&lt;/h3&gt;
&lt;p&gt;The conference started off on a strong note with Joel Spolsky&amp;rsquo;s keynote. Some of you that have mentioned Spolsky to me may have heard my immediate rant. Prior to his keynote I wasn&amp;rsquo;t a Joel fan. However, his keynote was great. He had a good message, presented it very well, and really got his point across. I liked it a lot, and take back anything bad I&amp;rsquo;ve said about Joel in the past (or at least most of it). It was really good.&lt;/p&gt;
&lt;p&gt;I liked the Entrepreneur session quiet a bit. Unfortunately halfway through it the fire marshall ordered about 1/4th of the people out of the room because it was standing room only. Ryan Singer&amp;rsquo;s session on design and Rails was awesome. Ryan was preaching what I truly believe is the model for designers and developers to engage and work collaboratively to make great things. The world needs more Ryan Singer&amp;rsquo;s out there evangelizing and showing how this can be done to do great things. Jeremy Kemper&amp;rsquo;s keynote on Rails 2.1 was really good as well. The 2.1 feature set looks great.&lt;/p&gt;
&lt;p&gt;Perhaps the most high-density presentation was Scott Chacon&amp;rsquo;s Git presentation. I don&amp;rsquo;t think I&amp;rsquo;ve ever gotten barraged with so much high-density information so quickly. At one point I turned to Kent and joked &amp;ldquo;I feel stupid.&amp;rdquo; Directed acyclic graphs were being thrown around as quickly and furious as could ever be done. Great presentation though, really liked his stuff. I recommend checking out his site, &lt;a href=&#34;http://www.gitcasts.com/&#34;&gt;Gitcasts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;David Heinemeier Hansson&amp;rsquo;s keynote on Friday night was a little odd. He steered away from any technical topics and really focused on giving some input on creating great products and being a great developer. I&amp;rsquo;m not sure how the talk went over with the audience. DHH is the creator of Rails, and as a result I doubt anyone would pan it that much. He drew a full crowd back from dinner at 8:00pm after all. His talk however seemed to me to be trying to get people to appreciate the aesthetics of code. To admire the beauty of architecture. It seemed clear to me that he was trying to send a message beyond Rails, to creating great things and continuing creative inspiration. I liked the message, but I wondered how many people in the room really heard it.&lt;/p&gt;
&lt;h3 id=&#34;lowlights&#34;&gt;Lowlights&lt;/h3&gt;
&lt;p&gt;There weren&amp;rsquo;t any &lt;em&gt;bad&lt;/em&gt; sessions that I went to. Some could have been better, but I wouldn&amp;rsquo;t say any of them were horrible. However, I would have liked to see a bit more technical depth and heavy lifting in the sessions. Too many of them seemed to gloss on big topics of scaling, deployment and architecture. I realize it&amp;rsquo;s a big conference, but more technical depth would have been good.&lt;/p&gt;
&lt;p&gt;The WiFi network for the conference was a general disaster. It had 14Mb and was 100% full every single day except Sunday. Not sure what was using that bandwidth, but it made even checking email painful.&lt;/p&gt;
&lt;p&gt;With that said, I almost wish they would just get rid of the WiFi. There was simply too much social networking, messaging going on. RailsConf has an &amp;ldquo;official&amp;rdquo; back-channel in IRC at the #railsconf channel. I hopped on it at one point to see what was going on and found 200 people bitching, whining and making inappropriate comments in the channel. It was horrible. The worst of anonymous streaming spew that you could find. In several sessions I watched more than a couple of people just sit there and type into the IRC channel the entire time. Yikes!&lt;/p&gt;
&lt;p&gt;Lastly, I really wish there was some more diversity in the developer community. There was maybe 1 woman in attendance for every 50 or 100 men. The group could use more diversity, I think it would help the developer community in a number of different ways.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Site Performance as seen by Google</title>
      <link>https://www.thingelstad.com/2008/05/23/site-performance-as.html</link>
      <pubDate>Fri, 23 May 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/23/site-performance-as.html</guid>
      <description>&lt;p&gt;I mentioned earlier that I had &lt;a href=&#34;https://www.thingelstad.com/2008/05/23/sites-now-on.html&#34;&gt;moved my sites over to Slicehost&lt;/a&gt;. My reasoning for this was performance. Here is a graph that proves that performance out as seen by the Google robot. This graph shows the response times that Google was seeing when it spidered my site. The crazy noise on the left is Dreamhost. The nice, flat, consistently fast response on the right is &lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/58a9fd7683.png&#34; alt=&#34;GoogleWebmasterToolsDownloadTimes.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;The world of SEO is filled with black magic, but I have had people that know there stuff highlight that site behavior does impact your ranking in Google. This intuitively makes sense. If your site is slow or eratic in response, Google is going to give a bad experience to the visitor they send to you. If you are fast and always available, it will be good. It&amp;rsquo;s easy to see how this could be used to influence search ranking, but it&amp;rsquo;s not provable.&lt;/p&gt;
&lt;p&gt;Either way this is a good thing (tm) and it&amp;rsquo;s good confirmation to see the site performance improvement vetted from a third party like Google.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Sites Now on Slicehost</title>
      <link>https://www.thingelstad.com/2008/05/23/sites-now-on.html</link>
      <pubDate>Fri, 23 May 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/23/sites-now-on.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/d41b549e34.jpg&#34; alt=&#34;Slicehost logo with the word slice in dark blue and host in green beside a stylized lime or citrus slice icon&#34; style=&#34;width: 271px; float: right; margin-left: 10px; &#34; /&gt;
If you are a regular visitor to my sites you have likely noticed that a
couple of months ago things got much faster. You may be thinking that I
finally went to my server and hit the turbo button, but not so.
&lt;p&gt;I had been hosting all of my sites on Dreamhost. They had a ridiculous deal for a year of hosting and I took advantage of it. There was a lot I really like about Dreamhost. Their web interface is really nice, better than most. Their directory structure that they lay out for you is sensible and very workable. All in, the service is pretty good.&lt;/p&gt;
&lt;p&gt;However, I was having horrible problems with performance. I would go for hours on end where my site would take 4 to 6, or even 10 seconds to respond. That&amp;rsquo;s just running standard WordPress and even with the wp-cache plugin enabled. The culprit always seemed to be one of two things &amp;ndash; really slow MySQL response times or, even worse, slow file I/O times to get at your own home directory. Enough is enough and I decided to move hosting providers.&lt;/p&gt;
&lt;p&gt;I did a lot of research and decided I wanted to move away from a shared hosting provider like Dreamhost. They all over-subscribe their service, it&amp;rsquo;s the only way they can give those unbelievably cheap prices. Instead I decided to look for a virtual private server provider. After looking around for a while I found something I had never seen before, a hosting company that had nothing but good feedback from everyone.&lt;/p&gt;
&lt;p&gt;A couple of days later I signed up on &lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt; and purchased my first slice. I chose a Ubuntu 7.1 image and after a couple of hours following their extremely well written documentation I was up and running. As an added bonus, I even learned things doing this.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve now been using Slicehost for over a couple of months and I can&amp;rsquo;t say enough good things about them. The service is stunning, and the move to a virtual private server has given me some great other benefits. For example, my slice is now backed up every day as a virtual server. If something bad happens, I can click a couple of buttons in the panel and have my server back the way it was in no time.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re looking for a provider, and are willing to roll your sleeves up, Slicehost may be the way for you.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Themes: The Worst of the WordPress Ecosystem</title>
      <link>https://www.thingelstad.com/2008/05/13/themes-the-worst.html</link>
      <pubDate>Tue, 13 May 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/13/themes-the-worst.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;This is frustrating.&lt;/strong&gt; I&amp;rsquo;ve spent the last couple of hours trying to find a new &lt;a href=&#34;http://www.wordpress.org/&#34;&gt;WordPress&lt;/a&gt; theme for Tammy&amp;rsquo;s blog, &lt;a href=&#34;https://tammy.thingelstad.com?ref=thingelstad.com&#34;&gt;Smaller Than a Redwood&lt;/a&gt;. This is so frustrating.&lt;/p&gt;
&lt;p&gt;First, she can&amp;rsquo;t do it herself easily because the look of a theme is completely unpredictable of its functionality. I would argue that a theme that doesn&amp;rsquo;t support sidebar widgets and tags right out of the box, should just be deleted. Why do we still have this junk floating around the Internet?&lt;/p&gt;
&lt;p&gt;Worse still is the volume of themes that are just purely broken. We found a theme and I started to &amp;ldquo;fix&amp;rdquo; it, meaning add tagging support, and then found out several of the themes own images were not in the download and cannot be found on the Internet.&lt;/p&gt;
&lt;p&gt;Argh! Now, back to Google to try to sift through thousands of piles of crap and see if I can find a workable theme.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Minnebar 3</title>
      <link>https://www.thingelstad.com/2008/05/10/minnebar.html</link>
      <pubDate>Sat, 10 May 2008 10:04:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/10/minnebar.html</guid>
      <description>&lt;ul&gt;
&lt;li&gt;At &lt;a href=&#34;https://minnestar.org/minnebar/sessions/intro-to-iphone-development/&#34;&gt;Intro to iPhone Development&lt;/a&gt; session.&lt;/li&gt;
&lt;li&gt;At &lt;a href=&#34;https://minnestar.org/minnebar/sessions/screw-you-lamp-plus-virtualization/&#34;&gt;Screw You, LAMP&lt;/a&gt; presentation from &lt;a href=&#34;https://www.linkedin.com/in/dangrigsby/&#34;&gt;Dan Grigsby&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;At &lt;a href=&#34;https://minnestar.org/minnebar/sessions/wordpress-as-a-content-management-system/&#34;&gt;WordPress as a CMS&lt;/a&gt; session.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See also &lt;a href=&#34;https://www.thingelstad.com/collections/minnebar/&#34;&gt;Minnebar collection&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Power WordPress Presentation Materials</title>
      <link>https://www.thingelstad.com/2008/05/10/power-wordpress-presentation.html</link>
      <pubDate>Sat, 10 May 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/10/power-wordpress-presentation.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m doing my &lt;a href=&#34;https://www.thingelstad.com/2008/05/05/power-wordpress-session.html&#34;&gt;Power WordPress presentation&lt;/a&gt; at &lt;a href=&#34;http://www.minnebar.org/&#34;&gt;Minnebar&lt;/a&gt; today. I decided to do the presentation today without any slides but instead give everyone handouts with the relevant tips &amp;amp; tricks. To share the wealth here are links to the PDF files for the three sections I&amp;rsquo;m covering, &lt;a href=&#34;https://www.thingelstad.com/uploads/2020/5564377490.pdf&#34;&gt;Performance&lt;/a&gt;, &lt;a href=&#34;https://www.thingelstad.com/uploads/2020/850a24fbc1.pdf&#34;&gt;Plugin
Review&lt;/a&gt; and &lt;a href=&#34;https://www.thingelstad.com/uploads/2020/223d1fa2fa.pdf&#34;&gt;SEO Basics&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Flashback: MarketWatch in Windows 2000 Launch</title>
      <link>https://www.thingelstad.com/2008/05/08/flashback-marketwatch-in.html</link>
      <pubDate>Thu, 08 May 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/08/flashback-marketwatch-in.html</guid>
      <description>&lt;p&gt;There are a few points in the history of &lt;a href=&#34;http://www.bigcharts.com/&#34;&gt;BigCharts&lt;/a&gt; and &lt;a href=&#34;http://www.marketwatch.com/&#34;&gt;MarketWatch&lt;/a&gt; that I&amp;rsquo;m especially proud of. Perhaps one of the most prominent ones, and most public, is the inclusion of the BigCharts BigArchitecture (the name we retroactively gave the COM-infrastructure behind MarketWatch and BigCharts) in the scalability demo at the &lt;a href=&#34;http://en.wikipedia.org/wiki/Windows_2000&#34;&gt;Windows 2000&lt;/a&gt; launch event. The video is a fun watch.&lt;/p&gt;
&lt;p&gt;&lt;video controls=&#34;controls&#34; playsinline=&#34;playsinline&#34; src=&#34;https://files.thingelstad.com/posts/2008/windows-2000-launch-demo-with-marketwatch-and-bigcharts.mp4&#34; width=&#34;100%&#34; poster=&#34;https://files.thingelstad.com/posts/2008/windows-2000-launch-demo-with-marketwatch-and-bigcharts.jpg&#34; preload=&#34;none&#34;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&#34;prelude&#34;&gt;Prelude&lt;/h3&gt;
&lt;p&gt;We had been working with Microsoft pretty extensively at this point in part because we were trying to run our stuff on &lt;a href=&#34;http://en.wikipedia.org/wiki/Windows_NT_4.0&#34;&gt;Windows NT 4.0&lt;/a&gt; and it was horrible. We were having immense problems. We decided to throw a &amp;ldquo;Hail Mary&amp;rdquo; and upgrade to the unreleased beta of Windows 2000 Server. It worked! Our problems, which I can&amp;rsquo;t even remember now &lt;em&gt;(anyone?)&lt;/em&gt; went away, and our sites stabilized.&lt;/p&gt;
&lt;p&gt;Microsoft knew about the success we had had and was looking for the scalability demo for the launch. They called us about &lt;strong&gt;10 days&lt;/strong&gt; before the launch event to see if we could do it. We sent one of our systems team out that night. When he got there, Kristian Meier called me on my mobile saying &amp;ldquo;Dude! Do you know what they want me to do?! This is awesome!&amp;rdquo; We really hadn&amp;rsquo;t had time to brief him before his flight.&lt;/p&gt;
&lt;p&gt;They made images, installed 500 clients, a bunch of servers, some databases and loaded it all up on trucks to drive from Redmond to San Francisco.&lt;/p&gt;
&lt;h3 id=&#34;event&#34;&gt;Event&lt;/h3&gt;
&lt;p&gt;Microsoft only gave us two seats on the floor for the event. &lt;a href=&#34;http://www.tersteeg.org/&#34;&gt;Chris Tersteeg&lt;/a&gt; and I attended. The screen that they had MarketWatch on in the auditorium was immense. To this day I don&amp;rsquo;t think I&amp;rsquo;ve ever seen a screen projected bigger. They brought MarketWatch up live during the talk and at one point the page refresh kicked in. The whole screen went blank and Chris and I sat there with our heartbeat stopped waiting for the page to redraw. I don&amp;rsquo;t think there has ever been a more anxious page view to the site.&lt;/p&gt;
&lt;p&gt;There is a funny editorial aside here. The newsroom was of course covering the launch of Windows 2000 and the theme of the coverage was that it was generally a non-event. We had a headline, above the fold that morning, called &amp;ldquo;Windoze 2000 Launch&amp;rdquo; and there was a picture of a guy sleeping next to it, if I remember right. Microsoft of course called me with panic since this wouldn&amp;rsquo;t exactly be the kind of headline you would want on the screen during the launch event. I called our editor to see what we could do. He appropriately suggested that we hope something new happens to take the headline off the site, otherwise, &lt;a href=&#34;http://www.urbandictionary.com/define.php?term=pound+sand&#34;&gt;pound sand&lt;/a&gt;. Luckily some new news broke!&lt;/p&gt;
&lt;p&gt;The demo was awesome in person. Seeing 500 client machines drive huge traffic to your code base was great. After the launch event we called it a day, rented a convertible and drove around the valley for the afternoon. We also made a &lt;a href=&#34;http://shop3.frys.com/isp/paloalto.html&#34;&gt;stop at Fry&amp;rsquo;s&lt;/a&gt; to pick up some toys.&lt;/p&gt;
&lt;p&gt;What a great event. Thanks to everyone who made it a reality!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/05/05/realizing-how-completely.html</link>
      <pubDate>Mon, 05 May 2008 13:05:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/05/realizing-how-completely.html</guid>
      <description>&lt;p&gt;Realizing how completely opaque, confusing and non-sensical Unix file system permissions can be to non-geeks.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Power WordPress Session at Minnebar</title>
      <link>https://www.thingelstad.com/2008/05/05/power-wordpress-session.html</link>
      <pubDate>Mon, 05 May 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/05/power-wordpress-session.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.minnebar.org/&#34;&gt;Minnebar&lt;/a&gt; is approaching this weekend, May 10th! I&amp;rsquo;m really excited and I just couldn&amp;rsquo;t stand to not be presenting this year so I decided to put my name up and do a session on &lt;a href=&#34;http://barcamp.pbwiki.com/MinneBarSessions#PowerWordPress&#34;&gt;Power WordPress&lt;/a&gt; usage. I plan to hit on must-have plugins that can save you a ton of time as well as some great SEO tactics for driving more traffic to your site. It should be a lot of fun!&lt;/p&gt;
&lt;p&gt;I also hope to get some feedback and talk a bit about doing a WordCamp in the fall.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/30/i-really-hate.html</link>
      <pubDate>Wed, 30 Apr 2008 22:08:30 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/05/01/i-really-hate.html</guid>
      <description>&lt;p&gt;I really hate it when companies have unsubscribe pages that are just insanely broken. Surprising (?) how often they generate errors.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/29/i-heart-slicehost.html</link>
      <pubDate>Tue, 29 Apr 2008 22:39:38 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/30/i-heart-slicehost.html</guid>
      <description>&lt;p&gt;I 💚 &lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/29/i-wish-that.html</link>
      <pubDate>Tue, 29 Apr 2008 20:57:30 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/30/i-wish-that.html</guid>
      <description>&lt;p&gt;I wish that anyone that did anything with avatars would just get their act together around one source. They need to be universal.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/28/at-ruby-user.html</link>
      <pubDate>Mon, 28 Apr 2008 19:07:27 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/29/at-ruby-user.html</guid>
      <description>&lt;p&gt;At &lt;a href=&#34;https://www.meetup.com/ruby-mn/&#34;&gt;Ruby User Group&lt;/a&gt; meeting.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/28/wondering-if-there.html</link>
      <pubDate>Mon, 28 Apr 2008 09:52:47 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/28/wondering-if-there.html</guid>
      <description>&lt;p&gt;Wondering if there is any reason to use &lt;a href=&#34;https://subversion.apache.org/source-code.html&#34;&gt;Subversion&lt;/a&gt; and &lt;a href=&#34;https://git-scm.com&#34;&gt;git&lt;/a&gt;, or just wholesale use git only.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/13/t789102611.html</link>
      <pubDate>Sun, 13 Apr 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/14/t789102611.html</guid>
      <description>&lt;p&gt;If &lt;a href=&#34;https://en.wikipedia.org/wiki/Keyhole_Markup_Language&#34;&gt;KML&lt;/a&gt; is the &lt;a href=&#34;https://en.wikipedia.org/wiki/HTML&#34;&gt;HTML&lt;/a&gt; of geo, what is the &lt;a href=&#34;https://en.wikipedia.org/wiki/XHTML&#34;&gt;XHTML&lt;/a&gt; of geo?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/10/t786958624.html</link>
      <pubDate>Thu, 10 Apr 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/11/t786958624.html</guid>
      <description>&lt;p&gt;CSSEdit just saved me major pain and anguish. Happy.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/04/06/t784519924.html</link>
      <pubDate>Sun, 06 Apr 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/07/t784519924.html</guid>
      <description>&lt;p&gt;Reading about &lt;a href=&#34;https://en.wikipedia.org/wiki/Directed_acyclic_graph&#34;&gt;directed acyclic graphs&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>How Software Is Built Interview</title>
      <link>https://www.thingelstad.com/2008/04/02/how-software-is.html</link>
      <pubDate>Wed, 02 Apr 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/04/02/how-software-is.html</guid>
      <description>&lt;p&gt;A few weeks ago I got the opportunity to do a phone interview with &lt;a href=&#34;http://howsoftwareisbuilt.com/about-scott-swigart/&#34;&gt;Scott Swigart&lt;/a&gt; and &lt;a href=&#34;http://howsoftwareisbuilt.com/about-sean-campbell/&#34;&gt;Sean Campbell&lt;/a&gt; who are doing a series of interviews regarding &lt;a href=&#34;http://howsoftwareisbuilt.com/&#34;&gt;How Software Is Built&lt;/a&gt;. &lt;a href=&#34;http://howsoftwareisbuilt.com/2008/04/02/interview-with-jamie-thingelstad-cto-wall-street-journal-digital-network/&#34;&gt;The interview&lt;/a&gt; was a lot of fun and really hit around the general theme of how open source is changing the way software is created. It is long, but I think it came out pretty well.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/83c4c108fa.gif&#34; alt=&#34;Screenshot of the How Software Is Built blog showing an interview with Jamie Thingelstad, CTO of Wall Street Journal Digital Network&#34; style=&#34;width: 400px; max-width: 400px;&#34; /&gt;
&lt;p&gt;&lt;strong&gt;(Update 2024):&lt;/strong&gt; The original site for this interview no longer exists but you can still &lt;a href=&#34;https://web.archive.org/web/20080613233222/http://howsoftwareisbuilt.com/2008/04/02/Interview-with-Jamie-Thingelstad-CTO-Wall-Street-Journal-Digital-Network/&#34;&gt;read it via Internet Archive&amp;rsquo;s Wayback Machine&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/03/30/t780441936.html</link>
      <pubDate>Sun, 30 Mar 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/31/t780441936.html</guid>
      <description>&lt;p&gt;Heading to &lt;a href=&#34;https://www.thebulldogmn.com&#34;&gt;The Bulldog&lt;/a&gt; for early &lt;a href=&#34;https://www.meetup.com/ruby-mn/&#34;&gt;ruby.mn&lt;/a&gt; fun.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Flashback: BigCharts on CNBC</title>
      <link>https://www.thingelstad.com/2008/03/27/flashback-bigcharts-on.html</link>
      <pubDate>Thu, 27 Mar 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/27/flashback-bigcharts-on.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;Flashback to February 4, 1998!&lt;/strong&gt; Here are a couple of videos that I stumbled upon on my machine recently. These are an extraordinary walk down memory lane for me, back to the early days of starting &lt;a href=&#34;http://www.bigcharts.com/&#34;&gt;BigCharts.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We were still very early in the development BigCharts. There were only a dozen or so people in the company. I was sitting at my desk talking to our ISP about getting some more bandwidth. At the time we had a single &lt;a href=&#34;http://en.wikipedia.org/wiki/Digital_Signal_1&#34;&gt;T1&lt;/a&gt; with a now trivial 1.5 Mbps of bandwidth, about what my cable modem at home does, and only used about a quarter of that. In those days I always had a TV with &lt;a href=&#34;http://www.cnbc.com/&#34;&gt;CNBC&lt;/a&gt; on in my office and this came on the screen with no warning.&lt;/p&gt;
&lt;p&gt;&lt;video controls=&#34;controls&#34; playsinline=&#34;playsinline&#34; src=&#34;https://files.thingelstad.com/posts/2008/bigcharts-on-cnbc-day-1.mp4&#34; width=&#34;100%&#34; poster=&#34;https://files.thingelstad.com/posts/2008/bigcharts-on-cnbc-day-1.jpg&#34; preload=&#34;none&#34;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;I sat in my chair stunned in silence, and then hung up on the person I was talking to. At the time we served BigCharts off of a single Sparc 20 clone. The site ran with a clunky combination of &lt;a href=&#34;http://www.perl.org/&#34;&gt;Perl&lt;/a&gt; and &lt;a href=&#34;http://en.wikipedia.org/wiki/Common_Gateway_Interface&#34;&gt;CGI&lt;/a&gt; work sitting behind a very early version of &lt;a href=&#34;http://www.apache.org/&#34;&gt;Apache&lt;/a&gt;. With that clip on CNBC an avalanche of people started to come to the site. To be fair, back then that probably meant a couple of thousand. I really don&amp;rsquo;t know how many it was since we didn&amp;rsquo;t even have log analytics back then. Small numbers in 1998. I tried to get onto the server via console and it wouldn&amp;rsquo;t respond. The load average had spiked so high that I couldn&amp;rsquo;t get enough CPU to even get a prompt. We ended up pulling the ethernet cable to kill the traffic just to get onto the machine.&lt;/p&gt;
&lt;p&gt;February 4th was a Wednesday. This was the first week that my friend &lt;a href=&#34;http://www.tersteeg.org/&#34;&gt;Chris&lt;/a&gt; had joined BigCharts. We immediately got everyone together and I sat on the Sparc and figured out what, if anything, we could do. We realized our load average was up over 100 because we were &lt;a href=&#34;http://en.wikipedia.org/wiki/Fork_%2528operating_system%2529&#34;&gt;forking&lt;/a&gt; Perl processes everywhere. Remember, this was old CGI stuff, no &lt;a href=&#34;http://perl.apache.org/&#34;&gt;mod_perl&lt;/a&gt; here. So on his third day at work I started handing Chris Perl programs that he translated into C and gave me an executable for. As we replaced each piece the next one fell down, and we repeated the translation process.&lt;/p&gt;
&lt;p&gt;After a couple of hours traffic subsided and we had converted enough things to native executables that we were okay. So the next day this video segment aired.&lt;/p&gt;
&lt;p&gt;&lt;video controls=&#34;controls&#34; playsinline=&#34;playsinline&#34; src=&#34;https://files.thingelstad.com/posts/2008/bigcharts-on-cnbc-day-2.mp4&#34; width=&#34;100%&#34; poster=&#34;https://files.thingelstad.com/posts/2008/bigcharts-on-cnbc-day-2.jpg&#34; preload=&#34;none&#34;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;I love this bit. It is so &lt;em&gt;quaint&lt;/em&gt;. I love how &lt;a href=&#34;http://www.cnbc.com/id/15838137/site/14081545/?site=14081545&amp;amp;site=14081545&#34;&gt;Bill Griffeth&lt;/a&gt; gives us a total pass on the site going down. It&amp;rsquo;s just taken as a given, when a lot of people go to a website, the server goes down. Few things highlight so starkly for me how the web has matured over the last decade.&lt;/p&gt;
&lt;p&gt;Anyway, obviously with a mere 24 hour gap and being a startup with no real money we had the same issue. A ton of people pointed their browsers at us, the server got overloaded and we had a challenging couple of hours. If I remember right we just let the system ride through it on the second day since we&amp;rsquo;d already optimized as much as we could in that window.&lt;/p&gt;
&lt;p&gt;Shortly after this we started a total revamp of our code. The final stage was a migration to Windows and distributing on multiple servers. But right away we started to push a lot of things that we were doing in CGI/Perl down into Javascript functions on the browser. If only the concept of a &lt;a href=&#34;http://en.wikipedia.org/wiki/Content_Delivery_Network&#34;&gt;CDN&lt;/a&gt; existed back then that would have helped us a lot too.&lt;/p&gt;
&lt;p&gt;Ahh&amp;hellip; good times.&lt;/p&gt;
&lt;p&gt;PS - Final comment. The &amp;ldquo;viewer&amp;rdquo; that sent the note into CNBC was our CEO and Founder, &lt;a href=&#34;http://www.linkedin.com/pub/0/5b1/a8&#34;&gt;Philip Hotchkiss&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Pragmatic Studio: Rails Studio Graduate!</title>
      <link>https://www.thingelstad.com/2008/03/15/pragmatic-studio-rails.html</link>
      <pubDate>Sat, 15 Mar 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/15/pragmatic-studio-rails.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/9f0a0d4056.png&#34; alt=&#34;Circular button badge for The Pragmatic Studio showing Alumni Ruby on Rails with the website pragmaticstudio.com&#34; style=&#34;width: 169px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;&lt;strong&gt;I graduated!&lt;/strong&gt; Or, well, at least I got the certificate!&lt;/p&gt;
&lt;p&gt;I finally took the plunge this week and took Rails Studio after thinking about it many times. I blogged a day-by-day account &amp;ndash; &lt;a href=&#34;https://www.thingelstad.com/2008/03/10/pragmatic-studio-rails.html&#34;&gt;day 1&lt;/a&gt;, &lt;a href=&#34;https://www.thingelstad.com/2008/03/11/pragmatic-studio-rails.html&#34;&gt;day 2&lt;/a&gt;, &lt;a href=&#34;https://www.thingelstad.com/2008/03/12/pragmatic-studio-rails.html&#34;&gt;day 3&lt;/a&gt;. It&amp;rsquo;s been a long, long time since I&amp;rsquo;ve coded anything significant and I&amp;rsquo;m hoping to get a bit closer to it in some projects coming up. This class was my plunge into Rails.&lt;/p&gt;
&lt;p&gt;While I&amp;rsquo;ve been away from the keys for a while, I&amp;rsquo;ve been very familiar with a number of frameworks and have personally seen teams struggle and thrive in different frameworks. I&amp;rsquo;ve really taken note of the &amp;ldquo;weight&amp;rdquo; of a framework and the effect it has on a programming team. Something that I think is far too often ignored. We focus on scale, &amp;ldquo;enterprise readiness&amp;rdquo; (another topic to post about) and forget that at the end of the day a bunch of developers have to live inside this thing &amp;ndash; and it needs to be nice and hopefully fun.&lt;/p&gt;
&lt;p&gt;Now that the class is over, some thoughts.&lt;/p&gt;
&lt;h3 id=&#34;ruby&#34;&gt;Ruby&lt;/h3&gt;
&lt;p&gt;I came into the class feeling that &lt;a href=&#34;http://www.ruby-lang.org/&#34;&gt;Ruby&lt;/a&gt; was awkward. I had looked at a reasonable amount of Ruby code in examples and books, and had always found it confusing. I guess it would be similar to looking at Perl code and seeing &lt;code&gt;$_&lt;/code&gt; for the first time. The Ruby code I looked at had these strange &lt;code&gt;:symbols&lt;/code&gt; and odd syntax that just made it seem foreign.&lt;/p&gt;
&lt;p&gt;The reality is Ruby is a bit different. Rails has a strong concept of convention. Learning more about Ruby I realize that that admiration of convention starts in Ruby and extends in Rails. I started to enjoy the fluid nature of the language more and more as our class went on. Dave Thomas said that when he teaches people Ruby there is a great moment about half-way through the class. &amp;ldquo;People start to smile.&amp;rdquo; I can see that. Ruby is a language that encourages you to just try things. The smile comes because a lot of times, it works.&lt;/p&gt;
&lt;p&gt;I left the class with more respect for Ruby and a feeling like it was a language I could live with for quiet a while.&lt;/p&gt;
&lt;h3 id=&#34;ruby-on-rails&#34;&gt;Ruby on Rails&lt;/h3&gt;
&lt;p&gt;I was really impressed with &lt;a href=&#34;http://www.rubyonrails.com/&#34;&gt;Rails&lt;/a&gt;. I&amp;rsquo;ve talked with a lot of people, over a lot of projects, about Rails and understood the benefits, but this was my first up close experience. I found myself very happy with the Rails framework and particularly impressed with how much more productive it was than other frameworks I&amp;rsquo;ve seen.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s really clear to me that many of the projects I&amp;rsquo;ve thought of would be very achievable in Rails. This validated the premise I&amp;rsquo;d held for a while with less specific knowledge. I was also impressed with the progress that Rails has made through 2.0.2. Mike and Dave did a good job of highlighting those improvements and updating the training.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m pretty excited to start on a small project on my own now. I&amp;rsquo;m also hopeful that a new version of &lt;a href=&#34;http://www.pragprog.com/titles/rails2&#34;&gt;Agile Web Development with Rails&lt;/a&gt; comes soon updated for Rails 2.0.&lt;/p&gt;
&lt;h3 id=&#34;rails-studio&#34;&gt;Rails Studio&lt;/h3&gt;
&lt;p&gt;The studio was great. I highly recommend the training and think that &lt;a href=&#34;http://www.clarkware.com/&#34;&gt;Mike Clark&lt;/a&gt; and &lt;a href=&#34;http://pragdave.pragprog.com/&#34;&gt;Dave Thomas&lt;/a&gt; did a great job with the class. And, very importantly, Nicole Clark did a great job with all of the logistics. Everything was as good or better than expected and I thought the class materials were top notch.&lt;/p&gt;
&lt;p&gt;I particularly enjoyed the structure of the class, working through one application all the way through to deployment. During the class Mike and Dave would occasionally do a &amp;ldquo;customer routine&amp;rdquo; where one of them was coding and the other was the fake customer. That was cool to see how well Rails handled quick little iterations.&lt;/p&gt;
&lt;p&gt;I really enjoyed Dave&amp;rsquo;s sidebars on various topics Rails. While I&amp;rsquo;m sure it took us off schedule a few minutes, Dave is incredibly insightful and his comments were always interesting and usually quiet funny as well. &amp;ldquo;Ship it!&amp;rdquo; &amp;ldquo;Get Seriously RESTful!&amp;rdquo; I highly recommend &lt;a href=&#34;http://pragdave.pragprog.com/&#34;&gt;Dave&amp;rsquo;s blog&lt;/a&gt;. It&amp;rsquo;s a good read.&lt;/p&gt;
&lt;h3 id=&#34;yes-you-can&#34;&gt;Yes you can!&lt;/h3&gt;
&lt;p&gt;The best thing about Rails Studio for me is that I feel like I can personally build something interesting again. It&amp;rsquo;s easiest for me to explain this with an analogy. When I was a teenager, I knew a few guys that really knew how to fix cars and make them work. This was a critical need for a teenager from North Dakota with a $100 pickup. However, all these guys had no ability to fix a car with fuel injection. At some point the web got fuel injection and I lost the confidence to build something even small.&lt;/p&gt;
&lt;p&gt;Luckily &lt;a href=&#34;http://www.wordpress.org/&#34;&gt;Wordpress&lt;/a&gt; has filled that void for me allowing me to blog away, and at time bend it well out of it&amp;rsquo;s prime area to get something out. I left the Rails Studio feeling empowered and capable. That I could create something cool and interesting, functional and useful. That is definitely worth the price of admission.&lt;/p&gt;
&lt;p&gt;I also left feeling that I need to do a forced rethink of how I look at building applications. I know the words behind agile development, but I don&amp;rsquo;t think I practice it very well. I get enamored with a single technical problem and dive right down rabbit holes often never to return. The perfect case in point is &lt;a href=&#34;https://www.roadsignmath.xyz&#34;&gt;Road Sign Math&lt;/a&gt;. I created a complete schema for the whole thing, plus completely new functions, in beautiful SQL code without a single line of front-end code or even a single web page.&lt;/p&gt;
&lt;p&gt;The thing that I saw so clearly in Rails is the ability to develop around a story. And start with simple stories. Don&amp;rsquo;t build your data model, build a story. This doesn&amp;rsquo;t come naturally to me and is something I&amp;rsquo;m going to work hard to change.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Pragmatic Studio: Rails Studio Day 3</title>
      <link>https://www.thingelstad.com/2008/03/12/pragmatic-studio-rails.html</link>
      <pubDate>Wed, 12 Mar 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/12/pragmatic-studio-rails.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/3094970c5e.png&#34; alt=&#34;The Pragmatic Studio logo in gold and white text on a dark green background&#34; style=&#34;width: 203px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;Today was the last day of &lt;a href=&#34;http://pragmaticstudio.com/rails/&#34;&gt;Rails Studio&lt;/a&gt;. &lt;a href=&#34;http://pragdave.pragprog.com/&#34;&gt;Dave&lt;/a&gt; and &lt;a href=&#34;http://www.clarkware.com/&#34;&gt;Mike&lt;/a&gt; took us through the finish line with a packed syllabus. We took our event application all the way through deployment.&lt;/p&gt;
&lt;p&gt;Our final day was a little rushed. I would guess we had fallen about an hour behind the agenda. We covered the final leg of Rails stuff including completing the ActiveRecord discussion through to many-to-many relationships, the magic of filters and a great overview of using partials and AJAX in our applications.&lt;/p&gt;
&lt;p&gt;Probably the only oversight in the class was the coverage of testing in Rails. Due to schedule, we had to cover all of the &lt;code&gt;rake test&lt;/code&gt; world in &lt;em&gt;an hour&lt;/em&gt;. An hour isn&amp;rsquo;t a lot of time to cover what is really a pretty complete and powerful test environment that is built right into Rails. The oversight here was more pronounced, as early on testing was highlighted as one of the critical things you have to do in your app. We really didn&amp;rsquo;t get enough coverage of this. I wouldn&amp;rsquo;t want a fourth day in the class, which is likely what would be required to cover testing well, so I guess a hurried overview to get you started is probably the best that can be done.&lt;/p&gt;
&lt;p&gt;To end the class we deployed the application via Capistrano to a production server. The Capistrano system really impressed me as being elegant and extensible.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Beautiful Evidence</title>
      <link>https://www.thingelstad.com/2008/03/11/beautiful-evidence.html</link>
      <pubDate>Tue, 11 Mar 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/11/beautiful-evidence.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m the newest member into a small book club that only counts tech geeks in its membership. The first book I read in the club was &lt;a href=&#34;http://www.edwardtufte.com/tufte/&#34;&gt;Edward Tufte&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;http://www.edwardtufte.com/tufte/books_be&#34;&gt;Beautiful Evidence&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/00c21ae193.jpg&#34; alt=&#34;Golden retriever running and splashing through water at full speed, captured in a motion-blurred four-panel photo collage&#34; style=&#34;width: 400px; &#34; /&gt;
&lt;p&gt;I was really excited to read this since &lt;a href=&#34;https://www.thingelstad.com/2005/04/26/edward-tufte.html&#34;&gt;I&amp;rsquo;ve been to Tufte&amp;rsquo;s lecture&lt;/a&gt; twice before but I will sheepishly admit that I hadn&amp;rsquo;t read any of his books. They look really good on the book shelf though! 🙂&lt;/p&gt;
&lt;p&gt;Beautiful Evidence had some really good moments, but it also had some not-so-good moments. All of the members of the book club had issues with the book. Those that have read his other books felt it wasn&amp;rsquo;t up to par with the others. I really liked the chapters on labeling and &lt;a href=&#34;http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR&#34;&gt;sparklines&lt;/a&gt;, but there were several parts that just seemed to ramble.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not going to rag on the book. It wasn&amp;rsquo;t bad &amp;ndash; I guess I just expected something more.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Pragmatic Studio: Rails Studio Day 2</title>
      <link>https://www.thingelstad.com/2008/03/11/pragmatic-studio-rails.html</link>
      <pubDate>Tue, 11 Mar 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/11/pragmatic-studio-rails.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/3094970c5e.png&#34; alt=&#34;The Pragmatic Studio logo in gold text on a dark green background&#34; style=&#34;width: 203px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;Today was day two of &lt;a href=&#34;http://pragmaticstudio.com/rails/&#34;&gt;Rails Studio&lt;/a&gt;. &lt;a href=&#34;http://pragdave.pragprog.com/&#34;&gt;Dave Thomas&lt;/a&gt; and &lt;a href=&#34;http://www.clarkware.com/&#34;&gt;Mike Clark&lt;/a&gt; really ramped up the fire hose today. We continued working on our project site and today worked through creating our own forms, working through &lt;a href=&#34;http://ar.rubyonrails.com/&#34;&gt;ActiveRecord&lt;/a&gt; and creating relational mappings and passing things around from page to page. We also went through &lt;a href=&#34;http://wiki.rubyonrails.org/rails/pages/Routes&#34;&gt;routes&lt;/a&gt; and mapping URLs around to the appropriate controllers. Powerful stuff.&lt;/p&gt;
&lt;p&gt;I really appreciated the long block of time spent on using &lt;a href=&#34;http://en.wikipedia.org/wiki/Representational_State_Transfer&#34;&gt;REST&lt;/a&gt; in Rails 2. I was very impressed with how integrated REST is into Rails applications right out of the gate. If you use the default routing and scaffolding you instantly get REST operations on all of your models. Wow.&lt;/p&gt;
&lt;p&gt;The hardest part of todays class though was just working through the plumbing of getting related data sets working around a data model. We were adding reviews to our event application. I&amp;rsquo;ve done this before in a number of languages and frameworks, and Rails 2 does this better than any of the ones I&amp;rsquo;m familiar with.&lt;/p&gt;
&lt;p&gt;Today tied up the fundamentals to building 95% of all web applications. We&amp;rsquo;ll wrap it up tomorrow with user logins and filters, as well as handling deployment to production in the real world. I&amp;rsquo;m really happy I took the time to do this.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Rails API using Fluid SSB</title>
      <link>https://www.thingelstad.com/2008/03/11/rails-api-using.html</link>
      <pubDate>Tue, 11 Mar 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/11/rails-api-using.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been diving big into Ruby on Rails this week with this class I&amp;rsquo;m taking. One of the things I found right away is you need to have the Rails API documentation very handy. The main site is &lt;a href=&#34;http://api.rubyonrails.com/&#34;&gt;api.rubyonrails.com&lt;/a&gt;, and frankly it&amp;rsquo;s horrible. Luckily there is a great alternative at &lt;a href=&#34;http://www.railsbrain.com/&#34;&gt;RailsBrain&lt;/a&gt; that uses AJAX and all sorts of spiffy fun to make the API so much more usable. Today though I was getting frustrated because I had a slow internet connection and things were taking forever. Enter the solution, a &lt;a href=&#34;https://www.thingelstad.com/2008/03/11/fluid-and-sitespecific.html&#34;&gt;site-specific browser&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My friend &lt;a href=&#34;http://www.thetangens.net/&#34;&gt;Kent&lt;/a&gt; came up with this idea, so credit to him for it, but I know he&amp;rsquo;ll never blog about it and I want to share the love. RailsBrain allows you to download the API documentation as a zip file. It is simply a collection of files and can be served without a web server.&lt;/p&gt;
&lt;p&gt;Unzip the files to a location of your liking and then launch fluid. Here is the setup window. For extra fun, I took the &lt;a href=&#34;http://www.railsbrain.com/rails_brain.png&#34;&gt;logo image off of RailsBrain&lt;/a&gt; to use as the application icon.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/ccd742aae0.png&#34; alt=&#34;Fluid app dialog for creating a site-specific browser, with fields showing a local file URL, the name Rails API, Applications as the location, and rails_brain.png as the icon.&#34; style=&#34;max-width: 399px; &#34; /&gt;
&lt;p&gt;After doing this hit create and you&amp;rsquo;ve got a brand new shiny application that runs local, will work offline, is never going to be slow, and can be launched easily via your launcher of choice.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/233341260a.png&#34; alt=&#34;Quicksilver launcher window showing Rails API.app selected, with a cartoon face icon wearing glasses, and the path /Applications/Rails API.app displayed below.&#34; style=&#34;max-width: 374px; &#34; /&gt;
&lt;p&gt;Plus, you can now alt-tab to it easily. Wow! Great idea Kent! This is really great, and it is blistering fast!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Pragmatic Studio: Rails Studio Day 1</title>
      <link>https://www.thingelstad.com/2008/03/10/pragmatic-studio-rails.html</link>
      <pubDate>Mon, 10 Mar 2008 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/10/pragmatic-studio-rails.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/3094970c5e.png&#34; alt=&#34;The Pragmatic Studio logo in gold text on a dark green background&#34; style=&#34;width: 203px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;I&amp;rsquo;m in Denver today for the first of three days of &lt;a href=&#34;http://pragmaticstudio.com/rails/&#34;&gt;Rails Studio&lt;/a&gt;. Rails Studio is one of the &lt;a href=&#34;http://pragmaticstudio.com/&#34;&gt;Pragmatic Studio&lt;/a&gt; classes offered by &lt;a href=&#34;http://www.pragprog.com/&#34;&gt;Pragmatic Programmers&lt;/a&gt;. This class is being taught by &lt;a href=&#34;http://pragdave.pragprog.com/&#34;&gt;Dave Thomas&lt;/a&gt; and &lt;a href=&#34;http://www.clarkware.com/&#34;&gt;Mike Clark&lt;/a&gt;. I really enjoyed our first day.&lt;/p&gt;
&lt;p&gt;I was a little surprised by how many people there were in the class. I expected about 20 and it&amp;rsquo;s nearly twice that. I think I counted 37. And, sadly, as all things programming go there were only two women. As the father of a little girl this lack of women in technology disturbs me more and more. The accommodations were as you would expect &amp;ndash; decent hotel conference room, setup in rows of tables. I would love it if Pragmatic would spring for a second projector and do a dual display given the number of people in the room. Not necessary, but would be nice.&lt;/p&gt;
&lt;p&gt;The first day was split in two halves. We started with a very quick dive through &lt;a href=&#34;http://www.ruby-lang.org/&#34;&gt;Ruby&lt;/a&gt; itself. I was really happy they did this since it answered many &amp;ldquo;huh&amp;rdquo; moments I&amp;rsquo;ve had when looking at Rails examples. The overview also left me with more respect for Ruby, independent of Rails, than I had when I came. The morning finished with a quick run through &lt;a href=&#34;http://en.wikipedia.org/wiki/Model-view-controller&#34;&gt;model-view-controller, MVC&lt;/a&gt;. It was also put together well and explained more clearly than I&amp;rsquo;ve seen before.&lt;/p&gt;
&lt;p&gt;The afternoon was spent working on real &lt;a href=&#34;http://www.rubyonrails.com/&#34;&gt;Ruby on Rails&lt;/a&gt; code and managing our way through an example project. There was less time in labs, hands-on coding, than I expected. But that didn&amp;rsquo;t take away anything. I left the afternoon actually feeling like I understand the flow of control in Rails and can make my way through the stack. Given the surface area of Rails I feel pretty good about that. I also particularly liked that Mike and Dave were giving very fresh, current information on some of the big changes in Rails 2.0.2.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m going to start hammering out my own project as well so I can dive a bit deeper. Look for another update tomorrow.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/03/02/t765887186.html</link>
      <pubDate>Sun, 02 Mar 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/03/03/t765887186.html</guid>
      <description>&lt;p&gt;So far me managing my own VPS on &lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt; is not outperforming Dreamhost. Problem is the guy at the keys I think. 😕&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Quiet Lately</title>
      <link>https://www.thingelstad.com/2008/02/24/quiet-lately.html</link>
      <pubDate>Sun, 24 Feb 2008 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/24/quiet-lately.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://depts.washington.edu/uweek/archives/1998.04.APR_30/_Photos.html&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/72479bd988.jpg&#34; alt=&#34;Two men in suits standing beside a cone-shaped object inside a room lined with acoustic foam panels.&#34; style=&#34;width: 128px; float: right; margin-left: 10px; &#34; /&gt;&lt;/a&gt;
I haven&amp;rsquo;t been posting much the last couple of weeks. My travel schedule has been a bit higher than normal, which you would think could lead to more posts but actually is the opposite. Plus, all of my &amp;ldquo;blog time&amp;rdquo; has been spent lately getting ready to move my websites to a new hosting provider and for some new stuff too. I&amp;rsquo;ll post more on that later. I&amp;rsquo;m still here.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/02/22/having-a-frusttrating.html</link>
      <pubDate>Fri, 22 Feb 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/22/having-a-frusttrating.html</guid>
      <description>&lt;p&gt;Having a frustrating time trying to export a movie out of ScreenFlow.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m totally impressed with how well done &lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt; tutorials are written. Very helpful. You&amp;rsquo;re actually smarter after following them.&lt;/p&gt;
&lt;p&gt;Just moved one of my sites over to Slicehost. Now I wait for the DNS records to expire.&lt;/p&gt;
&lt;p&gt;Just reconfigured PCI-e lanes to get a bit more performance. Afraid to go to slot 4 since it&amp;rsquo;s right next to the hard drives. Oh well.&lt;/p&gt;
&lt;p&gt;String at awe at my now triple display Mac Pro. Ohhhh&amp;hellip;&lt;/p&gt;
&lt;p&gt;Using the optical drive on my MacBook Pro and totally shocked about doing it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/02/20/t737886242.html</link>
      <pubDate>Wed, 20 Feb 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/21/t737886242.html</guid>
      <description>&lt;p&gt;Just finished doing the majority of the initial setup on my Ubuntu slice at &lt;a href=&#34;https://www.slicehost.com/&#34;&gt;Slicehost&lt;/a&gt;. Pretty simple with their very well written docs.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Interested in a Minneapolis WordCamp?</title>
      <link>https://www.thingelstad.com/2008/02/16/interested-in-a.html</link>
      <pubDate>Sat, 16 Feb 2008 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/16/interested-in-a.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m conducting a quick test to see how much interest there would be in hosting a Minneapolis WordCamp. &lt;a href=&#34;http://wordcamp.org/&#34;&gt;WordCamp&lt;/a&gt; is an &lt;a href=&#34;http://en.wikipedia.org/wiki/Unconference&#34;&gt;unconference&lt;/a&gt; focused on &lt;a href=&#34;http://www.wordpress.org/&#34;&gt;WordPress&lt;/a&gt; users and developers, including general topics on blogging as well.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/3ebe474a4e.jpg&#34; alt=&#34;WordCamp Minneapolis 2008 logo featuring the WordPress W icon inside a black circle with teal and black lettering&#34; style=&#34;width: 400px; max-width: 400px;&#34; /&gt;
&lt;p&gt;I&amp;rsquo;ve put a wiki page up at where you can read more and link to additional information about WordCamps. &lt;em&gt;If you would like to see an event like this happen, put your name on the sign up sheet!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Please help spread the word and tell your friends that may be interested in this event about it too!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/02/12/t706233472.html</link>
      <pubDate>Tue, 12 Feb 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/13/t706233472.html</guid>
      <description>&lt;p&gt;Wishing there was a &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; user group in Minneapolis. And yes, I realize I could start one.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2008/02/09/t697121832.html</link>
      <pubDate>Sat, 09 Feb 2008 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/10/t697121832.html</guid>
      <description>&lt;p&gt;Trying out &lt;a href=&#34;http://www.panic.com/coda/&#34;&gt;Coda&lt;/a&gt; for the first time and thinking that it may be perfect!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Confluence Case Study</title>
      <link>https://www.thingelstad.com/2008/02/09/confluence-case-study.html</link>
      <pubDate>Sat, 09 Feb 2008 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/09/confluence-case-study.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/ec11eb5533.png&#34; alt=&#34;Atlassian website screenshot showing a Confluence case study article with a headshot of a man in professional attire&#34; style=&#34;width: 150px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;A &lt;a href=&#34;http://www.atlassian.com/software/confluence/casestudies/dowjones.jsp&#34;&gt;case study&lt;/a&gt; was just posted at the &lt;a href=&#34;http://www.atlassian.com/&#34;&gt;Atlassian&lt;/a&gt; website on the use of the &lt;a href=&#34;http://www.atlassian.com/software/confluence/&#34;&gt;Confluence&lt;/a&gt; &lt;a href=&#34;http://en.wikipedia.org/wiki/Wiki&#34;&gt;wiki&lt;/a&gt; solution at work. Some nice quotes from me in it, and the story on how we&amp;rsquo;ve been using Wiki&amp;rsquo;s. It leaves out some of the longer history though. The Wiki use really started in &lt;a href=&#34;http://www.marketwatch.com/&#34;&gt;MarketWatch&lt;/a&gt; long before &lt;a href=&#34;http://www.dowjones.com/&#34;&gt;Dow Jones&lt;/a&gt; bought us, and then spread when people saw how effective the technology was.&lt;/p&gt;
&lt;p&gt;Nice writeup though. No big errors in it like these things can have so often.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Tufte Returning to Minneapolis June 23 &amp; 24</title>
      <link>https://www.thingelstad.com/2008/02/01/tufte-returning-to.html</link>
      <pubDate>Fri, 01 Feb 2008 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/02/01/tufte-returning-to.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/6469714988.jpg&#34; alt=&#34;Man in a suit gesturing energetically with one hand while holding papers in the other, black and white photo&#34; style=&#34;width: 200px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;I was checking out &lt;a href=&#34;http://www.edwardtufte.com/&#34;&gt;Edward Tufte&amp;rsquo;s site&lt;/a&gt; the other day and I noted that he is going to be returning to Minneapolis again for &lt;a href=&#34;http://www.edwardtufte.com/tufte/courses&#34;&gt;his seminar&lt;/a&gt;. &lt;a href=&#34;https://www.thingelstad.com/2005/04/26/edward-tufte.html&#34;&gt;I&amp;rsquo;ve been to his seminar&lt;/a&gt; twice and would consider going a third time but I&amp;rsquo;ll be out of town.&lt;/p&gt;
&lt;p&gt;If you haven&amp;rsquo;t been to his seminar before I really recommend it. It&amp;rsquo;s like taking a bath in high quality analysis of visual displays. Even if your day job doesn&amp;rsquo;t directly involve designing it is still a very worthwhile and educational way to spend a day. Plus you get copies of all four of his books.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Registered for RailsConf 2008</title>
      <link>https://www.thingelstad.com/2008/01/29/registered-for-railsconf.html</link>
      <pubDate>Tue, 29 Jan 2008 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2008/01/29/registered-for-railsconf.html</guid>
      <description>&lt;p&gt;Registration just opened up for &lt;a href=&#34;http://conferences.oreilly.com/rails/&#34;&gt;RailsConf 2008&lt;/a&gt; in Portland, Oregon. I’m heading out to my first RailsConf!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/107ea3658c.gif&#34; alt=&#34;RailsConf badge graphic with red background reading May 29 through June 1 2008 Portland Oregon I&#39;m Attending&#34; style=&#34;width: 336px; max-width: 336px;&#34; /&gt;
</description>
    </item>
    
    <item>
      <title>Open Thread: Presenting at Code Freeze 2008</title>
      <link>https://www.thingelstad.com/2007/12/04/open-thread-presenting.html</link>
      <pubDate>Tue, 04 Dec 2007 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/12/04/open-thread-presenting.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/aadeaeed38.jpg&#34; alt=&#34;Code Freeze 08 conference logo with snowflake graphic and stylized text on a dark purple background&#34; style=&#34;width: 201px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;I&amp;rsquo;m presenting at &lt;a href=&#34;http://www.umsec.umn.edu/code_freeze_08/&#34;&gt;Code Freeze 2008&lt;/a&gt; in January. The title of my presentation is &lt;em&gt;Innovation in Product Development&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Everyone wants to have the next hot product. We are constantly &amp;ldquo;pushing the envelope&amp;rdquo; and &amp;ldquo;thinking out of the box&amp;rdquo;. We have the aspiration, but in many cases it doesn&amp;rsquo;t happen. In this discussion we will review key aspects to fostering innovation in a development team, creating room to play and ultimately making great products.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;ve got some ideas for my presentation and a theme I&amp;rsquo;m thinking of winding it through. However, I&amp;rsquo;m curious if you all have anything to say on this topic. What do you think drives innovation in product development? What are the key contributing factors that you see?&lt;/p&gt;
&lt;p&gt;Let me know what you think.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Website Updates (Nov 2007)</title>
      <link>https://www.thingelstad.com/2007/12/01/website-updates-nov.html</link>
      <pubDate>Sat, 01 Dec 2007 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/12/01/website-updates-nov.html</guid>
      <description>&lt;p&gt;I just finished a pretty long session or upgrades and improvements to thingelstad.com. Here are some new things to check out.&lt;/p&gt;
&lt;h3 id=&#34;gravatars&#34;&gt;Gravatars&lt;/h3&gt;
&lt;p&gt;I actually implemented &lt;a href=&#34;http://site.gravatar.com/&#34;&gt;Gravatars&lt;/a&gt; a while back, when &lt;a href=&#34;http://blog.gravatar.com/2007/10/18/automattic-gravatar/&#34;&gt;Automattic bought them&lt;/a&gt;. But it deserves a special highlight and I improved the implementation now. If you comment here, &lt;a href=&#34;http://site.gravatar.com/signup&#34;&gt;register for a Gravatar&lt;/a&gt; so you can get your picture next to your comments!&lt;/p&gt;
&lt;h3 id=&#34;feed-improvement&#34;&gt;Feed Improvement&lt;/h3&gt;
&lt;p&gt;Nothing too big here, but you will now see tags and related article links in the RSS feed. I know a lot of people use that feed exclusively so I think that may prove useful. (Thanks to &lt;a href=&#34;http://www.herewithme.fr/wordpress-plugins/simple-tags&#34;&gt;Simple Tags&lt;/a&gt;.)&lt;/p&gt;
&lt;h3 id=&#34;ratings&#34;&gt;Ratings&lt;/h3&gt;
&lt;p&gt;You can now rate all posts on the site using a 5-star scale. You&amp;rsquo;ll see the rating tool around any posts. Just click to give it a rating. Go ahead and start with this post. Top rated posts are highlighted on the front page. (Thanks to &lt;a href=&#34;http://lesterchan.net/blogs/&#34;&gt;Lester Chan&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;http://lesterchan.net/wordpress/readme/wp-postratings.html&#34;&gt;WP-PostRatings&lt;/a&gt;.)&lt;/p&gt;
&lt;h3 id=&#34;articles&#34;&gt;Articles&lt;/h3&gt;
&lt;p&gt;I setup an article page on the site where certain posts are highlighted and called out. This allows me to give special positioning to certain things I write. (Thanks to &lt;a href=&#34;http://alexking.org/&#34;&gt;Alex King&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;http://alexking.org/projects/wordpress/readme?project=articles&#34;&gt;Articles Plug-in&lt;/a&gt;.)&lt;/p&gt;
&lt;h3 id=&#34;polls&#34;&gt;Polls&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve added polling functionality, which I used to have a long time on my site. It isn&amp;rsquo;t going to be permanent in the sidebar, but instead just embedded into different posts. (Thanks [again] to &lt;a href=&#34;http://lesterchan.net/blogs/&#34;&gt;Lester Chan&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;http://lesterchan.net/wordpress/readme/wp-polls.html&#34;&gt;WP-Polls&lt;/a&gt;.)&lt;/p&gt;
&lt;h3 id=&#34;theme&#34;&gt;Theme&lt;/h3&gt;
&lt;p&gt;The hardest maintenance item you won&amp;rsquo;t even notice. I updated the theme I use, &lt;a href=&#34;http://www.plaintxt.org/themes/blogtxt/&#34;&gt;blog.txt&lt;/a&gt;, from 3.1 to 4.1. I don&amp;rsquo;t think there is any noticeable impact visibly. I had to go in and rehack in all my theme customizations though. I really wish WordPress made that easier. Thanks to &lt;a href=&#34;http://scottwallick.com/&#34;&gt;Scott Wallick&lt;/a&gt; for making such a great theme. I really can&amp;rsquo;t say enough good things about this theme.&lt;/p&gt;
&lt;h3 id=&#34;filling-out-tags&#34;&gt;Filling Out Tags&lt;/h3&gt;
&lt;p&gt;Last is a bunch of manual labor. I&amp;rsquo;m slowly getting tags applied to my archive. There are hundreds of posts that were made before my blog had tagging. This is getting filled in slowly but surely.&lt;/p&gt;
&lt;p&gt;Enjoy the updates!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/10/29/t373885742.html</link>
      <pubDate>Mon, 29 Oct 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/10/30/t373885742.html</guid>
      <description>&lt;p&gt;Intrigued by &lt;a href=&#34;http://couchdb.apache.org&#34;&gt;CouchDB&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/10/28/t373827742.html</link>
      <pubDate>Sun, 28 Oct 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/10/29/t373827742.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://ruby.mn/&#34;&gt;Ruby Users of Minnesota&lt;/a&gt; meeting @ Acadia Cafe.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Moved to Dreamhost and WordPress 2.3</title>
      <link>https://www.thingelstad.com/2007/10/06/moved-to-dreamhost.html</link>
      <pubDate>Sat, 06 Oct 2007 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/10/06/moved-to-dreamhost.html</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been a couple of busy late nights here for me. I&amp;rsquo;ve been doing major work with my websites, including this one.&lt;/p&gt;
&lt;p&gt;The last two months have been rough for thingelstad.com. There has been a lot of downtime and slow responses. I moved to TextDrive (no link for these guys) a while back and it was just horrible. I don&amp;rsquo;t feel like using the kind of language I would need to describe how much I was frustrated with TextDrive. Let&amp;rsquo;s just consider it a bad period.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/d7f794b72d.jpg&#34; alt=&#34;White crescent moon icon on a dark blue rounded square background, Dreamhost logo&#34; style=&#34;width: 150px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;I was looking for a new provider and a &lt;a href=&#34;http://www.raanan.com/&#34;&gt;friend&lt;/a&gt; recommended &lt;a href=&#34;http://www.dreamhost.com/&#34;&gt;Dreamhost&lt;/a&gt;. I started looking into it and liked what I saw.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/7c8af7fc20.gif&#34; alt=&#34;Green badge reading my site is GREEN with a leaf icon, promoting eco-friendly web hosting&#34; style=&#34;width: 100px; float: left; margin-right: 10px; &#34; /&gt;
&lt;p&gt;They had an amazing promotion for their 10 year anniversary for a year of hosting for $9 ($119 with a $110 discount) so I went for it. I’m absolutely loving Dreamhost. The administrative interface is slick and fast. The directory layout they give you makes sense. You can even SSH in and do command line things when needed. This is a huge saver from time-to-time. On top of all that, Dreamhost buys carbon credits to neutralize their data center. While I&amp;rsquo;d rather they used real renewable energy, this is a start.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/25813c3edd.jpg&#34; alt=&#34;WordPress logo, a bold blue W on a circular blue badge with a dark blue ring&#34; style=&#34;width: 150px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;Since I was burning the midnight oil already I decided to make the jump to &lt;a href=&#34;http://wordpress.org/&#34;&gt;WordPress&lt;/a&gt; 2.3. I was being uncharacteristically cautious due to the big changes with tagging in 2.3 and the potential for plug-in and theme incompatibilities. I decided to just go for it. It wasn&amp;rsquo;t rough at all. I had to manually add the WordPress tagging system to my theme, but otherwise things went very smooth. I&amp;rsquo;m now running 2.3 on all sites and it&amp;rsquo;s humming right along.&lt;/p&gt;
&lt;p&gt;If you aren&amp;rsquo;t using the &lt;a href=&#34;http://techie-buzz.com/wordpress-plugins/wordpress-automatic-upgrade-plugin.html&#34;&gt;WordPress Automatic Upgrade Plug-in&lt;/a&gt;, you need to. This thing is a huge time saver. I upgraded 4 WordPress sites with it and it was smooth as silk. Huge thumbs up!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/08/17/t212185032.html</link>
      <pubDate>Fri, 17 Aug 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/08/18/t212185032.html</guid>
      <description>&lt;p&gt;✅ Theme on &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; version of &lt;a href=&#34;https://www.roadsignmath.xyz&#34;&gt;Road Sign Math&lt;/a&gt;.&lt;br&gt;
✅ Google Analytics wired up.&lt;br&gt;
✅ RSS endpoints have a redirect so old-timers should see new post.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/08/04/like-itunes-before.html</link>
      <pubDate>Sat, 04 Aug 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/08/04/like-itunes-before.html</guid>
      <description>&lt;p&gt;Like iTunes before it, have now succumbed to flickr.&lt;/p&gt;
&lt;p&gt;Stunned and in awe over this WordPress Flickr Plugin.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/07/18/t156684712.html</link>
      <pubDate>Wed, 18 Jul 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/07/19/t156684712.html</guid>
      <description>&lt;p&gt;Inspecting TextDrive as an alternative hosting provider for my site. So far, like it a lot.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Serious Development in JavaScript</title>
      <link>https://www.thingelstad.com/2007/06/04/serious-development-in.html</link>
      <pubDate>Mon, 04 Jun 2007 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/06/04/serious-development-in.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/fe8bfcd601.jpg&#34; alt=&#34;Ajax brand cleaning product logo with bold red lettering on a swirling blue and white circular design&#34; style=&#34;width: 178px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;JavaScript is a really powerful development environment. Really.&lt;/p&gt;
&lt;p&gt;Many developers don&amp;rsquo;t agree with that statement. I think there are a couple of reasons for that. First, the word &amp;ldquo;script&amp;rdquo; appears in the name of the language and developers are often pejorative of anything with the script word in it. The logic goes something like scripting may be fine for hacking out little things, but cannot be used to build real applications.&lt;/p&gt;
&lt;p&gt;I think the other black eye for JavaScript was that the first uses of the language were purely trivial. Remember the first time you had &lt;a href=&#34;http://www.hypergurl.com/snowmaker.html&#34;&gt;snowflakes falling on a web page&lt;/a&gt;? Or how about going beyond blinking text to text just jumping all over the place. True, the first implementations using the language were primitive.&lt;/p&gt;
&lt;p&gt;There are other issues that you could highlight. There are no threads. It&amp;rsquo;s not compiled. Namespace is very loose. But this all misses the point that some of the most sophisticated and sexiest web applications out there are largely built in JavaScript. I personally spend a lot of time everyday now in JavaScript applications thanks to Google. Developers need to focus more on this language as a serious development environment, and the tools for it need to catch up. &lt;a href=&#34;http://www.mozilla.org/projects/venkman/&#34;&gt;Venkman&lt;/a&gt; is nice for debugging, but more is needed. Further tools like &lt;a href=&#34;https://www.thingelstad.com/2007/06/01/going-offline-with.html&#34;&gt;Google Gears&lt;/a&gt; will extend JavaScript even further including off-line.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;http://msdn.microsoft.com/msdnmag/issues/07/05/&#34;&gt;May 2007 issue&lt;/a&gt; of &lt;a href=&#34;http://msdn.microsoft.com/msdnmag/&#34;&gt;MSDN Magazine&lt;/a&gt; featured a cover article called &lt;a href=&#34;http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/&#34;&gt;Create Advanced Web Applications With Object-Oriented Techniques&lt;/a&gt; (whew, mouthful) that touched on building JavaScript in a more sophisticated way. It&amp;rsquo;s a good read, and will start your thinking down the path of using JavaScript for more than snowflakes falling off your mouse pointer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/05/17/t67831862.html</link>
      <pubDate>Thu, 17 May 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/05/18/t67831862.html</guid>
      <description>&lt;p&gt;New UI for &lt;a href=&#34;https://google.com/analytics/&#34;&gt;Google Analytics&lt;/a&gt; is strikingly good.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/05/17/t67837702.html</link>
      <pubDate>Thu, 17 May 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/05/18/t67837702.html</guid>
      <description>&lt;p&gt;Just rebooted the &lt;a href=&#34;https://www.roadsignmath.xyz&#34;&gt;Road Sign Math&lt;/a&gt; server — it was down for 4 days. Need to move that to &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Minnebar 2</title>
      <link>https://www.thingelstad.com/2007/05/08/minnebar.html</link>
      <pubDate>Tue, 08 May 2007 20:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/05/08/minnebar.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m rather late doing my writeup on &lt;a href=&#34;https://minnestar.org/minnebar/&#34;&gt;Minnebar&lt;/a&gt; 2007. I guess the advantage of being so late is that I get to &lt;a href=&#34;http://graemethickins.typepad.com/graeme_blogs_here/2007/04/minnebar_was_gr.html&#34;&gt;reference&lt;/a&gt; all the &lt;a href=&#34;http://concentrationstudios.com/2007/4/22/more-minnebar&#34;&gt;great&lt;/a&gt; &lt;a href=&#34;http://exold.com/opinion/minnebar-2007&#34;&gt;write-ups&lt;/a&gt; &lt;a href=&#34;http://www.alttext.com/archives/2007/04/23/minnbar_remembered.html&#34;&gt;that&lt;/a&gt; &lt;a href=&#34;http://mnteractive.com/archive/minnebar-2-wrap-up/&#34;&gt;other&lt;/a&gt; &lt;a href=&#34;http://louis.dejardin.org/2007/04/22/minnebar-reprise/&#34;&gt;people&lt;/a&gt; have &lt;a href=&#34;http://refried.org/blog/209/&#34;&gt;done&lt;/a&gt; &lt;a href=&#34;http://www.murphybytes.com/?p=405&#34;&gt;about&lt;/a&gt; Minnebar 2007. Let me start by highlighting that &lt;a href=&#34;http://www.alttext.com/&#34;&gt;Ben Edwards&lt;/a&gt;, &lt;a href=&#34;http://luke.francl.org/&#34;&gt;Luke Francl&lt;/a&gt; and &lt;a href=&#34;http://www.unpossible.com/&#34;&gt;Dan Grigsby&lt;/a&gt; did an absolutely amazing, fantastic &lt;a href=&#34;http://www.google.com/search?q=supercalifragilistic&#34;&gt;supercalifragilistic&lt;/a&gt; job of putting together Minnebar. It was simply stunning guys &amp;ndash; and you&amp;rsquo;ve set an incredible bar to try to exceed next year.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/0ce9ed6af5.png&#34; alt=&#34;Minnebar logo featuring a cocktail glass with a snowflake and flame graphic, with the tagline bar camp minnesota&#34; style=&#34;max-width: 418px; &#34;&gt;
&lt;p&gt;Here is the &lt;em&gt;only&lt;/em&gt; thing that is hard about Minnebar. Both this year and last year it happened to coincide with one of the first, really nice weekends of spring. It&amp;rsquo;s hard being a Minnesotan and foregoing one of those great days to hang out inside. However, you are handsomely rewarded for the tradeoff. I didn&amp;rsquo;t see a lot of the people I had invited. You all missed out!&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/9a58eeb86e.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;Two men sit on a couch holding microphones at a conference session, one in a red shirt holding a mic, the other in a striped shirt with a laptop.&#34;&gt;
&lt;p&gt;This year was simply &lt;strong&gt;great&lt;/strong&gt;. The attendance was nearly triple last year. There were so many people that I knew in attendance that I ended up not going to that many sessions. In addition to the folks I knew, there were a lot of new faces to meet. I didn&amp;rsquo;t do any formal presenting this year, but I did get asked to lead the Q&amp;amp;A session with &lt;a href=&#34;http://www.loudthinking.com/&#34;&gt;David Heinemeier Hansson&lt;/a&gt;, the creator of &lt;a href=&#34;http://www.rubyonrails.com/&#34;&gt;Ruby on Rails&lt;/a&gt;. It was a fun time, David is a really cool guy and I liked much of what he had to say. &lt;a href=&#34;http://www.timelliott.us/&#34;&gt;Tim Elliott&lt;/a&gt; got a &lt;a href=&#34;http://timelliott.us/2007/04/23/minnebar-podcast-6-david-heinemeier-hansson-interview/&#34;&gt;recording of the session&lt;/a&gt;, with David&amp;rsquo;s permission, and I&amp;rsquo;m putting a copy of that here for archival purposes, with permission from Tim. (How &lt;a href=&#34;http://creativecommons.org/&#34;&gt;Creative Commons&lt;/a&gt; of us all.)&lt;/p&gt;
&lt;p&gt;&lt;audio controls preload=&#34;none&#34;&gt;
  &lt;source src=&#34;https://files.thingelstad.com/posts/2007/minnebar-7-david-heinemeier-hansson-interview.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
  Your browser does not support the audio element.
&lt;/source&gt;&lt;/audio&gt;&lt;/p&gt;
&lt;p&gt;I also want to give a big thanks to the guys from &lt;a href=&#34;http://www.iphouse.com/&#34;&gt;ip:House&lt;/a&gt; who provided the free WiFi service for the event. It was simply stunning in quality and capability, and not a single hitch the whole day. Great job guys!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m already looking forward to the next &lt;a href=&#34;https://minnestar.org/minnedemo/&#34;&gt;Minnedemo&lt;/a&gt;, and the next Minnebar in 2008!&lt;/p&gt;
&lt;h3 id=&#34;transcript&#34;&gt;Transcript&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Good afternoon everybody. Hope everybody had a good lunch. We filled up with some good pizza. I wanted to start the afternoon session with a discussion on the proverbial couch here. Maybe next time we can get a bigger couch. [laughter] But we were lucky enough to have David Hanson join us. And he&amp;rsquo;s going to take a moment to sit down and answer some questions on a variety of different topics. The format for today&amp;rsquo;s, this session is that I have a number of questions. I can certainly fill the whole time with questions, but I know that you all probably have some questions as well. So I&amp;rsquo;ll kind of guide things along and get things started, but then as you have questions, feel free to raise your hand and we&amp;rsquo;ll take whatever things you guys want to throw out as well. For those of you that don&amp;rsquo;t know David, David is the creator of the Ruby on Rails framework and is one of the major partners behind 37Signals, the maker of many great products that I think a lot of people in the room here use, and a resident of Chicago. So if you can join me in welcoming David. [applause] Wow. Can anybody see us? You think so? How&amp;rsquo;s this? This is better? I was joking earlier that somebody asked to give David a Windows laptop and we&amp;rsquo;ll call it Dignation. Alright. Soon we will&amp;ndash; Soon we will be in position. I think the thing that Dan doesn&amp;rsquo;t recognize is that he&amp;rsquo;s significantly lighter than I am. [laughter] There may not be a couch after this. Alright, so just to get things started, David, can you take a moment just to share with us in your words what is Rails?
&lt;em&gt;00:00&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: Sure. So Rails is a web application framework which is really a fancy word for a bunch of tools to make it easier to produce dynamic websites. And Rails then approached this from the angle of not only making&amp;ndash; or not only helping people make dynamic websites but also making them happy in that progress. So we&amp;rsquo;ve really focused on the notion of just having happy programmers around doing the work that they love to do. So Rails doesn&amp;rsquo;t focus only on optimizing, say, speed or memory usage or any of the traditional computer science values, but just as much as on optimizing the happiness of the programmer working with the framework. So that would be the short spiel for it.
&lt;em&gt;02:38&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Many people were curious what is the genesis of Rails? Where did it start? Where did it come from? How did this enter your head?
&lt;em&gt;03:32&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: Sure. So Rails wasn&amp;rsquo;t really born as some great idea of wanting to conquer web application frameworks. It was extracted from me working on an application called Basecamp, which is one of the applications or products we have at 37sigmals, the company I work at. And I worked on this Basecamp application as the first thing I did in Ruby. And I came to Ruby from a background of PHP and Java, not being particularly fond of either, and just stumbled across Ruby and thought that&amp;rsquo;d be a great way to try this on a new web application that I was building for 37sigmals. And it turned out that even though I might not have loved working in either PHP or Java, there was a lot of things about both of those languages that I did enjoy, and I wanted to bring all that into Ruby. Because Ruby, when I came to it, was in some ways a little bit bare on the web application side of things. There definitely were some web application frameworks, but they didn&amp;rsquo;t quite fit what I was doing. So I pretty much embarked on just creating a web application framework one step at a time. Creating the pieces as I needed them, which meant basically working on Basecamp for a little bit, looking at what I did for Basecamp, trying to pull that out, trying to take the generic pieces and put them into a box that I could use for the next application we were going to do. So I started work on Basecamp in summer of 2003, which was also when I picked up on Ruby. And we released Basecamp in February of &amp;lsquo;04, and by that point, I had pretty much decided that these tools I was creating for Basecamp, I wanted to share them, because Ruby is open source. We&amp;rsquo;ve been using an open source stack. I&amp;rsquo;ve gotten so many great things out of using open source that it was pretty natural that when I was working on something new, that that would have to be open source too. So by the time of the release of Basecamp, I had decided that that&amp;rsquo;s what I wanted to do. But on a number of points, I didn&amp;rsquo;t want this to be like a lot of other open source projects that I&amp;rsquo;ve been using. I didn&amp;rsquo;t want it to be woefully under-documented. I wanted it to be fairly complete. So I didn&amp;rsquo;t want to release version 0.01. So I spent another six months or so cleaning things up, actually writing documentation, trying to put it together as a wholesome package, and then finally released it in, I believe, June of &amp;lsquo;04.
&lt;em&gt;03:42&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Would Rails exist if you want to discover Ruby? &lt;em&gt;06:30&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: I actually tried to create Rails working in PHP. Let&amp;rsquo;s see. It didn&amp;rsquo;t go that well. Because the kind of things that I wanted to extract, the kind of things that I thought I saw patterns of usage, whenever I tried to extract that using PHP, I felt immense pushback from the language. It felt like the language didn&amp;rsquo;t want me to do these things. I took a hint and tried to use something else. It&amp;rsquo;s not that PHP is a bad language by any means. I worked at it for close to five years, and I got a lot of stuff done. So I definitely got a lot of stuff done, and people were getting stuff done in a similar way to what we&amp;rsquo;re getting done in PHP with Rails. But to me, it&amp;rsquo;s not just about getting things done. It&amp;rsquo;s not just about making the application work. It&amp;rsquo;s also about me enjoying that progress. And I wasn&amp;rsquo;t enjoying trying to extract Rails in PHP. It didn&amp;rsquo;t lead to what I perceived to be beautiful code. It didn&amp;rsquo;t lead to me feeling happy about what I&amp;rsquo;ve extracted. So that was a time for me to try something else that wouldn&amp;rsquo;t lead to those things.
&lt;em&gt;06:36&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Feel free to raise your hand if you have a question. I&amp;rsquo;ll find you and bug out. So one of the things that you mentioned to yourself, you just said beautiful code. The Ruby community, particularly the Rails community, focus a lot on code aesthetics. You hear words like beautiful, elegant, much more than you do in other environments. And it&amp;rsquo;s really clear that there&amp;rsquo;s a culture to Rails and there&amp;rsquo;s a culture to Ruby that&amp;rsquo;s different than most other development environments. How do you think that first of all, why do you think that&amp;rsquo;s so important or is it so important? And how does that guide the continuing development of the environment?
&lt;em&gt;08:00&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: So that&amp;rsquo;s one of the things that originally attracted me so much to Ruby. That Matt&amp;rsquo;s creative language had as his primary motivation for creating Ruby, that he wanted to see happy programmers. He wanted to make people happy about what they did. I thought that was just immensely inspiring. And so Matt wanted to make programmers at large happy about what they were doing. And I kind of picked up on that and said let&amp;rsquo;s try to do the same thing just for a more narrow scope of just web applications and web application builders. And part of what makes me happy about programming is to create aesthetically pleasing code. And that sounds in some ways superficial and it sounds like why is that important? The user doesn&amp;rsquo;t see the code. The user doesn&amp;rsquo;t feel any of this beauty and most normal sane people wouldn&amp;rsquo;t call a piece of code beautiful. But I…&lt;/p&gt;
&lt;p&gt;&lt;em&gt;08:44&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Present company excluded.
&lt;em&gt;09:38&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: But I found it to be that creating beautiful code, creating code that I actually like working with is one of the most powerful motivational tools that I know of. There&amp;rsquo;s one thing that can get me to really dig in and get a lot of work done. It&amp;rsquo;s if I strike upon a path that&amp;rsquo;s creating aesthetically beautiful code and I&amp;rsquo;m then finding that when I&amp;rsquo;m inspired about something, when I&amp;rsquo;m happy about what I&amp;rsquo;m doing, I&amp;rsquo;m immensely productive. I really get a lot of stuff done really fast and it tends to be fairly good code if it&amp;rsquo;s aesthetically pleasing. So, I found that just to be my secret weapon for getting a ton of stuff done. More so than any of the individual pros and cons of language design per se. It&amp;rsquo;s, for me, the most important part of Ruby is how it makes me feel as a programmer. How I respond to it as a motivational tool. And the direct correlation I&amp;rsquo;m seeing between my personal motivation and my personal productivity. And that&amp;rsquo;s basically part of the thesis of why I think Rails is successful in some kind is other people finding that to be true too. If they&amp;rsquo;re enjoying the code that they&amp;rsquo;re working with, if they&amp;rsquo;re feeling that that&amp;rsquo;s producing something that they really like, they just tend to get more done. They tend to be more excited about what they&amp;rsquo;re working on. And that in itself leads to great productivity boosts. And maybe the part of what&amp;rsquo;s aesthetically pleasing or whether that leads to motivation is a little wishy-washy, but the correlation between motivation and productivity is not wishy-washy. It&amp;rsquo;s like proven from 20, 30 years of studies into programmer productivity. Steve McConnell, the author of Code Complete, among other books, has this great field. He&amp;rsquo;s summing up all these studies done for showing that motivation is the single most important factor in programmer productivity. That&amp;rsquo;s really what we honed in on and tried to optimize for.
&lt;em&gt;09:40&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: How did you come to programming yourself?
&lt;em&gt;11:54&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: I came to programming through meeting programs. So I started doing actually game journalism back in the late 90s. And getting into that was kind of hard before the internet. There was one way and that was magazines. I didn&amp;rsquo;t particularly want to go that route, so I thought, &amp;ldquo;Hey, you can throw up a website and you can write whatever you want about games and maybe that&amp;rsquo;s a way to go forward.&amp;rdquo; So I found that to get a gaming website going, I needed some programming. So I got involved with just enough programming to throw up a content page with reviews of games and slowly just got into it through that way.
&lt;em&gt;11:56&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Go ahead.
&lt;em&gt;12:42&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audience&lt;/strong&gt;: [ inaudible ] [ inaudible ] [ inaudible ] [ inaudible ] &lt;em&gt;12:44&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Just to highlight for those of you in the back, there&amp;rsquo;s a statement that beauty does imply efficiency in ongoing maintenance and support of code. That&amp;rsquo;s why it does have a long life cycle. Would you say that?
&lt;em&gt;13:21&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: Oh, totally. And I think that one of the things that, in general, makes people most depressed about working on maintenance work is that they end up with, like, write-only code, like code that was written to optimize for various properties where none of those were aesthetically pleasing. And that&amp;rsquo;s kind of fine when you&amp;rsquo;re in the flow and you actually know what&amp;rsquo;s going on, but if you have to return to that code three months later and work on it again, those optimizations are not fresh in your memory, so you&amp;rsquo;re just stuck with the code that was actually produced, which is often not very aesthetically pleasing. And if you&amp;rsquo;re lucky, it might have documentation, but I always found code documentation to be kind of a prod. It&amp;rsquo;s kind of just a way around the fact that I&amp;rsquo;m producing ugly, unreadable code. Like, what about just making readable code from the get-go, something that people can actually understand from just reading the code? And then you don&amp;rsquo;t need to explain to them how this ugliness works. So that&amp;rsquo;s been one of the major driving forces, actually, and we pretty much have a policy at 37Signals of no code documentation. If your code needs documentation, you&amp;rsquo;re probably doing it wrong. Sometimes that&amp;rsquo;s not true. Sometimes you have to work around some library or some idiosyncrasy of the language or something else where you need to document that this is weird, this is something special, but that should be the exception. You should not assume that your code is ugly, unreadable, unmaintainable. If you assume those three things, it&amp;rsquo;s a pretty good guarantee that it&amp;rsquo;s going to be ugly, unreadable, and unmaintainable. So it&amp;rsquo;s just about changing that whole mindset of saying code should not be those things. Code can be readable, maintainable, and so on. And you get a lot of derivative attributes for free when you start focusing on aesthetics. So a 40-line method is probably not aesthetically pleasing. A method that goes in and out and in and out because it has a ton of control structures and three layers of nested ifs, that&amp;rsquo;s not going to look pretty. If you try to optimize that to look pretty, you usually end up with five methods instead of one. You end up with methods that are named what they do, surprisingly, or just a few lines of code, which doesn&amp;rsquo;t have nested control structures, doesn&amp;rsquo;t have all of these other desirable attributes that we kind of say, &amp;ldquo;Yeah, yeah, yeah, it&amp;rsquo;s good not to have nested control structures.&amp;rdquo; But if you don&amp;rsquo;t have aesthetics as a driving, important principle in the work that you do, it&amp;rsquo;s very easy to just brush that off. &amp;ldquo;Hey, it works.&amp;rdquo; Right now it does.
&lt;em&gt;13:33&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Do you think that it&amp;rsquo;s hard that&amp;ndash; many engineers I know don&amp;rsquo;t really have a sense of aesthetics. Is that something&amp;ndash;I mean, do you see that? I won&amp;rsquo;t comment that David has really exceptional shoes on today.
&lt;em&gt;16:14&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: I think that&amp;rsquo;s true to some extent, but it&amp;rsquo;s not really true, because a lot of geeks and engineers are fascinated by beautiful things outside of fashion. Mathematical proofs, things in nature, things that are just consistent, and a machine that has fewer moving parts. All of these things that are true to nature of engineers can very well be described as beautiful. If you try to relate it in those terms, it&amp;rsquo;s a lot easier. Aesthetics is not just about pretty things. I think that&amp;rsquo;s probably&amp;ndash;code is never pretty. It&amp;rsquo;s not going to be pretty, but it can very well be aesthetically pleasing. Just as an implementation of some machine can be aesthetically pleasing. Like an engine, how an engine works. I find a lot of car engines to be very aesthetically pleasing. You wouldn&amp;rsquo;t point at it and say it&amp;rsquo;s pretty. There&amp;rsquo;s just more shades of words you can use to describe this. If you route around the notion of aesthetically pleasing, meaning fashion or pretty or these things, you find that there&amp;rsquo;s a lot of other areas where this is still true. It&amp;rsquo;s something that naturally appeals to engineers and programmers.
&lt;em&gt;16:35&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Any questions? Just put your hand up. In your blog, you wrote about&amp;ndash; you talk a little bit about some of the things coming up in Rails, but you highlight it specifically, and it&amp;rsquo;s interesting. The history of Rails comes out of Basecamp, and you highlight it specifically in the development of the new application from your company HiRise and some of the extensions to Rails as a result of that. Could you just comment on some of the things that you think are most exciting to you that we&amp;rsquo;ll see in future releases of Rails as a result of that?
&lt;em&gt;17:54&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: Sure. For HiRise, which is the newest application from 37SQL that I&amp;rsquo;ve been working on for too long, I&amp;rsquo;m working right now on the API, so the way to talk to this web application through other means than a browser. Make some program that can talk to HiRise. Just as quick, HiRise is like a shared contact manager where you can share contacts with the rest of your company, what you&amp;rsquo;re talking to them about, and what you need to do next. It&amp;rsquo;s kind of like Salesforce but fun, sort of. Right. In some ways, it does kind of relate to the CRM-ish kind of thing, but without all the sales pipelining and so on. Just focused on people, what you did with them, and what you need to do with them next. For that work, I&amp;rsquo;ve been working on an API, and I had the intention of working on an API from the get-go. That&amp;rsquo;s really what kick-started my interest in the whole idea of REST. So using the web and the techniques native to the web to produce an API to run programs again. For a long time now, that&amp;rsquo;s probably been the major overarching theme of new, exciting things in Rails. The whole push for getting things to be natively REST-form. Part of that is something called Active Resource, which is basically&amp;ndash; Active Record is the database mapping layer in Rails, which basically makes it such that you can talk to a database in Ruby, and it&amp;rsquo;s fairly pleasant to do so. Active Resource is basically the same thing, but for web API. So you treat a website like a database, and you interact with it that way. I&amp;rsquo;ve been just recently doing a lot of work with Active Resource, with making Rails easy to produce XML that Active Resource can easily digest. Through that whole process, we came up with a number of interesting points that has had a pretty big impact on how a lot of modern Rails applications are produced. A side note to that is it&amp;rsquo;s kind of interesting that REST has been out now for 2.5 years, a little bit more than that, and even in that short period of time, we have the notion of &amp;ldquo;modern&amp;rdquo; and &amp;ldquo;old.&amp;rdquo; But anyway, the modern approach to doing web applications in Rails is by and large this RESTful approach. We&amp;rsquo;ve been building a bunch of conventions on top of that that makes the controller parts of these things look very much the same across everything, making it just incredibly easy to think of your web application as more than HTML producer. For Highrise, for example, we&amp;rsquo;re dealing with contact data. Contact data often wants to come in a number of different formats than HTML, like CSV files. Somebody has an Excel spreadsheet with everybody for this conference that they want to get into Highrise. How do you work on that? You need to make your application understand CSV. And Vcards, like the standard for moving contact data between Outlook and AdWords Book on OS X, those kind of formats are something that we want the web applications to natively produce. And we don&amp;rsquo;t want it to be a hack-off. We don&amp;rsquo;t want it to be an action called &amp;ldquo;contact to CSV.&amp;rdquo; We want it to be part of the natural flow of the application and be just as valid as HTML. So this whole notion of perceiving your web application as basically multi-view. HTML is still, by and large, the primary format, but there&amp;rsquo;s a ton of other formats out there who can take advantage of exactly the same infrastructure set up. There doesn&amp;rsquo;t need to be exceptions. And when it&amp;rsquo;s not exceptions, and it does take advantage of the setup you already built for HTML, you almost get it for kind of free. And that&amp;rsquo;s the notion we&amp;rsquo;ve had with having HiRise produce XML, for example. A lot of the actions we have will just have, say, &amp;ldquo;person.toXML,&amp;rdquo; as that&amp;rsquo;s part of its&amp;ndash;one of its return options that can return to XML. And I think that that&amp;rsquo;s just been really powerful as a change of mindset of what web applications are, how hard is it to accept and produce other formats, and what does APIs mean to this whole thing. So my hope is that this thing spreads more, and people just start natively thinking of their applications as multi-views from day one and not as APIs or these weird hack-on things we need to do because somebody&amp;rsquo;s requesting it down the road. And once you get that, we can start treating more web applications as databases in the sort that&amp;ndash; I can work with HiRise for Basecamp and other applications we have just by instantiating an active resource object, and I don&amp;rsquo;t need to build all this stuff from scratch.
&lt;em&gt;18:26&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: It&amp;rsquo;s interesting because much of what you&amp;rsquo;re talking about sounds to me similar to when you hear Tim Berners-Lee talk about semantic web. And so is this kind of allowing us to drive Rails applications to become more part of future semantic web?
&lt;em&gt;23:44&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: First of all, I&amp;rsquo;ve got to say that Tim Berners-Lee is a wonderful man, but I don&amp;rsquo;t have a lot of hope or faith in semantic web. I don&amp;rsquo;t have a lot of hope or faith in widespread adoption of perfect and marked-up data. I just don&amp;rsquo;t think it&amp;rsquo;s going to happen. The same reason that people go all the time on the desktop. If only people would add metadata to their PDFs, if they only would fill in the greater fields, what this was about, the description, and so on, people don&amp;rsquo;t. And they&amp;rsquo;re never going to. And we might as well just realize that. And I think that&amp;rsquo;s why Google is so fantastic, why Google works. And I think that&amp;rsquo;s the way forward, just recognizing human behavior and saying, &amp;ldquo;Okay, I&amp;rsquo;m not going to change how humans work. I just have to accept that for a fact. They&amp;rsquo;re not going to do the pre-filing.&amp;rdquo; That&amp;rsquo;s a big part of why tags became so big. Nobody wanted to set up a huge, hierarchical category structure up front and then file their little things into them. That&amp;rsquo;s just not how most people work. Most people are just not that organized. So tags allowed people to, after the fact, say, &amp;ldquo;Oh, by the way, this is a customer. This is a VIP. These things I can use to describe it for. I don&amp;rsquo;t need to have all the categorizations to be perfect up front.&amp;rdquo; And I think in some ways the semantic web, to me, I have a, I&amp;rsquo;ve got to say a disclaimer, a limited understanding, and even in some ways interest in the semantic web. So I might be wrong on it, but it seems to me that it requires too much structure too soon. And I don&amp;rsquo;t see people buying into that.
&lt;em&gt;24:02&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: I may want to throw a question out, and I&amp;rsquo;ll repeat it. &lt;em&gt;25:50&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audience&lt;/strong&gt;: From your perspective, if it has, how has Rails impacted the evolution of the Ruby language?
&lt;em&gt;25:54&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: So the question was, how has Rails impacted the development of Ruby? &lt;em&gt;26:01&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: In some ways, I shouldn&amp;rsquo;t say surprising, that&amp;rsquo;s assuming, but very little. Like, the version of Ruby that I started using two and a half years ago, pretty much the version of Ruby we use today. Ruby doesn&amp;rsquo;t move that fast. And in some ways that&amp;rsquo;s great, because Ruby doesn&amp;rsquo;t have to use that fast, move that fast, because we can extend Ruby. So we are not settled with whatever Ruby is shipped with. In a lot of ways, Rails is a special version of Ruby. We have something called Active Support, which is basically all our ideas of what Ruby should be able to do more for this particular niche. We put it into a box, and we wrapped it around Ruby in such a way that when I start up a vanilla IRB, I kind of don&amp;rsquo;t understand this vanilla Ruby syntax. Because it doesn&amp;rsquo;t have all these things that I&amp;rsquo;m used to having. It doesn&amp;rsquo;t need to, it&amp;rsquo;s great. I have no rush for a new Ruby. I know a lot of people have this notion that only when Ruby 2 comes out and we get native threads and magic performance, things will be wonderful. Okay, I don&amp;rsquo;t really care. First of all, I don&amp;rsquo;t need a much faster Ruby. It&amp;rsquo;d be nice to have. It&amp;rsquo;d be nice to have an ice cream right now. I&amp;rsquo;m not going to die if I don&amp;rsquo;t get one. And I mean, that&amp;rsquo;s kind of how I feel. It&amp;rsquo;d just be nice. Free performance. Who would say no to that? You don&amp;rsquo;t need it. I don&amp;rsquo;t need it, and you probably don&amp;rsquo;t. I&amp;rsquo;ve got into trouble of saying that people don&amp;rsquo;t need performance, but I&amp;rsquo;ll say it anyway. Most people just don&amp;rsquo;t need a faster Ruby. They think they do. They think they&amp;rsquo;re going to be the next Amazon or MySpace or Twitter. Dreams are important, even&amp;ndash; [laughter] Every kid on the block thinks he&amp;rsquo;s got to play in the NBA. Sorry, dude. Reality sets in, and ten people start doing that a year. And one startup out of hundreds or thousands will ever get that problem where they actually have to start worrying about these things. But that&amp;rsquo;s a hard sell. And I found that to be true, that everybody wants to think that they&amp;rsquo;re special, and who can blame them, even if they&amp;rsquo;re not? In that aspect of applications, I&amp;rsquo;m sure you&amp;rsquo;re all very special people. [laughter] So in some ways, we&amp;rsquo;re, I think, selling too much reality for some people. And it&amp;rsquo;s hard selling reality. What was the question? [laughter]
&lt;em&gt;26:06&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: I think we answered it. Ben.
&lt;em&gt;28:45&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: Yeah, sure. Two questions. First, is there any gems or plugins that I use in my work that&amp;rsquo;s not yet in Rails? In some ways, Rails is my plugin. So I&amp;rsquo;m kind of self-serving in the fact that if I need something, it pretty often goes straight into Rails. I do have a number of plugins, though, for things that are not quite baked yet. That&amp;rsquo;s HTTP authentication, for example. I use a plugin for that. I use a plugin for OpenID. I use a plugin for&amp;hellip; let&amp;rsquo;s see. I have a few other plugins. Nothing major. I tend to think of plugins as&amp;hellip; they&amp;rsquo;re best when they&amp;rsquo;re tiny. I have a plugin that&amp;rsquo;s three lines of code, and I love it. That&amp;rsquo;s the kind of size I want to get for my plugins. I don&amp;rsquo;t want to get these huge honking beasts of plugins. So I tend to not use that many plugins. And if what I really&amp;hellip; I&amp;rsquo;m a little bit ambivalent on the whole plugin thing. It&amp;rsquo;s great that we have this architecture so that people can extend Rails without actually bothering us about it. But at the same time, it kind of creates this atmosphere that, as part of this question, like, what are the secret plugins? What are those magic plugins that makes everything great? They&amp;rsquo;re just not there. There are not these special magic plugins, and you don&amp;rsquo;t have to use plugins. A lot of applications would do very fine if they had zero plugins. So I mostly just want to combat the whole notion that you need plugins. Sometimes they&amp;rsquo;re nice to have, but very often if you feel like you need plugins because something is hard, or you think something is hard, authentication is the bane of my existence. Just the number one plugin people have started asking about from day one, even though they hardly touch Rails at all, like, how do I get an authentication plugin? How do I get the user setup and ACL and blah, blah, blah? I re-implement that stuff every time from scratch. It&amp;rsquo;s really not a big deal. The problem with plugins are that they keep people in the illusion that it&amp;rsquo;s a big deal. Because they add this magic black box that they think does magic voodoo tricks, and really it doesn&amp;rsquo;t. Like, it&amp;rsquo;s a few lines of code. So, that was plugins. Gems? I really don&amp;rsquo;t like dependencies. That kind of means that for the vast majority of gems out there, I would prefer if they were part of the application. So, a few gems like Rake, system-wide tool that everybody will use all the time, like the MySQL C database connection, Rake, Capistrano, those kind of tools are great as gems. Stuff like Redcloth, for example. Redcloth is an implementation in Ruby of text style, which is a text formatting thing. I think it&amp;rsquo;s a bad fit for a gem. Because once you start relying on too many of these dependencies, shit just always breaks. You never have to plug the gem in the right version, or you rely on it, then you upload it to the server and it breaks. I&amp;rsquo;m not a big fan of dependencies. So, I try to shove everything I can into the application box. And I don&amp;rsquo;t mind the duplication. I think some of the things that really turned me off this stuff was Debian. So, Ruby on Debian comes, at least it used to, in 43 distinct packages. They took Ruby, not a huge language, and chopped it up into 43 pieces to make sure that there would never be any duplication, that you never had more than exactly what you needed. Who cares? Ruby is 5 megabytes of space. People who need to worry about getting 3.7 megabytes Ruby distribution rather than 5 megabytes of distribution, not the majority. Most people are fine just having a 5 megabyte Ruby distribution. That&amp;rsquo;s the same as everybody else has. And we&amp;rsquo;ve just had so many problems with that. Oh, I forgot to install the 41st package. Got it, now my application doesn&amp;rsquo;t work. I brought this ship too much into the&amp;ndash; I&amp;rsquo;m trying to snap as much into&amp;ndash; That&amp;rsquo;s also why Rails ships with a good number of other frameworks. We could have added probably at least 10 more dependencies on things that I&amp;ndash; This is 75 lines of Ruby code. I&amp;rsquo;m not going to add a dependency to get that in. I&amp;rsquo;m just going to shove it right in there and kindly ask if I can bungle it under an MIT license. [laughter] Actually, we did get permission after the fact for all the things we&amp;rsquo;ve bunged. [laughter] Question number two was&amp;ndash;
&lt;em&gt;29:02&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: It was the R spec. - Oh, yeah.
&lt;em&gt;34:03&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: So there&amp;rsquo;s&amp;ndash;TDD or test-driven development has always been a big thing in the Rails camp. And I&amp;rsquo;ve been a big proponent of not test-first and test-along development. I don&amp;rsquo;t necessarily&amp;ndash;I&amp;rsquo;m not religious about the test-first thing. And I actually find that a lot of times test-first doesn&amp;rsquo;t work for me. I kind of need to work on the API sometimes a few times before I have to test. I don&amp;rsquo;t know what my result is actually going to look like before I start working on it. And now there&amp;rsquo;s this BDD, behavior-driven development, which is basically like test-first but calling your things something else. Which is&amp;ndash;that&amp;rsquo;s not to be discounted. Sometimes the names of things matter tremendously. And I think that&amp;rsquo;s actually the most important skill a programmer can have is being good about picking names. Names for variables, names for classes, names for methods. All of these things are hugely important, so I don&amp;rsquo;t want to discount that. I&amp;rsquo;m just finding in the BDD case that I took one thing away, which was saying&amp;ndash;use the word &amp;ldquo;should.&amp;rdquo; If you use the word &amp;ldquo;should&amp;rdquo; in your test case, like &amp;ldquo;overdue subscription should not process payment,&amp;rdquo; that very much frames this one test case about one thing, which is much better than &amp;ldquo;test overdue subscription.&amp;rdquo; There could be a lot of things about the overdue subscription that you could want to test, and you often end up with a test case that has, like, five different assertions that are not really that related. So I took that away, and I just shoved it into the test setup we have now, and I&amp;rsquo;m finding that that&amp;rsquo;s good enough for me. I totally don&amp;rsquo;t want to discount that other people need more stuff and their assertions should say &amp;ldquo;should&amp;rdquo; too. It&amp;rsquo;s just not a big deal for me.
&lt;em&gt;34:06&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audience&lt;/strong&gt;: David, you moved here from Illinois and moved to Chicago to be part of 37Signals. You&amp;rsquo;ve been working with 37Signals for a while. Do you have any thoughts about doing cloud projects or actually joining 37Signals, and how that experience can be of value to you as a small company? Do you have any thoughts about that?
&lt;em&gt;36:03&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: Sure.
&lt;em&gt;36:25&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: The question was just how did you get connected with 37Signals, and a little reflection on how that&amp;rsquo;s happened.
&lt;em&gt;36:29&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: So I started working with 37&amp;ndash; Actually, the funny thing is, 37Signals was my first paid programming job back in 2001, 2002. I started working for Jason, which is my partner at 37Signals now, on an application called SingleFile, which is manager, book collection, online, kind of inventory database application. We did PHP back then. Since then, I worked with the company for about 3 1/2 years or so, during which time I was in school. I just worked as a contractor. 37Signals back then was doing design work for clients, and they would often pitch a design project, and I would do the programming side of things. So that worked out great while I was in school. And then once I was done with that, we were getting started with Basecamp, and I was done with school, and I had a decision to want to go for a master&amp;rsquo;s degree or start my own company, or whatever I wanted to do. And one thing I knew was if I was going to work at a company, I was going to work in some essence for myself. There was not going to be&amp;ndash; At that time in my life, or still, at that time in my life two years ago, it was&amp;ndash; I could sustain a lot of risk. So if 37Signals didn&amp;rsquo;t work out, fine. I didn&amp;rsquo;t get paid that much in the beginning. There wasn&amp;rsquo;t that much, and that&amp;rsquo;s how it is when you&amp;rsquo;re equity-based. You trade up front&amp;ndash; You get risk and up front not much pay or something. Anyway, that worked out fine at the time, so the choice was really simple. Either I was going to be a partner at 37Signals, or I was not going to be with 37Signals. So luckily Jason thought, &amp;ldquo;Hey, I&amp;rsquo;ll be a part of the company rather than go somewhere else.&amp;rdquo;
&lt;em&gt;36:36&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: - A question on that, just coming into what 37Signals has been doing. Any hint on what&amp;rsquo;s going to be next from 37Signals?
&lt;em&gt;38:41&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: - Sure. So we just launched FireEyes about a month ago, and I think going forward we have now five applications, and we&amp;rsquo;re going to make those work better. And we&amp;rsquo;re going to do more applications. So there&amp;rsquo;s no real major revelation or revolution there. We&amp;rsquo;re just going to continue to work on applications that we feel we need for our own problems, try to solve them the best we can, and improve the stuff we have already. We have no big plans to take over the world in some areas and niches that we don&amp;rsquo;t know a lot about or don&amp;rsquo;t care about. So we&amp;rsquo;re going to stay within the space of productivity and collaboration and tools to run the business that we run. That&amp;rsquo;s how we came up with FireEyes, was that we started needing, keeping track of the people we were talking with and what we had to do next and what we said to them. And that&amp;rsquo;s been the road pretty much in all the applications we&amp;rsquo;ve done, something we need for ourselves. And I think that&amp;rsquo;s just the easiest way to get a great application. Find a problem that you find annoying and valuable, something that you would pay for yourself if somebody else did it, and then start working on it. I think that that&amp;rsquo;s a very good driver. You can certainly do good and great applications working on behalf of somebody else, trying to get into their mind and figure out what their problems are. But that problem is not twice as hard. It&amp;rsquo;s ten times as hard. And I really don&amp;rsquo;t like hard work. [laughter]
&lt;em&gt;38:52&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Does 37signals have&amp;ndash; I mean, do you have&amp;ndash; I would assume you have specific designers versus engineers. What&amp;rsquo;s the ratio? I&amp;rsquo;m just curious.
&lt;em&gt;40:31&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: First of all, we don&amp;rsquo;t have any engineers. I hate the word &amp;ldquo;engineers.&amp;rdquo; Engineers are people who build bridges so they don&amp;rsquo;t fall down. They&amp;rsquo;ll get a piece of Ruby code and think it&amp;rsquo;s beautiful. So we have developers and programmers, and we actually have a fair amount of bleed-over. We have a good number of developers who have some sense of design, and we have designers who have developed some sense of programming flair. So we have currently, what, four developers, myself included, three designers and a systems administrator and a contract-based person to help out with customer support that just started recently. So that&amp;rsquo;s pretty much the supply. So we&amp;rsquo;re a little front-loaded on developers right now. It used to be more the other way around. I used to be the only developer, and now I&amp;rsquo;m one of three other designers.
&lt;em&gt;40:40&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audience&lt;/strong&gt;: What has your experience been working for a startup in a city that&amp;rsquo;s not really known for the high-security?
&lt;em&gt;41:46&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: The question was, what has your experience been working in a startup in Chicago, which is not necessarily known as a technology hub?
&lt;em&gt;41:53&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: First of all, 30 Seconds Eagles is not a startup. We&amp;rsquo;ve been around since &amp;lsquo;99. We actually make money selling products that people want. I think that pretty much rules out 80% of startups. [laughter] So I kind of&amp;ndash; a startup is something that doesn&amp;rsquo;t apply to us. We don&amp;rsquo;t work out of a garage. We don&amp;rsquo;t have VC funding. And we take it pretty easy in the fact of just working on stuff that&amp;rsquo;s profitable. So to me, we&amp;rsquo;re just a company. I think that term somehow got lost along the way in technology, that either you&amp;rsquo;re a startup or you&amp;rsquo;re this huge, massive corporation. We&amp;rsquo;re just a company. But being in Chicago, I think it&amp;rsquo;s wonderful. I think the times I&amp;rsquo;ve been in San Francisco, and especially lately in the West Coast in general, is how do people get anything done? [laughter] I don&amp;rsquo;t understand how, like, between all the parties and shit going on, it&amp;rsquo;s got to be kind of hard getting stuff done. And that&amp;rsquo;s what I like about Chicago. There&amp;rsquo;s not a tech scene that you kind of have to be part of and these things that you have to participate in. And along with that comes a mindset of actually just getting shit done. And I think that&amp;rsquo;s very helpful for us. That&amp;rsquo;s very helpful when you&amp;rsquo;re eight people and not looking to hire another 24 next month. Like, you actually need people to just get work done. So I think it&amp;rsquo;s led us to be way more&amp;hellip; restrained in how we spend resources. We don&amp;rsquo;t hire a ton of people. We don&amp;rsquo;t think we need to hire a ton of people. We don&amp;rsquo;t throw elaborate launch parties and that kind of stuff. And I like that. It&amp;rsquo;s in some ways separating more that there&amp;rsquo;s&amp;hellip; I&amp;rsquo;d like to do other stuff too. Like, not just be in this echo chamber of, like, tech startups.
&lt;em&gt;42:00&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: I&amp;rsquo;m curious. You&amp;rsquo;ve been writing a lot on your site about OpenID, and it seems like you&amp;rsquo;re pretty excited about it. What are your thoughts on OpenID, and do you think it&amp;rsquo;s going to make it?
&lt;em&gt;44:13&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: Sure. So OpenID is basically a centralized, single sign-on with extra stuff. So basically, I&amp;rsquo;ve had the problem with other applications that I might have or be involved with four different base camps, and I have different passwords for all of them, and I can&amp;rsquo;t remember any of them. And OpenID just gives you basically one log-in to all your applications. And I find that to be pretty cool, pretty much. Or maybe in some aspects, because of all the work I don&amp;rsquo;t have to do. We have a lot of customers who keep clamoring, &amp;ldquo;When do you add single sign-on to all the third-sem sequence apps?&amp;rdquo; And, &amp;ldquo;Hey, somebody else went ahead and did it for me.&amp;rdquo; I love that kind of work. So OpenID, in our minds, has replaced the notion that everybody needs to build their own single sign-on systems. And I think that&amp;rsquo;s a huge help. And I also think that the implementation is very pragmatic, especially the 1.0 spec. We&amp;rsquo;re going to work with what&amp;rsquo;s there, we&amp;rsquo;re going to make a few hacks, and it works. There&amp;rsquo;s not too much to it, and somebody could implement that in a very short period of time. I&amp;rsquo;m a little disconcerned about the direction the next evolution of the spec is taking. Usually when somebody sees a good, simple thing, they&amp;rsquo;re like, &amp;ldquo;Great, this is so simple, it just works. Let&amp;rsquo;s make it complex and screw it up.&amp;rdquo; [laughter] I don&amp;rsquo;t want to say that&amp;rsquo;s what&amp;rsquo;s happening, because smart people are involved, and I&amp;rsquo;m sure we&amp;rsquo;re going to end up with something nice, but SOAP started out being kind of simple.
&lt;em&gt;44:27&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: I was waiting for you to say that.
&lt;em&gt;46:02&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: It&amp;rsquo;s not so today. It&amp;rsquo;s completely fucked up by all the complexity being added into the mix. And in some ways, that just comes from people&amp;rsquo;s natural enthusiasm. They see something they like, and, &amp;ldquo;Hey, what if it also had a horn on this side?&amp;rdquo; I mean, it doesn&amp;rsquo;t need a horn on this side. Just let it be what it is. We get that all the time with our applications. I really love Basecamp. It&amp;rsquo;s wonderful, and people understand it right away, and I don&amp;rsquo;t need to train people, and it&amp;rsquo;s so simple. And by the way, could you please add Gantt charts, critical path calculations, and these three other things? That&amp;rsquo;d be perfect. It&amp;rsquo;s so funny. A lot of people can&amp;rsquo;t see the disconnect. You like this because it doesn&amp;rsquo;t do all these things. If you started adding all these things back in, you wouldn&amp;rsquo;t like it. And you want five things. If we said yes to all the people who want those five things, it&amp;rsquo;d be this honking monster. I think it&amp;rsquo;s called SharePoint. [laughter] And I mean, that&amp;rsquo;s just not the kind of work we do. And that&amp;rsquo;s the whole notion of not only the work we do with 37signals, but I think with Rails, too, is we try not to work on the request of customers or people. Don&amp;rsquo;t do what they say. Do what they need. So you work on behalf of somebody. You try to understand what are the underlying concepts of what they&amp;rsquo;re trying to do. And unfortunately, it works in the sense of you get an application that a lot of people like, but they can&amp;rsquo;t necessarily put their finger on why they like it. And if you try to explain to them why it is that they like it, they think you&amp;rsquo;re arrogant. They think you&amp;rsquo;re being paternalistic. They think you&amp;rsquo;re trying to make decisions of what&amp;rsquo;s better for them. And in some ways, frankly, you are. Because a lot of people just don&amp;rsquo;t know what&amp;rsquo;s good for them. And hey, that&amp;rsquo;s just not something a lot of people want to hear. But they want to hear that my needs are important and we value all your contributions. And we do. As we say, we listen to everybody. That goes for Rails, it goes for 37 Signals, it goes for pretty much anything. We listen to what people say. We just don&amp;rsquo;t necessarily agree. And people have a very hard time understanding it. They understand it, they just don&amp;rsquo;t agree. Customers in particular, and even not customers, people just using Rails, if they have a request for something and you say, &amp;ldquo;That&amp;rsquo;s interesting, but I don&amp;rsquo;t agree. That&amp;rsquo;s not going to happen.&amp;rdquo; You&amp;rsquo;re an arrogant prick for turning them down. They wanted something, and why are you not doing it right now? So that&amp;rsquo;s kind of just the flip side of what you have to just be able to put up with if you really want to work on behalf of somebody rather than on the request of somebody.
&lt;em&gt;46:04&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Also called building great products. Question? &lt;em&gt;48:57&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audience&lt;/strong&gt;: With the ease of use of OpenID, do you see the web applications having a problem of creating a distinction between using it as an identification and not as an authentication?
&lt;em&gt;49:02&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: So the question was, with OpenID being so easy, do you worry about the use of authentication versus kind of a title-less management? Did I get that right?
&lt;em&gt;49:12&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audience&lt;/strong&gt;: Using it to identify a person instead of proving that it&amp;rsquo;s them. &lt;em&gt;49:24&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: I don&amp;rsquo;t care one way or the other. To me, it&amp;rsquo;s kind of all the same. And we use it for identification and authentication. When we look somebody up as authenticating with OpenID, we use their OpenID to look up who they are. It&amp;rsquo;s more than just&amp;ndash; they don&amp;rsquo;t have a separate thing to identify themselves. They have their identity URL. So in some ways, that&amp;rsquo;s the whole authentication thing. There&amp;rsquo;s a lot of people who thought a lot about it, and that&amp;rsquo;s great. I think what&amp;rsquo;s good about OpenID in its current form is that it feels like this was just somebody who needed to get some stuff done. Didn&amp;rsquo;t necessarily need to think that much about the conceptual differences between the different aspects of it. And that, I think, makes it simple. Versus a lot of other authentication approaches that have been proposed by people who really know a lot about authentication end up being very complex because it relies on a lot of this deeper understanding. I think that&amp;rsquo;s kind of the special gift you get when you jump into some niche or some culture and you don&amp;rsquo;t really fully understand what&amp;rsquo;s going on. You tend to demolish a lot of preconceptions about how things should work. When I first came to Ruby, I didn&amp;rsquo;t really understand Ruby. So I just wanted&amp;ndash; why couldn&amp;rsquo;t this be different? Why is the web stuff not like this? And I did a lot of things to change Ruby in some ways to make it work like I thought it should work because I didn&amp;rsquo;t understand it all. If I understood it all, I&amp;rsquo;d say, &amp;ldquo;Yeah, that is kind of a pain point, &amp;ldquo;but I understand why it is for this and this reason.&amp;rdquo; And you get to be too sympathetic to complexities. Once you understand something to the core, it&amp;rsquo;s very hard to change it, I find. Anyway.
&lt;em&gt;49:29&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Rails has been adopted with wild abandon in the open source community. It&amp;rsquo;s growing extremely fast. But we&amp;rsquo;re just now starting to see Rails getting into the enterprise. What do you think about that? Is that for you at all? Do you cheer, say, &amp;ldquo;Hey, that&amp;rsquo;s great&amp;rdquo;? What do you think?
&lt;em&gt;51:31&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: I think that programmers anywhere being more happy because they use Rails, I think that&amp;rsquo;s great. People who want to get Rails into the enterprise and feel that Rails needs to become enterprise-ready software to do that, it&amp;rsquo;s not so great. The whole enterprise-ready thing, I think, is a big crock. To me, enterprise is a bad word. If you call something enterprise, you better be able to get your hands up. That&amp;rsquo;s an insult. That&amp;rsquo;s picking a fight. If you call my software enterprise, I&amp;rsquo;m not going to take that lightly. I find enterprise to mean overpriced, overcomplex, and not really that useful. I think that enterprise is usually something that happens when people need to use something or different from the people who commission something. People buy something for other people to use. They love enterprise. Enterprise is golf and sticks and strippers and hookers and expense accounts. That&amp;rsquo;s awesome. What&amp;rsquo;s that like about enterprise? People taking you out on their dime and kissing your ass? That&amp;rsquo;s awesome. You just happen to end up with the software that these guys produced, which is not so awesome. But what do you care? I think that&amp;rsquo;s a big part of why enterprise works. I don&amp;rsquo;t have an expense account to wine and die on, and frankly, I don&amp;rsquo;t care. We&amp;rsquo;re not playing the same game. That&amp;rsquo;s just how it&amp;rsquo;s different. I think that&amp;rsquo;s good. I think it&amp;rsquo;s awesome if enterprise customers want to use Rails, but maybe they should realize or at least sympathize with why it is that they want to use it in the first place and not just buy another package from, insert favorite paint enterprise producer. I&amp;rsquo;m not going to name anybody. That&amp;rsquo;s the reason I got attracted to it in the first place, because it wasn&amp;rsquo;t all of these things that they already have. And that&amp;rsquo;s painting a brush, I know, and stereotypes are more fun than delicate realities, and that&amp;rsquo;s what I have for a two-minute answer.
&lt;em&gt;51:54&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: We&amp;rsquo;re going to wrap up, but I wanted to ask two quick questions before we wrap up. And also thank you for the time and for your answers. One, I was curious to know what you thought about being known as DHH.
&lt;em&gt;54:12&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: I freaking hate it. Please stop. Being an acronym, I can&amp;rsquo;t think of something worse. Like, CRM is an acronym, and I hate that. Being your own acronym sucks. My name is David, and that&amp;rsquo;s not that hard to say.
&lt;em&gt;54:32&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: I was just curious, I mean, you&amp;rsquo;re a young man, you&amp;rsquo;ve done a lot, you&amp;rsquo;ve created this thing that is changing a lot of environments, changing how developers are working in a lot of areas. What&amp;rsquo;s next? What&amp;rsquo;s next for you? What are your thoughts? What do you look out 10, 20 years and say, &amp;ldquo;Where am I at that point?&amp;rdquo;
&lt;em&gt;54:49&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt;: I don&amp;rsquo;t. I think plans are for fools. For that kind of look out, I didn&amp;rsquo;t know where I was going to be two years ago, and if I thought I knew, I probably wouldn&amp;rsquo;t be this. And I probably would rather want this than what I thought two years ago would be a nice place to be. So I try to make no plans. I try to just enjoy what I do right now, and perhaps next week. That&amp;rsquo;s a pretty good plan. &amp;ldquo;What do I need to do next week?&amp;rdquo; Kind of like that. Longer than that, it&amp;rsquo;s just guessing, and that&amp;rsquo;s just not that interesting. It&amp;rsquo;s much more fun just doing something and trying to hypothesize what the future&amp;rsquo;s going to look like.
&lt;em&gt;55:11&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jamie&lt;/strong&gt;: Well, thank you.
&lt;em&gt;55:52&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audience&lt;/strong&gt;: [applause] [applause continues] [applause continues] [applause continues] [APPLAUSE]
&lt;em&gt;55:54&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;related&#34;&gt;Related&lt;/h3&gt;
&lt;p&gt;See &lt;a href=&#34;https://www.linkedin.com/posts/jefflin_minnebar-activity-7398770484135444480-FW50&#34;&gt;LinkedIn discussion via Jeff Lin&lt;/a&gt; on this session.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2025/1763791610677.jpg&#34; alt=&#34;Man in red shirt speaks into microphone at front of small conference room while audience of about 20 people sit in chairs facing him.&#34;&gt;
</description>
    </item>
    
    <item>
      <title>New Look for the Site</title>
      <link>https://www.thingelstad.com/2007/05/02/new-look-for.html</link>
      <pubDate>Wed, 02 May 2007 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/05/02/new-look-for.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve grown tired of &lt;a href=&#34;http://www.getk2.com/&#34;&gt;K2&lt;/a&gt;, the &lt;a href=&#34;http://www.wordpress.org/&#34;&gt;Wordpress&lt;/a&gt; theme I was using. It&amp;rsquo;s a nice theme, but I didn&amp;rsquo;t like how heavy it was and I started growing more frustrated that it wasn&amp;rsquo;t &amp;ldquo;stretchy&amp;rdquo;. I searched for a bit tonight for something better and after trying a number of them out, I found &lt;a href=&#34;http://www.plaintxt.org/themes/blogtxt/&#34;&gt;blog.txt&lt;/a&gt;. I wasn&amp;rsquo;t sure about it at first, but I&amp;rsquo;m really liking it now. It&amp;rsquo;s super, super-simple and I like the elegance of it. I&amp;rsquo;m having some trouble getting &lt;a href=&#34;http://www.neato.co.nz/ultimate-tag-warrior/&#34;&gt;Ultimate Tag Warrior&lt;/a&gt; to play with it, but I think it&amp;rsquo;s doable.&lt;/p&gt;
&lt;p&gt;Let me know what you think, or if you find something broken.&lt;/p&gt;
&lt;h3 id=&#34;update&#34;&gt;Update&lt;/h3&gt;
&lt;p&gt;I have tags working now, although it&amp;rsquo;s not perfect. I&amp;rsquo;ve sent a note to the &lt;a href=&#34;http://scottwallick.com/&#34;&gt;theme creator&lt;/a&gt; to see what his plans are. I&amp;rsquo;m thinking he&amp;rsquo;s going to wait for Wordpress 2.2 and native tags support rather than messing with Ultimate Tag Warrior. I also got &lt;a href=&#34;http://www.sonsofskadi.net/extended-live-archive/&#34;&gt;Extended Live Archive&lt;/a&gt; working in the &lt;a href=&#34;https://www.thingelstad.com/archive/&#34;&gt;archives&lt;/a&gt;. That makes me happy since I think the AJAX work in ELA is so helpful for that function &amp;ndash; not just eye candy.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m liking this theme a lot &amp;ndash; I like that it leaves the focus on the actual content and spares some of the cruft. I re-enabled some plugins (like &lt;a href=&#34;http://alexking.org/projects/wordpress/readme?project=share-this&#34;&gt;Share This&lt;/a&gt;) although I&amp;rsquo;m not sure that I like the cruft it adds. We&amp;rsquo;ll see.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also enabled &lt;a href=&#34;http://mnm.uib.es/gallir/wp-cache-2/&#34;&gt;WP-Cache&lt;/a&gt; for the first time. It seems transparent and promises speed improvements. I expect the site will be a ton faster for everyone already since the new theme is so much smaller than K2. I also dropped the number of items on the blog main page to 5. I expect that nobody reads down the page.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/04/30/t45451832.html</link>
      <pubDate>Mon, 30 Apr 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/05/01/t45451832.html</guid>
      <description>&lt;p&gt;Helping my brother-in-law get Parallels setup on his MacBook.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/03/21/t10807501.html</link>
      <pubDate>Wed, 21 Mar 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/03/22/t10807501.html</guid>
      <description>&lt;p&gt;Finally finished my presentation for the Advanced Internet Programming class I&amp;rsquo;m presenting at the U of MN tomorrow.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/03/16/t8826841.html</link>
      <pubDate>Fri, 16 Mar 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/03/17/t8826841.html</guid>
      <description>&lt;p&gt;Thinking about learning java just to write a Twitter client for my blackberry.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/02/06/t5360274.html</link>
      <pubDate>Tue, 06 Feb 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/02/07/t5360274.html</guid>
      <description>&lt;p&gt;Considering if Twitter will be the new Enterprise Resource Planning package of 2010.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Bye Bye Thunderbird, Hello GMail</title>
      <link>https://www.thingelstad.com/2007/02/04/bye-bye-thunderbird.html</link>
      <pubDate>Sun, 04 Feb 2007 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/02/04/bye-bye-thunderbird.html</guid>
      <description>&lt;p&gt;&lt;strong&gt;I&amp;rsquo;m waving a white flag. I give up.&lt;/strong&gt; I&amp;rsquo;ve decided to no longer attempt to host my own email. I&amp;rsquo;ve &lt;a href=&#34;https://www.thingelstad.com/2005/02/05/switch-to-hmail.html&#34;&gt;hosted my own mail&lt;/a&gt; for years and years, and I&amp;rsquo;ve had enough. Why?&lt;/p&gt;
&lt;p&gt;Hosting your email used to be pretty simple. You setup your SMTP server, got a mail client and used POP to access your mailbox. You set it up, and didn&amp;rsquo;t need to worry about it again. These days are long gone.&lt;/p&gt;
&lt;p&gt;Today, hosting your own mailbox and exposing an SMTP server to the world, whether you want to or not, engages you in the global war on spam and phishing. To host my own email I had to deal with keeping 3 software packages current at all times, and pay a monthly service fee to a service provider to filter for viruses and spam for me. This simply takes up more time and is frankly too complicated to waste time on.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve dumped this whole game and am now hosting thingelstad.com email using &lt;a href=&#34;http://www.google.com/a/&#34;&gt;Google Apps for your Domain&lt;/a&gt;. Yes, Google now can index my mail and serve me ads. &lt;strong&gt;I don&amp;rsquo;t care.&lt;/strong&gt; It&amp;rsquo;s tremendously easier, will save me a bunch of time, and cut my out of pocket cost by nearly $100 a year. &lt;strong&gt;This is a no brainer.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m happy to also say that I&amp;rsquo;ve been really impressed with Gmail. I find it&amp;rsquo;s actually faster than Thunderbird was for casual usage. And I can now give up the madness of trying to keep my &lt;a href=&#34;https://www.thingelstad.com/2007/01/01/must-have-thunderbird.html&#34;&gt;address book synchronized&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m now a much happier netizen, and no longer am worried about versions of IMAP servers and SMTP daemons and having to worry about the latest spam, phishing and virus issues. Yeah!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Searches Reaching My Site</title>
      <link>https://www.thingelstad.com/2007/01/23/searches-reaching-my.html</link>
      <pubDate>Tue, 23 Jan 2007 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/01/23/searches-reaching-my.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve had &lt;a href=&#34;http://analytics.google.com/&#34;&gt;Google Analytics&lt;/a&gt; on my website since it became free. It&amp;rsquo;s amazing the amount of detail it gives you. I barely use 10% of the data that it provides.&lt;/p&gt;
&lt;p&gt;Recently a friend of mine did some research on search terms that people used to get to his site. I was inspired to do some reflection on the search terms used to get to my site as well. Some observations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;While only one person visited with the search phrase &amp;ldquo;what is the distribution of coins in your change jar&amp;rdquo; that is a very special visit. No doubt hitting on the &lt;a href=&#34;https://www.thingelstad.com/2004/11/25/change-game.html&#34;&gt;Change Game&lt;/a&gt;, but this curious person proceeded to click on 41 more pages of the site.&lt;/li&gt;
&lt;li&gt;A surprising number of people put my URL &lt;strong&gt;&amp;ldquo;&lt;a href=&#34;https://www.thingelstad.com&#34;&gt;www.thingelstad.com&lt;/a&gt;&amp;rdquo;&lt;/strong&gt;
into a search engine so they can then click on it and go to my site.
It seems the search box and the location box are a bit confusing at
times.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;m pretty surprised by how many searches there are for people that
work with me and then somehow end up at my site.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ve only ever written &lt;a href=&#34;https://www.thingelstad.com/2005/07/16/earthroamer-now-this.html&#34;&gt;one post about the Earthroamer
RV&lt;/a&gt;,
but I&amp;rsquo;m stunned that it is the most popular search term of people
reaching my site.&lt;/li&gt;
&lt;li&gt;Similarly, I once &lt;a href=&#34;https://www.thingelstad.com/2005/02/27/pokipsy.html&#34;&gt;entitled a post
&lt;strong&gt;&amp;ldquo;Pokipsy&amp;rdquo;&lt;/strong&gt;&lt;/a&gt; and now 59
people have visited using that search term. Not surprisingly they
left right away since there isn&amp;rsquo;t a thing about Pokipsy in the post
titled Pokipsy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Twitterific&amp;rdquo;&lt;/strong&gt;, a &lt;a href=&#34;https://www.thingelstad.com/2007/01/06/twitterific.html&#34;&gt;term I used only a two weeks
ago&lt;/a&gt;, has already
resulted in 21 visits to the site. Amazing!&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/01/22/t3768123.html</link>
      <pubDate>Mon, 22 Jan 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/01/23/t3768123.html</guid>
      <description>&lt;p&gt;Reading about &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; 2.1 and thinking about how long it will take for the plug-ins I use to get cool with 2.1.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/01/15/upgraded-to-wordpress.html</link>
      <pubDate>Mon, 15 Jan 2007 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/01/15/upgraded-to-wordpress.html</guid>
      <description>&lt;p&gt;Upgraded to &lt;a href=&#34;https://wordpress.org&#34;&gt;WordPress&lt;/a&gt; 2.0.7. Saw this on my WordPress Dashboard. &amp;ldquo;WordPress 2.0.7 5 hours ago.&amp;rdquo; Now that&amp;rsquo;s what I call fresh bits! :-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>thingelstad.com Moves Out</title>
      <link>https://www.thingelstad.com/2007/01/14/thingelstadcom-moves-out.html</link>
      <pubDate>Sun, 14 Jan 2007 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/01/14/thingelstadcom-moves-out.html</guid>
      <description>&lt;p&gt;I spent a couple of hours getting this website moved out of the server in my laundry room and to the faster server that I&amp;rsquo;m now renting in a remote data center at &lt;a href=&#34;http://www.valueweb.com/&#34;&gt;ValueWeb&lt;/a&gt;. This will finally give the site more bandwidth for you &amp;ndash; the valued reader.&lt;/p&gt;
&lt;p&gt;It wasn&amp;rsquo;t pain free, and in fact there is a bit of a mess to clean up still with &lt;strong&gt;some things not working&lt;/strong&gt;. I&amp;rsquo;ll get that resolved shortly.&lt;/p&gt;
&lt;p&gt;On the plus side of got big huge bandwidth pipes and the URL structure for the site is much more friendly than it was before (no more index.php). I also updated to the newest version of &lt;a href=&#34;http://www.wordpress.org/&#34;&gt;WordPress&lt;/a&gt; which may be some of my pain.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.thingelstad.com/2007/01/09/t2514713.html</link>
      <pubDate>Tue, 09 Jan 2007 19:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2007/01/10/t2514713.html</guid>
      <description>&lt;p&gt;At dinner with &lt;a href=&#34;http://pragdave.pragprog.com/&#34;&gt;Dave Thomas&lt;/a&gt; and other Rails geeks.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Migrating .Text to WordPress</title>
      <link>https://www.thingelstad.com/2006/11/25/migrating-text-to.html</link>
      <pubDate>Sat, 25 Nov 2006 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2006/11/25/migrating-text-to.html</guid>
      <description>&lt;p&gt;I recently bit the bullet and migrated my ancient &lt;a href=&#34;http://workspaces.gotdotnet.com/dottext&#34;&gt;DotText&lt;/a&gt; (.Text) blog to &lt;a href=&#34;http://wordpress.org/&#34;&gt;WordPress&lt;/a&gt;. It wasn&amp;rsquo;t painless, and involved writing some code, but I&amp;rsquo;m exceedingly happy with WordPress and finally
feel like I&amp;rsquo;m on a modern blogging platform again.&lt;/p&gt;
&lt;p&gt;I considered for months and months (years?) going to &lt;a href=&#34;http://communityserver.org/&#34;&gt;Community Server&lt;/a&gt; (CS), which is the natural descendant of DotText, but it just didn&amp;rsquo;t make sense. CS really serves a different purpose, and WordPress is so well designed for the task at
hand.&lt;/p&gt;
&lt;p&gt;Before starting on this adventure, you may want to take a moment to increase your script timeout value for PHP to something exceedingly long. Some of the import PHP scripts will run for a couple of minutes (if you have hundreds of posts) and you don&amp;rsquo;t want them killed in the middle. Change this in your php.ini.&lt;/p&gt;
&lt;h3 id=&#34;migrating-posts&#34;&gt;Migrating Posts&lt;/h3&gt;
&lt;p&gt;This is actually pretty easy. There is no DotText importer for WordPress, so you have to resort to the lowest common denominator, RSS. WordPress has an importer that will take an RSS feed in a file and import the posts. The first step though is getting all of your posts in an RSS formatted XML file.&lt;/p&gt;
&lt;p&gt;DotText obviously supports RSS, however it only outputs the last 10 or 20 posts in the RSS feed. You can get around this by altering DotText to output all posts in the RSS feed. You can find &lt;a href=&#34;http://www.pinkjoint.com/archives/software/exporting-all-posts-from-a-text-dottext-blog-via-rss/&#34;&gt;how to do this&lt;/a&gt;, along with some &lt;a href=&#34;http://www.pinkjoint.com/Shifty/Pinkjoint.Dottext.RSS.Export.zip&#34;&gt;pre-compiled DLLs&lt;/a&gt; to alter the behavior at &lt;a href=&#34;http://www.pinkjoint.com/archives/software/exporting-all-posts-from-a-text-dottext-blog-via-rss/&#34;&gt;PinkJoint&lt;/a&gt;. Once you&amp;rsquo;ve dropped these DLL&amp;rsquo;s in when you hit your RSS feed it will return all posts. After that, save it to a file and you are ready to import using the RSS importer in WordPress.&lt;/p&gt;
&lt;p&gt;I found it helpful to open the RSS/XML file up in a &lt;a href=&#34;http://www.textpad.com/&#34;&gt;text editor&lt;/a&gt; and do some &lt;a href=&#34;http://en.wikipedia.org/wiki/Regular_expression&#34;&gt;regular expression&lt;/a&gt; work to change the URL&amp;rsquo;s for referenced images to something more WordPress friendly. In my case, the path to images referenced in posts were all changing. It&amp;rsquo;s perfect to do this to the XML file before doing the import.&lt;/p&gt;
&lt;p&gt;Now for an unfortunate item. RSS doesn&amp;rsquo;t have a means (in a standard way at least) to include things like categories. Importing your content via RSS means you lose all existing category associations. This didn&amp;rsquo;t bother me that much since I wasn&amp;rsquo;t happy with the existing comments. You can also get WordPress plug-ins that will allow you to assign categories
in bulk mode making it easier to fix this after migrating.&lt;/p&gt;
&lt;h3 id=&#34;migrating-comments&#34;&gt;Migrating Comments&lt;/h3&gt;
&lt;p&gt;Now that the posts are moved over, we need to deal with comments. At first I considered just starting fresh with no comments, but I have over 400 comments and that seemed like a lot of content to just throw away. The method below worked great for me. I purposefully focused on tools that I was comfortable with, this could be done many different ways. The basic approach is to export all the comments into a simple CSV file, then import them using a custom PHP import script for WordPress. The connection between the comment and the post is the post title, so it is critical that you &lt;em&gt;do not edit the titles on any posts&lt;/em&gt; until you&amp;rsquo;ve
imported your comments.&lt;/p&gt;
&lt;p&gt;The simplest way to get the comments into a CSV file is to use the SQL Server DTS tool. I selected a CSV file as a destination and used this SQL query to get the relevant content.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; posts.ID &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; PostID,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       posts.Title,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       posts.DateAdded,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.ID &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; CommentID,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.Title &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; CommentTitle,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.DateAdded &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; CommentDate,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.Author,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.Email,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.TitleUrl,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.Text
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; blog_Content &lt;span style=&#34;color:#66d9ef&#34;&gt;COMMENT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;INNER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;JOIN&lt;/span&gt; blog_Content posts &lt;span style=&#34;color:#66d9ef&#34;&gt;ON&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.ParentID &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; posts.ID
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt;.PostType &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will get us a simple file with all of our comments dumped into it. With this file in hand, we can now do the import.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;CommentsCSV_Import&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; $file;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;header&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;div class=&amp;#34;wrap&amp;#34;&amp;gt;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;h2&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Import Comments from CSV&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;/h2&amp;gt;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;footer&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;/div&amp;gt;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;unhtmlentities&lt;/span&gt;($string)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// From php.net for &amp;lt; 4.3 compat
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $trans_tbl &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_html_translation_table&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;HTML_ENTITIES&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $trans_tbl &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;array_flip&lt;/span&gt;($trans_tbl);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;strtr&lt;/span&gt;($string, $trans_tbl);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;greet&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;p&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Hello. This importer will load the comments from a previous blog that you have dumped to a CSV file into Wordpress. Find your special CSV file to upload and click Import.&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;/p&amp;gt;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;wp_import_upload_form&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;admin.php?import=commentscsv&amp;amp;step=1&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;import_comments&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;global&lt;/span&gt; $wpdb;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    open up our file and loop through it…
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    the CSV file is expected to have these columns
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    0 = Original Post ID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    1 = Post Title
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    2 = Post Date
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    3 = Original Comment ID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    4 = Comment Title
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    5 = Comment Date
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    6 = Comment Author
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    7 = Comment Email
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    8 = Comment Author Website
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    9 = Comment Text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;    */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;set_magic_quotes_runtime&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $row &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $handle &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fopen&lt;/span&gt;($this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;r&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; (($data &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fgetcsv&lt;/span&gt;($handle, &lt;span style=&#34;color:#ae81ff&#34;&gt;10000&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt;)) &lt;span style=&#34;color:#f92672&#34;&gt;!==&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;p&amp;gt; &amp;lt;strong&amp;gt;Reading row &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$row&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;str_replace&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\&amp;#39;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\\\&amp;#39;&amp;#39;&lt;/span&gt;, $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;p&amp;gt; Comment ID &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[3]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; (&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[4]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;) for Post ID &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[0]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; (&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[1]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;).&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// get the ID of the post this comment is for
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $post_id &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $wpdb&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;get_var&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SELECT ID FROM &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$wpdb-&amp;gt;posts&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; WHERE post_title = &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[1]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;p&amp;gt; Found new ID of &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$post_id&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;//get the dates in the right format
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;p&amp;gt; Comment from &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[6]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; (&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[7]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;, &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[8]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;) on &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[5]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// cleanup the comment text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;str_replace&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\&amp;#39;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\\\&amp;#39;&amp;#39;&lt;/span&gt;, $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;str_replace&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\&amp;#39;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\\\&amp;#39;&amp;#39;&lt;/span&gt;, $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;str_replace&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;br&amp;gt;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;br /&amp;gt;&amp;#39;&lt;/span&gt;, $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;str_replace&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;hr&amp;gt;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;hr /&amp;gt;&amp;#39;&lt;/span&gt;, $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;p&amp;gt; Comment:&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$data[9]&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// insert comment
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $ret_id &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;wp_insert_comment&lt;/span&gt;([
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_post_ID&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $post_id,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_author&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_author_email&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_author_url&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_author_IP&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0.0.0.0&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_date&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_content&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $data[&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;comment_approved&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;user_id&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// increment counter
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $row&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;fclose&lt;/span&gt;($handle);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;import&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $file &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;wp_import_handle_upload&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;isset&lt;/span&gt;($file[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;error&amp;#39;&lt;/span&gt;])) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; $file[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;error&amp;#39;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $file[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;file&amp;#39;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;import_comments&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;wp_import_cleanup&lt;/span&gt;($file[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;id&amp;#39;&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;h3&amp;gt;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;__&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;All done. &amp;lt;a href=&amp;#34;%s&amp;#34;&amp;gt;Have fun!&amp;lt;/a&amp;gt;&amp;#39;&lt;/span&gt;), &lt;span style=&#34;color:#a6e22e&#34;&gt;get_option&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;home&amp;#39;&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;/h3&amp;gt;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;dispatch&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;empty&lt;/span&gt;($_GET[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;step&amp;#39;&lt;/span&gt;])) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $step &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      $step &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;int&lt;/span&gt;) $_GET[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;step&amp;#39;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;header&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;switch&lt;/span&gt; ($step) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;greet&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;import&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;footer&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;CommentsCSV_Import&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// Nothing.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$commentscsv_import &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;CommentsCSV_Import&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;register_importer&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;commentscsv&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;__&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;CommentsCSV&amp;#39;&lt;/span&gt;), &lt;span style=&#34;color:#a6e22e&#34;&gt;__&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Import posts from an CSV file of comments&amp;#39;&lt;/span&gt;), [$commentscsv_import, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dispatch&amp;#39;&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copy the above CommentsCSV importer and place it in the importer directory. Go to the import tab and you will see CommentsCSV listed. Upload the file and watch it do it’s magic.&lt;/p&gt;
&lt;p&gt;Note that CommentsCSV does a minimal effort to make things XHTML compliant, but don&amp;rsquo;t expect pretty XHTML at the end.&lt;/p&gt;
&lt;h3 id=&#34;whats-left&#34;&gt;What&amp;rsquo;s Left?&lt;/h3&gt;
&lt;p&gt;So we now have all of our posts (without their categories) and they have all the relevant comments attached to them. We are sitting pretty at this point, but, there are some gotchas.&lt;/p&gt;
&lt;p&gt;Articles don&amp;rsquo;t get sent in the RSS feed for DotText so you will not have those imported. There really isn&amp;rsquo;t an equivalent of an article in WordPress, and most DotText users have a small number of articles. I&amp;rsquo;m just moving mine by hand doing a copy/paste of the HTML into WordPress.&lt;/p&gt;
&lt;p&gt;I hope that others find this helpful in their migration to WordPress. Feel free to contribute your own experience in the comments.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>First RUM Meeting</title>
      <link>https://www.thingelstad.com/2006/10/24/first-rum-meeting.html</link>
      <pubDate>Tue, 24 Oct 2006 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2006/10/24/first-rum-meeting.html</guid>
      <description>&lt;p&gt;I attended my first &lt;a href=&#34;http://www.ruby.mn/&#34;&gt;Ruby Users of Minnesota&lt;/a&gt; (RUM) meeting tonight. I&amp;rsquo;ve wanted to go for a long time but the meetings seemed to always fall on days when I was typically out of town for business. It all worked out this time so I was excited to go. I&amp;rsquo;ve been on the mailing list for a long time and it&amp;rsquo;s a really good group of people.&lt;/p&gt;
&lt;p&gt;Of particular note was my &lt;a href=&#34;http://www.unpossible.com/&#34;&gt;friend Dan&lt;/a&gt; presented a side-project he did using &lt;a href=&#34;http://raa.ruby-lang.org/project/rex/&#34;&gt;rex&lt;/a&gt; and &lt;a href=&#34;http://raa.ruby-lang.org/project/racc&#34;&gt;racc&lt;/a&gt; (Ruby versions of &lt;a href=&#34;http://dinosaur.compilertools.net/lex/&#34;&gt;lex&lt;/a&gt; and &lt;a href=&#34;http://dinosaur.compilertools.net/yacc/&#34;&gt;yacc&lt;/a&gt;) to create a parser and validator for math equations written in &lt;a href=&#34;https://www.latex-project.org&#34;&gt;LaTeX&lt;/a&gt; on &lt;a href=&#34;https://www.roadsignmath.xyz&#34;&gt;Road Sign Math&lt;/a&gt;. This was pretty cool. He hacked it up quickly and solved most of the hard problems. He got to the point so he can evaluate that &lt;code&gt;3 \times \sqrt{4} = 6&lt;/code&gt; is a valid statement. It will be a nice thing to wrap into Road Sign Math 3.0 when the time is right.&lt;/p&gt;
&lt;p&gt;I left the RUM meeting feeling a little scared though. I sat next to a kid named Chris who I can only imagine was dropped off by his Dad since I can&amp;rsquo;t imagine he was old enough to drive. He was obviously brilliant and immersed in all things Internet, Ruby, Mac and whatever else. Why scared? It&amp;rsquo;s so amazingly hard to stay on top of the things that you need to know in this world of computer geekdom. Anyway, I&amp;rsquo;m not going to dwell on that but instead continue to be involved in these sorts of activities that expose you to new thinking.&lt;/p&gt;
&lt;p&gt;I have about a dozen of URL&amp;rsquo;s, notes and such to followup on from the meeting and am looking forward to the next one. (&lt;a href=&#34;http://www.omnigroup.com/applications/omnigraffle/pro/&#34;&gt;OmniGraffle Pro&lt;/a&gt;, &lt;a href=&#34;http://en.wikipedia.org/wiki/Parse_tree&#34;&gt;parse tree&lt;/a&gt;, &lt;a href=&#34;http://nubyonrails.com/pages/gruff&#34;&gt;Gruff for Ruby&lt;/a&gt;, &lt;a href=&#34;http://blog.nicksieger.com/&#34;&gt;Nick Sieger&lt;/a&gt;, &lt;a href=&#34;http://en.wikipedia.org/wiki/Fuzz_testing&#34;&gt;fuzz testing&lt;/a&gt;, &lt;a href=&#34;http://segment7.net/projects/ruby/drb/rinda/ringserver.html&#34;&gt;Rinda&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Funny side note &amp;ndash; I did a count of laptops in the room. 11 Mac laptops (mostly MacBook) including me (one of only 2 black ones) and a whopping 2 Wintel laptops. 🙂&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MacBook, Parallels and Windows Vista</title>
      <link>https://www.thingelstad.com/2006/09/21/macbook-parallels-and.html</link>
      <pubDate>Thu, 21 Sep 2006 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2006/09/21/macbook-parallels-and.html</guid>
      <description>&lt;p&gt;Just because I&amp;rsquo;m on vacation doesn&amp;rsquo;t mean that &amp;ldquo;geeking on the &amp;lsquo;puter&amp;rdquo;
stops. I&amp;rsquo;m happy to report that I was able to successfully install
&lt;a href=&#34;http://www.microsoft.com/windowsvista/&#34;&gt;Windows Vista&lt;/a&gt; RC 1 (Build
5600) on my MacBook using
&lt;a href=&#34;http://www.parallels.com/en/products/desktop/&#34;&gt;Parallels&lt;/a&gt; (Release
Candidate, Build 1898). This is the first time I&amp;rsquo;ve been able to make
this work. There was no magic involved, the latest release of Parallels
offers Vista as an &amp;ldquo;experimental&amp;rdquo; option in the drop downs. I mounted
the ISO image in the virtual machine, booted and installed.&lt;/p&gt;
&lt;p&gt;It works just fine. You don&amp;rsquo;t get Aero Glass, but you do get Aero. Haven&amp;rsquo;t played with it much, don&amp;rsquo;t expect I will until I return from vacation. However, I&amp;rsquo;m glad this configuration finally works.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The &#34;Not-So-Open&#34; WRT54G</title>
      <link>https://www.thingelstad.com/2005/12/02/the-notsoopen-wrtg.html</link>
      <pubDate>Fri, 02 Dec 2005 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/12/02/the-notsoopen-wrtg.html</guid>
      <description>&lt;p&gt;This past week I was in Radio Shack and saw they were running a great deal on the Linksys &lt;a href=&#34;http://www.linksys.com/servlet/Satellite?childpagename=US%2FLayout&amp;amp;packedargs=c%3DL_Product_C2%26cid%3D1127782957298&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper&#34;&gt;WRT54G&lt;/a&gt; wireless router (double rebates!). I&amp;rsquo;ve had a D-Link 624 for a long time and its worked without any issues. However, I&amp;rsquo;d read at length about the WRT54G and it&amp;rsquo;s open platform. &lt;a href=&#34;http://www.wi-fiplanet.com/tutorials/article.php/3562391&#34;&gt;Linksys built the WRT54G on a Linux platform&lt;/a&gt; and made the firmware available via open source. There is some debate wether that was intentional or not, but the &lt;a href=&#34;http://www.gnu.org/copyleft/gpl.html&#34;&gt;GPL&lt;/a&gt; forced them to make it available. The result was awesome 3rd party firmware like &lt;a href=&#34;http://www.sveasoft.com/&#34;&gt;Sveasoft&lt;/a&gt; and &lt;a href=&#34;http://www.dd-wrt.com/&#34;&gt;DD-WRT&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, I picked up one of these cheap units at Radio Shack and today I sat down to play with it.&lt;/p&gt;
&lt;p&gt;Then everything went south&amp;hellip;&lt;/p&gt;
&lt;p&gt;About &lt;a href=&#34;http://www.engadget.com/entry/1234000223067461/#comments&#34;&gt;20 days ago Linksys (now owned by Cisco) started selling the WRT54G v5&lt;/a&gt;. All the previous versions of this ran Linux, but now they are using VxWorks. Unfortunately, this means no 3rd party firmware. This seems like such a bad idea, particularly since this router became the success it is because of 3rd party firmware. Luckily there is a new model, &lt;a href=&#34;http://www.linksys.com/servlet/Satellite?childpagename=US%2FLayout&amp;amp;packedargs=c%3DL_Product_C2%26cid%3D1133202177241&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper&#34;&gt;WRT54GL&lt;/a&gt; that is the v4 box with Linux.&lt;/p&gt;
&lt;p&gt;Buyer beware if you are looking to get one of these.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Google Analytics - Overload?</title>
      <link>https://www.thingelstad.com/2005/11/20/google-analytics-overload.html</link>
      <pubDate>Sun, 20 Nov 2005 02:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/11/20/google-analytics-overload.html</guid>
      <description>&lt;p&gt;I was really excited to see the release of &lt;a href=&#34;http://www.google.com/analytics/&#34;&gt;Google Analytics&lt;/a&gt; this week. I&amp;rsquo;ve been looking for a better way to track site usage and Weblog Expert just isn&amp;rsquo;t cutting it anymore. I would suggest that it&amp;rsquo;s essentially impossible to do site analytics using log files anymore. Spiders, robots, spammers, etc. make your log files into total garbage. Even with significant filtering, you still get mountains of trash.&lt;/p&gt;
&lt;p&gt;I was moments away from plunking down &amp;ldquo;real money&amp;rdquo; on Visistat to solve this problem, and then Google Analytics came along free of charge.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been impressed with the data display and am really excited about it, but Google (for the first time I can recall) seems to be completely overwhelmed with traffic. It&amp;rsquo;s Sunday morning and my reports are still showing Thursday morning data. They target a 24 hour turnaround in report data, but this is a bit crazy. This is what they are telling customers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Waiting for Data&lt;/strong&gt;&lt;br&gt;
Analytics has been successfully installed and data is being gatherednow. The demand for Google Analytics surpassed even our highestexpectations and as a result some customers may temporarily experience report-update delays. All data continues to be collected and no datahas been lost. We are currently adding resources to ensurehigh-quality service. We apologize for any inconvenience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;m eagerly waiting for them to deal with the load. Maybe they need to add a few thousand more servers . However, if they can&amp;rsquo;t get this thing working soon I think they may end up with a real PR problem. Especially considering the target audience, web builders!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Just Typing</title>
      <link>https://www.thingelstad.com/2005/10/14/just-typing.html</link>
      <pubDate>Fri, 14 Oct 2005 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/10/14/just-typing.html</guid>
      <description>&lt;p&gt;Sometimes I just feel like typing something on this here website. I guess that&amp;rsquo;s the advantage of being the site operator, author, editor, publisher and everything else.&lt;/p&gt;
&lt;p&gt;This has been a busy week. I&amp;rsquo;ve been completely absorbed with this project at work. We finally got it launched today and I really think it&amp;rsquo;s one of the, if not &lt;em&gt;the&lt;/em&gt;, most amazing thing we&amp;rsquo;ve done. If you are curious, go to &lt;a href=&#34;http://www.marketwatch.com/&#34;&gt;MarketWatch&lt;/a&gt; when the market is open (M-F 9:30a to 4:00p ET) and look at news stories, quotes, etc. You&amp;rsquo;ll see the quotes are streaming at you. We did this ourselves, and it was a massively challenging and fun project. I was literally unable to sleep, waking at 4:00a most days, my mind whirring with ideas. I&amp;rsquo;ve gotta take some time this weekend and decompress a bit. I put some especially peaceful music on my iPod so when I wake up in the middle of the night I can try to listen to that to help me sleep.&lt;/p&gt;
&lt;p&gt;I sort of took today off, even though Mazie and I went into the office for a couple of hours and I was email for a couple more hours at home. We had furnace contractors, roofing contractors and our landscaper over today to discuss projects. I pulled the trigger on the furnace one so that is going forward. I need to decide on the roofing project soon so that I can let the solar guys (we are also looking at solar heat and electric) know what is going on.&lt;/p&gt;
&lt;p&gt;We are starting phase 3 of our landscaping project. First phase was the front yard, 2nd was some hardscaping in the back yard, and this final phase is the conversion back to native plantings for the undeveloped area in our backlot. It was completely filled with invasive plants, and we are now getting ready to transform it. It will be perhaps the most challenging and interesting of the projects, but the least visible, at least from the curb as it were.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m debating the whole solar thing. I&amp;rsquo;m not sure what I think about having 4&amp;rsquo;x6&amp;rsquo; black panels sticking up off the top of the house for heat. The solar electric stuff is much less obtrusive, but has a lot higher cost.&lt;/p&gt;
&lt;p&gt;We are heading to Wisconsin for a family weekend with Tammy&amp;rsquo;s side of the family. I expect it to be a blast. May pack up the telescope since we&amp;rsquo;ll be in darker skies. I feel a little bad that I haven&amp;rsquo;t given that the time it deserves. I really do have too many hobbies. It&amp;rsquo;s just that everything is so interesting! 🙂&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>thingelstad.com Data Center</title>
      <link>https://www.thingelstad.com/2005/05/11/thingelstadcom-data-center.html</link>
      <pubDate>Wed, 11 May 2005 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/05/11/thingelstadcom-data-center.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/e29ed4a408.jpg&#34; alt=&#34;Black server rack holding multiple 1U servers, a KVM switch, and a CRT monitor on top, installed in a basement utility room with pipes visible behind it.&#34; style=&#34;width: 250px; float: right; margin-left: 10px; &#34; /&gt;
&lt;p&gt;Over the last few months I&amp;rsquo;ve been on a steady march to increase my server capacity at home. Why? I&amp;rsquo;m not entirely sure why. How about it&amp;rsquo;s fun? 🙂&lt;/p&gt;
&lt;p&gt;I decided to take a plunge into the deep end and get a rack for home. Getting the rack took up more space for just one or two servers, but as I add infrastructure it is much more compact. I went with the &lt;a href=&#34;http://www.cdw.com/shop/products/default.aspx?EDC=593656&#34;&gt;APC NetShelter VX 25U&lt;/a&gt; rack. I wanted to get a rack that had good depth and solid build. It also has removable sides and doors to make it very easy to get into. Overall, I like it a lot but it&amp;rsquo;s very heavy. Hopefully I don&amp;rsquo;t have to move it anytime soon.&lt;/p&gt;
&lt;p&gt;We disposed of a bunch of servers at work and gave people an opportunity to get some in exchange for a charitable donation. I picked up four machines (they are the four Compaq 1U machines). This required the addition of another 1500 VA UPS which I just put in tonight.&lt;/p&gt;
&lt;p&gt;Everything is working very well. I&amp;rsquo;ve got enough cable off the back to move it about 10 feet out into the room for access. The cable management in the back is a mess, but I&amp;rsquo;ll deal with that later. I decided to keep everything on the top half and leave the bottom open for later additions.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s all pretty loud but luckily I don&amp;rsquo;t care since it&amp;rsquo;s in the laundry room. It also generates plenty of heat. I&amp;rsquo;m done for a while now. The next thing I could see adding is an external disk enclosure to add a couple of terabytes of network storage.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>HTTP Compression</title>
      <link>https://www.thingelstad.com/2005/05/07/http-compression.html</link>
      <pubDate>Sat, 07 May 2005 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/05/07/http-compression.html</guid>
      <description>&lt;p&gt;I finally got HTTP compression working on content that matters &amp;ndash; like ASPX pages. It looks like pages are compressing about 4:1 or more. This should mean much faster download times since my broadband connection is my most limiting issue. I found &lt;a href=&#34;http://www.wwwcoder.com/main/parentid/170/site/3669/68/default.aspx&#34;&gt;some excellent instructions for doing this&lt;/a&gt;. You need to edit the IIS6 metabase for compression to work as you would want and this article explains it will.&lt;/p&gt;
&lt;p&gt;I also moved &lt;a href=&#34;https://www.roadsignmath.xyz&#34;&gt;Road Sign Math&lt;/a&gt; to it&amp;rsquo;s own web server now so it is isolated and I also enabled compression on it.&lt;/p&gt;
&lt;p&gt;Let me know if you notice faster responses when you are browsing our site.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Edward Tufte</title>
      <link>https://www.thingelstad.com/2005/04/26/edward-tufte.html</link>
      <pubDate>Tue, 26 Apr 2005 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/04/26/edward-tufte.html</guid>
      <description>&lt;p&gt;Yesterday I attended &lt;em&gt;&lt;a href=&#34;http://www.edwardtufte.com/tufte/courses&#34;&gt;Presenting Data and Informtion&lt;/a&gt;&lt;/em&gt; taught by &lt;a href=&#34;http://www.edwardtufte.com/&#34;&gt;Edward Tufte&lt;/a&gt;. A number of people that I work with had gone to this one-day session and come back raving, so I finally decided to attend this myself. After attending I can see why they were raving!&lt;/p&gt;
&lt;p&gt;If you are unfamiliar, Edward Tufte is one of the leading world experts on visualization of data. I&amp;rsquo;m pleased to say that not only is Tufte an excellent academic, he&amp;rsquo;s also a wonderful speaker. He could do a radio program in no time flat. He&amp;rsquo;s got a great presenting style. I thought the class was going to give him a standing ovation at the end.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not going to repeat the class contents here, I could not do it justice. Check out &lt;a href=&#34;http://www.edwardtufte.com/&#34;&gt;the website&lt;/a&gt; and see for yourself. If you ever have to give presentations, I would highly recommend attending this session.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Intranet for Home</title>
      <link>https://www.thingelstad.com/2005/04/16/intranet-for-home.html</link>
      <pubDate>Sat, 16 Apr 2005 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/04/16/intranet-for-home.html</guid>
      <description>&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/d55d373b12.gif&#34; alt=&#34;Spiral notebook paper with a pencil and the word spiral overlaid in text on a banner graphic&#34; style=&#34;width: 179px; float: right; margin-left: 10px; &#34; /&gt;
A couple of weeks ago I deployed my first intranet application for home.
If your not familiar, an intranet application is just a website that you
cannot get to generally on the web unless you have specific credentials.
I was combing through my documents one afternoon and realized that I had
a ton of little text files with notes on them. Things like information
on my cable modem and home network to reminders about trips I&#39;d like to
take.
&lt;p&gt;It dawned on me that this is just screaming for a Wiki. So I deployed &lt;a href=&#34;http://www.openwiki.com/&#34;&gt;OpenWiki&lt;/a&gt; in a restricted website that is only accessible in our house with the right authentication. I was able to better organize information and move a lot of other information onto it, like what is our contract number with the plumbing people.&lt;/p&gt;
&lt;p&gt;Pretty fun. I named the site Spiral. The idea being that it is a big spiral notebook for all in the house to share.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transferring thingelstad.com</title>
      <link>https://www.thingelstad.com/2005/02/12/transferring-thingelstadcom.html</link>
      <pubDate>Sat, 12 Feb 2005 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2005/02/12/transferring-thingelstadcom.html</guid>
      <description>&lt;p&gt;I just initiated a domain transfer of thingelstad.com from &lt;a href=&#34;http://www.register.com/&#34;&gt;Register.com&lt;/a&gt;. I finally got fed up with their lackluster service and outrageous prices and am moving away. I&amp;rsquo;m just posting this because if something goes wrong my site might go off the air temporarily. It shouldn&amp;rsquo;t, but I always feel a little nervous moving registrars (that&amp;rsquo;s the main reason I hadn&amp;rsquo;t done it to this point!).&lt;/p&gt;
&lt;p&gt;Top reasons to leave register.com&amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;WAY too expensive!&lt;/li&gt;
&lt;li&gt;Interface for managing your domain is SLOW and clunky.&lt;/li&gt;
&lt;li&gt;You cannot create an SPF record using their system! Oi!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Where am I going? &lt;a href=&#34;http://www.godaddy.com/&#34;&gt;GoDaddy&lt;/a&gt;! If you watched the Super Bowl you probably &lt;a href=&#34;http://www.godaddy.com/gdshop/superbowl05/landing.asp?isc=bpshdr001&#34;&gt;saw their ad&lt;/a&gt;. 🙂 They are cheap, fast and technically robust.&lt;/p&gt;
&lt;p&gt;Now I gotta get out of the house and enjoy this wonderful weather. Taking the camera out to play for the afternoon.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Prime Number Hunt</title>
      <link>https://www.thingelstad.com/2004/12/12/prime-number-hunt.html</link>
      <pubDate>Sun, 12 Dec 2004 01:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2004/12/12/prime-number-hunt.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m reading a book on math (specifically cryptography). I was doing some searching online about prime numbers and ran across the project &lt;a href=&#34;http://www.seventeenorbust.com/&#34;&gt;Seventeen or Bust&lt;/a&gt;. It&amp;rsquo;s interesting and you can participate by running the client.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Electronic Voting Software</title>
      <link>https://www.thingelstad.com/2004/10/27/electronic-voting-software.html</link>
      <pubDate>Wed, 27 Oct 2004 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2004/10/27/electronic-voting-software.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m sitting here watching &lt;a href=&#34;https://www.cbsnews.com/60-minutes/&#34;&gt;60 Minutes&lt;/a&gt; tonight and they are doing a piece on electronic voting. If there is one place where I would say that open source would make a lot of sense, how about this? The software that these systems run sounds horrible and has almost no security mechanisms included in it.&lt;/p&gt;
&lt;p&gt;This problem can be solved, these companies just seem to be pathetic.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>What is wrong with MSN Search?</title>
      <link>https://www.thingelstad.com/2004/09/22/what-is-wrong.html</link>
      <pubDate>Wed, 22 Sep 2004 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2004/09/22/what-is-wrong.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been having some &amp;ldquo;fun&amp;rdquo; (that&amp;rsquo;s in the geekiest sense of the word in this case) playing with some log analysis tools on thingelstad.com. What the heck, I&amp;rsquo;m curious to see who is hitting what and how often. It’s been some time since I&amp;rsquo;ve played with any of this and spiders are an interesting challenge. (Spiders for those that aren&amp;rsquo;t aware are the robots that sites like Google and Yahoo use to mine web sites).&lt;/p&gt;
&lt;p&gt;Anyway, I was looking at spider activity and this just stunned me.&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/890/2020/d62785d62b.png&#34; alt=&#34;Bar chart of web spider hits showing MSN Robot far exceeding all others at over 20000 hits, with Googlebot second at around 5000.&#34;&gt;
&lt;p&gt;What is wrong with MSN!? They have hit our site &lt;strong&gt;four times&lt;/strong&gt; more than any other spider out there. That seems a bit excessive! Gotta wonder if that is the norm for them.&lt;/p&gt;
&lt;p&gt;Anyway, just struck me as odd and rather stupid.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Site Tuning</title>
      <link>https://www.thingelstad.com/2004/08/28/site-tuning.html</link>
      <pubDate>Sat, 28 Aug 2004 00:00:00 -0500</pubDate>
      
      <guid>http://jthingelstad.micro.blog/2004/08/28/site-tuning.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been having a lot of fun lately tuning up our site. I&amp;rsquo;ve been able to &amp;ldquo;stand on the shoulders of giants&amp;rdquo; leveraging a lot of open source stuff and cut &amp;amp; paste hacking and slashing. Newest addition is linking to our photo albums with picture highlights. Huge thanks to &lt;a href=&#34;http://blog.swiftalpha.com/&#34;&gt;Edo van Vliet&lt;/a&gt; for &lt;a href=&#34;http://blog.swiftalpha.com/articles/184.aspx&#34;&gt;posting code to do this&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>