<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>James Earl Douglas</title>
    <link>https://earldouglas.com/</link>
    <pubDate>Mon, 16 Mar 2009 00:00:00 GMT</pubDate>
    <lastBuildDate>Fri, 10 Apr 2026 22:10:15 GMT</lastBuildDate>
    <description>Talks and posts from earldouglas.com</description>
    <atom:link href="https://earldouglas.com/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <link>https://earldouglas.com/http4s.html</link>
      <guid>https://earldouglas.com/http4s.html</guid>
      <title>http4s</title>
      <pubDate>Sun, 31 Aug 2025 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/http4s/http4s&quot;&gt;http4s&lt;/a&gt; is a Scala library for building purely functional HTTP servers and clients in the Tagless Final style using Cats Effect.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/aprsdroid.html</link>
      <guid>https://earldouglas.com/aprsdroid.html</guid>
      <title>APRSdroid</title>
      <pubDate>Sun, 20 Apr 2025 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Let&#039;s make an inexpensive APRS rig for portable position tracking and messaging using a cheap handheld transciever and an old Android phone.&lt;/p&gt; &lt;pre class=&quot;ascii&quot;&gt;&lt;code&gt;___ \|/ | | NBFM | | | .-------. | | | .----. | | | |--------------------------&amp;gt;| Phone | | HT | AFSK | | | |&amp;lt;--------------------------| | &amp;#39;----&amp;#39; &amp;#39;-------&amp;#39;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/idempotence.html</link>
      <guid>https://earldouglas.com/idempotence.html</guid>
      <title>Functional Idempotence</title>
      <pubDate>Thu, 22 Aug 2024 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Idempotence is often defined as:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;∀x : f(f(x)) = f(x)&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;But this way makes more sense to me:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;∀s,x : f(s, x) = (s, y)&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Here&#039;s how I like to think about it.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/slop.html</link>
      <guid>https://earldouglas.com/slop.html</guid>
      <title>Slop-Driven Development</title>
      <pubDate>Fri, 16 Aug 2024 00:00:00 GMT</pubDate>
      <description>&lt;pre class=&quot;ascii&quot;&gt;&lt;code&gt; .-----------. .-------. | | | Model |------&amp;gt;| | &amp;#39;-------&amp;#39; | | .---------. | GenAI |-----&amp;gt;| Garbage | .--------. | | &amp;#39;---------&amp;#39; | Prompt |-----&amp;gt;| | &amp;#39;--------&amp;#39; | | &amp;#39;-----------&amp;#39;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;AI-assisted code generation is just an expensive way to create technical debt.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/clean.html</link>
      <guid>https://earldouglas.com/clean.html</guid>
      <title>F[unctional] Core, IO[mperative] Shell</title>
      <pubDate>Sat, 04 May 2024 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Let&#039;s design a service with an architecture that we&#039;ll call Semantic Layering.&lt;/p&gt; &lt;p&gt;Our service will be a simple a hit counter. Our architecture will draw inspiration from &lt;a href=&quot;https://pragprog.com/titles/swdddf/domain-modeling-made-functional/&quot;&gt;Functional Domain Modelling&lt;/a&gt; and &lt;a href=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot;&gt;The Clean Architecture&lt;/a&gt;, and will encode effects using &lt;a href=&quot;https://rockthejvm.com/articles/tagless-final&quot;&gt;Tagless-Final&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;We&#039;ll separate pure code into lower layers, used by impure code at higher layers:&lt;/p&gt; &lt;pre class=&quot;ascii&quot;&gt;&lt;code&gt;- runners --------------------------------o-- | - drivers -----------------------------o--x-- | | impure | | =======================================|==|== pure | | | | - use-cases ------------------------o--x--x-- | | | - domain ---------------------------v--v--v--&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/fauxsgi.html</link>
      <guid>https://earldouglas.com/fauxsgi.html</guid>
      <title>Ascension from Dependency Hell</title>
      <pubDate>Sun, 10 Dec 2023 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Scala has a rapidly-changing ecosystem of interconnected libraries. This tends to lead to dependency hell, in which a project&#039;s transitive dependency graph contains version mismatches:&lt;/p&gt; &lt;pre class=&quot;ascii&quot;&gt;&lt;code&gt; .--------. | Logger | | * v1 &amp;lt;----. .--&amp;gt; * v2 | | | &amp;#39;--------&amp;#39; | | | .------------. .-------. | Multiplier | | Adder | &amp;#39;------------&amp;#39; &amp;#39;-------&amp;#39; ^ ^ | .------. | &amp;#39;---| Main |---&amp;#39; &amp;#39;------&amp;#39;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Not only is this painful to manage, but current approaches leave projects vulnerable to defects that can be hard to catch in time.&lt;/p&gt; &lt;p&gt;We explore shading as a simple yet robust approach to deconflicting transitive dependencies in Scala projects.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/data.html</link>
      <guid>https://earldouglas.com/data.html</guid>
      <title>Data Architectures</title>
      <pubDate>Tue, 28 Dec 2021 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on a variety of data architectures.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;https://earldouglas.com/data.html#the-layers-in-a-data-stack&quot;&gt;Data Stack&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/data.html#data-mesh&quot;&gt;Data Mesh&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/data.html#data-warehouse&quot;&gt;Data Warehouse&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/data.html#data-lake&quot;&gt;Data Lake&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/data.html#lakehouse&quot;&gt;Lakehouse&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/data.html#data-fabric&quot;&gt;Data Fabric&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/linear-scala.html</link>
      <guid>https://earldouglas.com/linear-scala.html</guid>
      <title>Linear Types in Scala</title>
      <pubDate>Fri, 21 May 2021 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/earldouglas/linear-scala&quot;&gt;linear-scala&lt;/a&gt; is an sbt plugin that adds support for linear types in Scala via a custom Scalafix linter.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/spark.html</link>
      <guid>https://earldouglas.com/spark.html</guid>
      <title>Spark</title>
      <pubDate>Wed, 11 Mar 2020 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://spark.apache.org/&quot;&gt;Spark&lt;/a&gt; is a MapReduce framework for Scala.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/direwolf.html</link>
      <guid>https://earldouglas.com/direwolf.html</guid>
      <title>Dire Wolf</title>
      <pubDate>Fri, 19 Apr 2019 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Dire Wolf is a software terminal node controller (TNC). Let&#039;s use it to send and receive APRS trafic using a handheld transceiver and an RTL-SDR receiver.&lt;/p&gt; &lt;pre class=&quot;ascii&quot;&gt;&lt;code&gt;___ ___ \|/ \|/ | | | NBFM .-----------. | NBFM | | | | | | Dire Wolf | .----. | | | | | .---------. IQ &amp;#39;-----------&amp;#39; AFSK | HT | | RTL-SDR |-------------&amp;gt;\ - - - - - \---------------&amp;gt;| | &amp;#39;---------&amp;#39; \ - - - - - \ &amp;#39;----&amp;#39; &amp;#39;-----------&amp;#39;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/microservices.html</link>
      <guid>https://earldouglas.com/microservices.html</guid>
      <title>Microservices</title>
      <pubDate>Wed, 10 Apr 2019 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Microservices architectures foster rapid development and deployment of incremental improvements. This makes it easy (and fun) to build an expanding suite of software in a patchwork of available time.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/electrocat.html</link>
      <guid>https://earldouglas.com/electrocat.html</guid>
      <title>Functional Electromagnetism</title>
      <pubDate>Sat, 30 Mar 2019 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Strengthen your understanding of functional programming by looking at it from a fresh and unconventional perspective.&lt;/p&gt; &lt;pre class=&quot;ascii&quot;&gt;&lt;code&gt;___ \|/ | .-----------. | | | | | GNU Radio | | | | | .--------. &amp;#39;-----------&amp;#39; &amp;#39;--------&amp;gt;| HackRF |-----&amp;gt;\ - - - - - \ &amp;#39;--------&amp;#39; \ - - - - - \ &amp;#39;-----------&amp;#39;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;We use GNU Radio to examine digital signal processing systems, and explore how we can use our understanding of functional programming to reason about unfamiliar systems such as software-defined radio by looking through the lens of category theory.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/zio.html</link>
      <guid>https://earldouglas.com/zio.html</guid>
      <title>ZIO</title>
      <pubDate>Sun, 25 Nov 2018 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/zio/zio&quot;&gt;ZIO&lt;/a&gt; is a library (or perhaps a framework) for building effect-oriented programs in Scala.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/doobie.html</link>
      <guid>https://earldouglas.com/doobie.html</guid>
      <title>Doobie</title>
      <pubDate>Wed, 25 Oct 2017 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/typelevel/doobie&quot;&gt;Doobie&lt;/a&gt; is a Scala library for working with Java&#039;s JDBC API in a purely functional style.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/argonaut.html</link>
      <guid>https://earldouglas.com/argonaut.html</guid>
      <title>Argonaut</title>
      <pubDate>Thu, 17 Aug 2017 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/argonaut-io/argonaut&quot;&gt;Argonaut&lt;/a&gt; is Scala library for parsing, serializing, and deserializing JSON in a purely functional style.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/tanks.html</link>
      <guid>https://earldouglas.com/tanks.html</guid>
      <title>Tanks a Lot</title>
      <pubDate>Sun, 21 May 2017 00:00:00 GMT</pubDate>
      <description>A minimally-multiplayer experiment using WebSockets and JavaScript.</description>
    </item>
    <item>
      <link>https://earldouglas.com/haskeval.html</link>
      <guid>https://earldouglas.com/haskeval.html</guid>
      <title>Haskeval</title>
      <pubDate>Thu, 11 Aug 2016 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Let&#039;s build a little Haskell interpreter that we can use as a safe &lt;code&gt;runhaskell&lt;/code&gt; as a service on the Web.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/codedown.html</link>
      <guid>https://earldouglas.com/codedown.html</guid>
      <title>Codedown</title>
      <pubDate>Sun, 29 May 2016 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/earldouglas/codedown&quot;&gt;Codedown&lt;/a&gt; is a Node.js library and command line utility to extract code blocks from Markdown files. It can be used to help check the correctness of code in articles and slideshows, or even to allow Markdown to be the distribution format for a project&#039;s source code.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/scotty.html</link>
      <guid>https://earldouglas.com/scotty.html</guid>
      <title>Scotty</title>
      <pubDate>Fri, 04 Mar 2016 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/scotty-web/scotty&quot;&gt;Scotty&lt;/a&gt; is a Haskell framework for building Web apps in the Sinatra style.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/scalaz.html</link>
      <guid>https://earldouglas.com/scalaz.html</guid>
      <title>Scalaz</title>
      <pubDate>Sat, 03 Oct 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/scalaz/scalaz&quot;&gt;Scalaz&lt;/a&gt; is a library for functional programming in Scala.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/authz.html</link>
      <guid>https://earldouglas.com/authz.html</guid>
      <title>AuthZ</title>
      <pubDate>Fri, 11 Sep 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on access control design patterns.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/sad-trombone.html</link>
      <guid>https://earldouglas.com/sad-trombone.html</guid>
      <title>Sad Trombone</title>
      <pubDate>Wed, 29 Jul 2015 00:00:00 GMT</pubDate>
      <description>Womp womp.</description>
    </item>
    <item>
      <link>https://earldouglas.com/leon.html</link>
      <guid>https://earldouglas.com/leon.html</guid>
      <title>Leon</title>
      <pubDate>Sat, 25 Jul 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://leon.epfl.ch/doc/intro.html&quot;&gt;Leon&lt;/a&gt; is a software verification system for Scala. It uses a limited subset of Scala, called &lt;a href=&quot;https://leon.epfl.ch/doc/purescala.html&quot;&gt;Pure Scala&lt;/a&gt;, and a nifty &lt;a href=&quot;https://leon.epfl.ch/&quot;&gt;online evaluation envrionment&lt;/a&gt; to statically verify programs.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/python.html</link>
      <guid>https://earldouglas.com/python.html</guid>
      <title>Python</title>
      <pubDate>Tue, 21 Jul 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://www.python.org/&quot;&gt;Python&lt;/a&gt; programming language and ecosystem.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/mediawiki.html</link>
      <guid>https://earldouglas.com/mediawiki.html</guid>
      <title>MediaWiki</title>
      <pubDate>Fri, 10 Jul 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on &lt;a href=&quot;https://www.mediawiki.org&quot;&gt;MediaWiki&lt;/a&gt; development and administration.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/typescript.html</link>
      <guid>https://earldouglas.com/typescript.html</guid>
      <title>TypeScript</title>
      <pubDate>Tue, 23 Jun 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://www.typescriptlang.org/&quot;&gt;TypeScript&lt;/a&gt; programming language.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/specver.html</link>
      <guid>https://earldouglas.com/specver.html</guid>
      <title>Specified Versioning</title>
      <pubDate>Wed, 17 Jun 2015 00:00:00 GMT</pubDate>
      <description>This is a guide to choosing version numbers for software projects that designate tests as specification.</description>
    </item>
    <item>
      <link>https://earldouglas.com/nix.html</link>
      <guid>https://earldouglas.com/nix.html</guid>
      <title>Nix is awesome, and you should too</title>
      <pubDate>Fri, 05 Jun 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://nixos.org/&quot;&gt;Nix&lt;/a&gt; is a functional language, package manager, operating system, DevOps tool, and ecosystem.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/wdex.html</link>
      <guid>https://earldouglas.com/wdex.html</guid>
      <title>Wikidata Explorer</title>
      <pubDate>Mon, 18 May 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Traverse Wikidata as an interactive visual knowledge graph.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/elasticsearch.html</link>
      <guid>https://earldouglas.com/elasticsearch.html</guid>
      <title>Elasticsearch</title>
      <pubDate>Thu, 12 Mar 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Elasticsearch&quot;&gt;Elasticsearch&lt;/a&gt; is a full-text search engine based on Apache Lucene.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/rdf.html</link>
      <guid>https://earldouglas.com/rdf.html</guid>
      <title>RDF</title>
      <pubDate>Fri, 20 Feb 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Semantic_Web&quot;&gt;Semantic Web&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/java.html</link>
      <guid>https://earldouglas.com/java.html</guid>
      <title>Java</title>
      <pubDate>Thu, 12 Feb 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Java_(programming_language)&quot;&gt;Java&lt;/a&gt; programming language.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/spectre-detector.html</link>
      <guid>https://earldouglas.com/spectre-detector.html</guid>
      <title>Spectre Detector v1.0</title>
      <pubDate>Thu, 12 Feb 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Cheaper than a &lt;a href=&quot;https://www.engadget.com/2015-02-01-ghostark.html&quot;&gt;GhostArk&lt;/a&gt;, but just as accurate. Inspired by Steven Novella in &lt;a href=&quot;https://www.theskepticsguide.org/podcasts/episode-500&quot;&gt;SGU episode #500&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/marky-mark.html</link>
      <guid>https://earldouglas.com/marky-mark.html</guid>
      <title>Marky Mark</title>
      <pubDate>Wed, 11 Feb 2015 00:00:00 GMT</pubDate>
      <description>An underpowered in-browser Markdown editor using Marked.</description>
    </item>
    <item>
      <link>https://earldouglas.com/ray-casting.html</link>
      <guid>https://earldouglas.com/ray-casting.html</guid>
      <title>Ray Casting</title>
      <pubDate>Sun, 14 Dec 2014 00:00:00 GMT</pubDate>
      <description>I have no idea what I&#039;m doing.</description>
    </item>
    <item>
      <link>https://earldouglas.com/js.html</link>
      <guid>https://earldouglas.com/js.html</guid>
      <title>JavaScript</title>
      <pubDate>Thu, 25 Sep 2014 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://en.wikipedia.org/wiki/JavaScript&quot;&gt;JavaScript&lt;/a&gt; programming language, libraries, tools, and ecosystem.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/gravity.html</link>
      <guid>https://earldouglas.com/gravity.html</guid>
      <title>Gravity</title>
      <pubDate>Fri, 19 Sep 2014 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;GmM/r^2&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/aspectj.html</link>
      <guid>https://earldouglas.com/aspectj.html</guid>
      <title>AspectJ</title>
      <pubDate>Sat, 21 Jun 2014 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://eclipse.dev/aspectj/&quot;&gt;AspectJ&lt;/a&gt; is a Java extension for adding aspected-oriented programming (AOP) support.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/maven.html</link>
      <guid>https://earldouglas.com/maven.html</guid>
      <title>Maven</title>
      <pubDate>Mon, 09 Jun 2014 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://maven.apache.org/&quot;&gt;Maven&lt;/a&gt; is a build tool for Java.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/sml.html</link>
      <guid>https://earldouglas.com/sml.html</guid>
      <title>Standard ML</title>
      <pubDate>Thu, 17 Oct 2013 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_ML&quot;&gt;Standard ML&lt;/a&gt; programming language.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/ide.html</link>
      <guid>https://earldouglas.com/ide.html</guid>
      <title>Integrated Development Environment</title>
      <pubDate>Sat, 14 Sep 2013 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;All you need to build software is a terminal emulator (e.g. xterm), a text editor (i.e. vim), and your language&#039;s build tool (e.g. sbt, mvn, make, cabal, npm).&lt;/p&gt; &lt;p&gt;In this talk, we show a simple yet comprehensive way to write Scala using just vim and sbt.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/exercises.html</link>
      <guid>https://earldouglas.com/exercises.html</guid>
      <title>Programming Exercises</title>
      <pubDate>Wed, 31 Jul 2013 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;These programming exercises have helped me keep sharp over the years.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/mechanize.html</link>
      <guid>https://earldouglas.com/mechanize.html</guid>
      <title>The Mechanism Manifesto</title>
      <pubDate>Tue, 11 Jun 2013 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on a variety of techniques for making it easier to do the right thing and harder to do the wrong thing by mechanizing intentions.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/effect-systems.html</link>
      <guid>https://earldouglas.com/effect-systems.html</guid>
      <title>Effect Systems</title>
      <pubDate>Fri, 16 Nov 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;An effect system is a mechanism for separating the semantics of a program from its specification by using effects.&lt;/p&gt; &lt;p&gt;An effect is an operation, behavior, pattern, signature, or computational context of which meaning is defined by an interpreter.&lt;/p&gt; &lt;p&gt;Effect systems are made up of:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Effect types, which can be encoded as a generic with a single unbound parameter such as &lt;code&gt;IO[_]&lt;/code&gt;, &lt;code&gt;Option[_]&lt;/code&gt;, &lt;code&gt;Future[_]&lt;/code&gt;, etc.&lt;/li&gt; &lt;li&gt;Effect operations that use and produce effect types&lt;/li&gt; &lt;li&gt;Effect handlers that give meaning to effect operations&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;In this post, we explore different ways to implement effect systems in Scala, beginning by describing an effectful program that we would like to write as a pure value, and then writing different toy effect systems that can run it.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/c.html</link>
      <guid>https://earldouglas.com/c.html</guid>
      <title>C</title>
      <pubDate>Fri, 22 Jun 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://en.wikipedia.org/wiki/C_(programming_language)&quot;&gt;C&lt;/a&gt; programming language.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/itof.html</link>
      <guid>https://earldouglas.com/itof.html</guid>
      <title>Functional Refactoring</title>
      <pubDate>Sat, 16 Jun 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Refactoring provides an accessible opportunity to learn about imperative and functional design patterns, and Scala&#039;s hybrid OO/FP design caters to both.&lt;/p&gt; &lt;p&gt;We explore examples of Scala code written using familiar imperative design patterns, and refactor each one using a counterpart functional pattern. We learn how to replace mutable variables with the state monad, loops with folds, thrown exceptions with sum types, dependency injection with the reader monad, and much more. As we go, we build a mapping of corresponding imperative and functional patterns.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/type-classes.html</link>
      <guid>https://earldouglas.com/type-classes.html</guid>
      <title>Type Classes</title>
      <pubDate>Sun, 11 Mar 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Scala supports ad-hoc polymorphism via traits, context bounds, and implicits.&lt;/p&gt; &lt;p&gt;We explore an approach to implementing type classes in Scala.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/haskell.html</link>
      <guid>https://earldouglas.com/haskell.html</guid>
      <title>Haskell</title>
      <pubDate>Sat, 18 Feb 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt; programming language.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/funtinuations.html</link>
      <guid>https://earldouglas.com/funtinuations.html</guid>
      <title>Delimited Continuations</title>
      <pubDate>Mon, 20 Jun 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is an introduction to delimited continuations in Scala, and a sample of some of its practical applications.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;reset { println(&amp;quot;What is your name?&amp;quot;) val name = shift { k: (String =&amp;gt; Unit) =&amp;gt; val name = readLine() k(name) } println(s&amp;quot;Hello, ${name}!&amp;quot;) }&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/akka.html</link>
      <guid>https://earldouglas.com/akka.html</guid>
      <title>Akka</title>
      <pubDate>Sat, 19 Mar 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://akka.io/&quot;&gt;Akka&lt;/a&gt; is an actor library for Scala.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/scala.html</link>
      <guid>https://earldouglas.com/scala.html</guid>
      <title>Scala</title>
      <pubDate>Sun, 27 Feb 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This is a collection of notes on the &lt;a href=&quot;https://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt; programming language.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/spring-mvc.html</link>
      <guid>https://earldouglas.com/spring-mvc.html</guid>
      <title>Spring MVC</title>
      <pubDate>Sat, 02 Oct 2010 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;This post is about Java Web application development using the Spring MVC framework. It distills much of what I have learned from developing enterprise applications with Spring MVC, guiding usage of the components of Spring MVC that I most frequently encounter in practice and on discussion forums. This post provides a brief overview of these components by taking you through the development of an example Spring MVC application from scratch.&lt;/p&gt; &lt;p&gt;My goals in writing this post are to guide developers who are unfamiliar with Spring MVC, and to supply a convenient reference to more seasoned developers.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/jcode.html</link>
      <guid>https://earldouglas.com/jcode.html</guid>
      <title>JCode</title>
      <pubDate>Fri, 04 Jun 2010 00:00:00 GMT</pubDate>
      <description>JCode is a simple rules-based substitution cypher for classroom mischief.</description>
    </item>
    <item>
      <link>https://earldouglas.com/spring-ws.html</link>
      <guid>https://earldouglas.com/spring-ws.html</guid>
      <title>Spring Web Services</title>
      <pubDate>Sun, 13 Sep 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://spring.io/projects/spring-ws/&quot;&gt;Spring Web Services&lt;/a&gt; (Spring-WS) is a framework for writing SOAP Web services.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/krypto.html</link>
      <guid>https://earldouglas.com/krypto.html</guid>
      <title>Krypto</title>
      <pubDate>Fri, 11 Sep 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Two minus three equals negative fun!&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/spring-aop.html</link>
      <guid>https://earldouglas.com/spring-aop.html</guid>
      <title>Spring AOP</title>
      <pubDate>Mon, 31 Aug 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://docs.spring.io/spring-framework/reference/core/aop.html&quot;&gt;Spring AOP&lt;/a&gt; is a framework for wiring crosscutting concerns into applicable functionality without intrusion into the source code.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/guice.html</link>
      <guid>https://earldouglas.com/guice.html</guid>
      <title>Guice</title>
      <pubDate>Sat, 22 Aug 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://github.com/google/guice&quot;&gt;Guice&lt;/a&gt; is a dependency injection framework for Java.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/jetty.html</link>
      <guid>https://earldouglas.com/jetty.html</guid>
      <title>Jetty</title>
      <pubDate>Sat, 18 Jul 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Jetty_(web_server)&quot;&gt;Jetty&lt;/a&gt; is servlet container that is simple and easy to work with for testing or developing embedded web applications. It simple yet capable compared to alternatives such as JBoss or Tomcat. My favorite &quot;feature&quot; is that Jetty consists entirely of two JAR files, coming in at just under 700 KB.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/hibernate.html</link>
      <guid>https://earldouglas.com/hibernate.html</guid>
      <title>Hibernate</title>
      <pubDate>Wed, 18 Mar 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://hibernate.org/&quot;&gt;Hibernate&lt;/a&gt; is an ORM for Java.&lt;/p&gt;</description>
    </item>
    <item>
      <link>https://earldouglas.com/spring.html</link>
      <guid>https://earldouglas.com/spring.html</guid>
      <title>Spring Framework</title>
      <pubDate>Mon, 16 Mar 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;The &lt;a href=&quot;https://spring.io/projects/spring-framework/&quot;&gt;Spring Framework&lt;/a&gt; is a dependency injection framework for Java.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>