<?xml version='1.0'?>
<rss version='2.0'><channel><title>Steve Losh</title><link>https://stevelosh.com/</link><description>Steve Losh's blog.</description><language>en-us</language><copyright>Copyright 2020, Steve Losh</copyright><webMaster>steve@stevelosh.com (Steve Losh)</webMaster><lastBuildDate>Tue, 17 Jun 2025 16:03:23 GMT</lastBuildDate><generator>Common Lisp</generator><docs>https://validator.w3.org/feed/docs/rss2.html</docs><item><title>Depending in Common Lisp</title><link>https://stevelosh.com/blog/2022/08/depending-in-common-lisp/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2022/08/depending-in-common-lisp/</guid><description>Using the CLOS Dependent Maintenance Protocol</description><pubDate>Fri, 26 Aug 2022 15:15:00 GMT</pubDate></item><item><title>Writing Small CLI Programs in Common Lisp</title><link>https://stevelosh.com/blog/2021/03/small-common-lisp-cli-programs/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2021/03/small-common-lisp-cli-programs/</guid><description>Somewhere between tiny shell scripts and full projects.</description><pubDate>Wed, 17 Mar 2021 16:10:00 GMT</pubDate></item><item><title>A Road to Common Lisp</title><link>https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/</guid><description>How and why you can and should learn this old language.</description><pubDate>Mon, 27 Aug 2018 15:50:00 GMT</pubDate></item><item><title>Fun with Macros: If-Let and When-Let</title><link>https://stevelosh.com/blog/2018/07/fun-with-macros-if-let/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2018/07/fun-with-macros-if-let/</guid><description>Part 2 in a series of short posts about fun Common Lisp Macros.</description><pubDate>Mon, 09 Jul 2018 16:00:00 GMT</pubDate></item><item><title>Fun with Macros: Gathering</title><link>https://stevelosh.com/blog/2018/05/fun-with-macros-gathering/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2018/05/fun-with-macros-gathering/</guid><description>Part 1 in a series of short posts about fun Common Lisp Macros.</description><pubDate>Mon, 21 May 2018 16:05:00 GMT</pubDate></item><item><title>CHIP-8 in Common Lisp: Menus</title><link>https://stevelosh.com/blog/2017/01/chip8-menus/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2017/01/chip8-menus/</guid><description>Let&#039;s add some polish.</description><pubDate>Tue, 10 Jan 2017 16:20:00 GMT</pubDate></item><item><title>CHIP-8 in Common Lisp: Debugging Infrastructure</title><link>https://stevelosh.com/blog/2017/01/chip8-debugging-infrastructure/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2017/01/chip8-debugging-infrastructure/</guid><description>What&#039;s happening inside this computer?</description><pubDate>Thu, 05 Jan 2017 16:40:00 GMT</pubDate></item><item><title>CHIP-8 in Common Lisp: Disassembly</title><link>https://stevelosh.com/blog/2017/01/chip8-disassembly/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2017/01/chip8-disassembly/</guid><description>What&#039;s in a ROM?</description><pubDate>Mon, 02 Jan 2017 17:15:00 GMT</pubDate></item><item><title>CHIP-8 in Common Lisp: Sound</title><link>https://stevelosh.com/blog/2016/12/chip8-sound/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/12/chip8-sound/</guid><description>Let&#039;s add a buzzer.</description><pubDate>Mon, 26 Dec 2016 17:30:00 GMT</pubDate></item><item><title>CHIP-8 in Common Lisp: Input</title><link>https://stevelosh.com/blog/2016/12/chip8-input/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/12/chip8-input/</guid><description>Let&#039;s add a keypad.</description><pubDate>Fri, 23 Dec 2016 16:00:00 GMT</pubDate></item><item><title>CHIP-8 in Common Lisp: Graphics</title><link>https://stevelosh.com/blog/2016/12/chip8-graphics/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/12/chip8-graphics/</guid><description>Let&#039;s draw some pixels.</description><pubDate>Wed, 21 Dec 2016 16:55:00 GMT</pubDate></item><item><title>CHIP-8 in Common Lisp: The CPU</title><link>https://stevelosh.com/blog/2016/12/chip8-cpu/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/12/chip8-cpu/</guid><description>Let&#039;s write an emulator.</description><pubDate>Mon, 19 Dec 2016 17:45:00 GMT</pubDate></item><item><title>Customizing Common Lisp&#039;s Iterate: Timing</title><link>https://stevelosh.com/blog/2016/10/iterate-timing/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/10/iterate-timing/</guid><description>How long is this loop?</description><pubDate>Mon, 10 Oct 2016 14:50:00 GMT</pubDate></item><item><title>Customizing Common Lisp&#039;s Iterate: Averaging</title><link>https://stevelosh.com/blog/2016/09/iterate-averaging/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/09/iterate-averaging/</guid><description>Don&#039;t loop, iterate!</description><pubDate>Tue, 20 Sep 2016 13:45:00 GMT</pubDate></item><item><title>Playing With Syntax</title><link>https://stevelosh.com/blog/2016/08/playing-with-syntax/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/08/playing-with-syntax/</guid><description>Lisp lets you evolve your language.</description><pubDate>Fri, 19 Aug 2016 13:15:00 GMT</pubDate></item><item><title>August 2016 Lisp Game Jam Postmortem</title><link>https://stevelosh.com/blog/2016/08/lisp-jam-postmortem/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/08/lisp-jam-postmortem/</guid><description>Porting a game from Clojure to Common Lisp.</description><pubDate>Mon, 15 Aug 2016 13:45:00 GMT</pubDate></item><item><title>What the Hell is Symbolic Computation?</title><link>https://stevelosh.com/blog/2016/06/symbolic-computation/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/06/symbolic-computation/</guid><description>Symbols, REPLs, and Quoting &#x2014; Oh My!</description><pubDate>Wed, 29 Jun 2016 13:30:00 GMT</pubDate></item><item><title>Terrain Generation with Diamond Square</title><link>https://stevelosh.com/blog/2016/06/diamond-square/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/06/diamond-square/</guid><description>Improving on Midpoint Displacement.</description><pubDate>Mon, 27 Jun 2016 13:35:00 GMT</pubDate></item><item><title>Recursive Midpoint Displacement</title><link>https://stevelosh.com/blog/2016/03/recursive-midpoint-displacement/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/03/recursive-midpoint-displacement/</guid><description>A cleaner version.</description><pubDate>Mon, 07 Mar 2016 13:45:00 GMT</pubDate></item><item><title>Terrain Generation with Midpoint Displacement</title><link>https://stevelosh.com/blog/2016/02/midpoint-displacement/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2016/02/midpoint-displacement/</guid><description>A first step toward growing worlds with computers.</description><pubDate>Fri, 19 Feb 2016 19:45:00 GMT</pubDate></item><item><title>Ludum Dare 34 Postmortem</title><link>https://stevelosh.com/blog/2015/12/ludum-dare-34/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2015/12/ludum-dare-34/</guid><description>I made a &quot;game&quot;!</description><pubDate>Tue, 15 Dec 2015 16:30:00 GMT</pubDate></item><item><title>What the Hell are Permutation Patterns?</title><link>https://stevelosh.com/blog/2015/12/permutation-patterns/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2015/12/permutation-patterns/</guid><description>A short introduction.</description><pubDate>Thu, 10 Dec 2015 19:55:00 GMT</pubDate></item><item><title>Just Beat the Data Out of It</title><link>https://stevelosh.com/blog/2015/11/beat-the-data/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2015/11/beat-the-data/</guid><description>Round two of the Bob Ross Twitch chat analysis.</description><pubDate>Mon, 30 Nov 2015 16:10:00 GMT</pubDate></item><item><title>Happy Little Words</title><link>https://stevelosh.com/blog/2015/11/happy-little-words/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2015/11/happy-little-words/</guid><description>Analyzing the Bob Ross Twitch chat.</description><pubDate>Fri, 20 Nov 2015 18:43:00 GMT</pubDate></item><item><title>Bag Review: National Geographic MC5350</title><link>https://stevelosh.com/blog/2015/07/nat-geo-mc5350/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2015/07/nat-geo-mc5350/</guid><description>Almost perfect weekend travel and DSLR kit bag.</description><pubDate>Sun, 26 Jul 2015 13:35:00 GMT</pubDate></item><item><title>Bag Review: National Geographic A2540</title><link>https://stevelosh.com/blog/2015/07/nat-geo-a2540/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2015/07/nat-geo-a2540/</guid><description>A great little shoulder bag for holding a DSLR kit.</description><pubDate>Fri, 24 Jul 2015 18:42:00 GMT</pubDate></item><item><title>Teach, Don&#039;t Tell</title><link>https://stevelosh.com/blog/2013/09/teach-dont-tell/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2013/09/teach-dont-tell/</guid><description>Documentation Matters</description><pubDate>Tue, 03 Sep 2013 10:55:00 GMT</pubDate></item><item><title>Git Koans</title><link>https://stevelosh.com/blog/2013/04/git-koans/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2013/04/git-koans/</guid><description>The path to enlightenment is long and arduous.</description><pubDate>Mon, 08 Apr 2013 10:16:00 GMT</pubDate></item><item><title>List Out of Lambda</title><link>https://stevelosh.com/blog/2013/03/list-out-of-lambda/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2013/03/list-out-of-lambda/</guid><description>Down the rabbit hole we go!</description><pubDate>Sat, 30 Mar 2013 14:00:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 7.1</title><link>https://stevelosh.com/blog/2012/10/caves-of-clojure-07-1/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/10/caves-of-clojure-07-1/</guid><description>Region mapping.</description><pubDate>Mon, 15 Oct 2012 09:50:00 GMT</pubDate></item><item><title>A Modern Space Cadet</title><link>https://stevelosh.com/blog/2012/10/a-modern-space-cadet/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/10/a-modern-space-cadet/</guid><description>Emulating a legendary keyboard.</description><pubDate>Wed, 03 Oct 2012 09:55:00 GMT</pubDate></item><item><title>The Homely Mutt</title><link>https://stevelosh.com/blog/2012/10/the-homely-mutt/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/10/the-homely-mutt/</guid><description>Sparrow&#039;s dead?  Why not try Mutt?</description><pubDate>Mon, 01 Oct 2012 10:30:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 6</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-06/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-06/</guid><description>Real combat and messages.</description><pubDate>Mon, 30 Jul 2012 09:50:00 GMT</pubDate></item><item><title>The Caves of Clojure: Interlude 1</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-interlude-1/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-interlude-1/</guid><description>Black magic.</description><pubDate>Sat, 14 Jul 2012 17:06:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 5</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-05/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-05/</guid><description>Fungus and more.</description><pubDate>Fri, 13 Jul 2012 10:55:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 4</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-04/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-04/</guid><description>A player!</description><pubDate>Thu, 12 Jul 2012 09:42:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 3.4</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-4/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-4/</guid><description>Refactoring.</description><pubDate>Wed, 11 Jul 2012 12:02:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 3.3</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-3/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-3/</guid><description>Scrolling.</description><pubDate>Wed, 11 Jul 2012 09:25:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 3.2</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-2/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-2/</guid><description>World smoothing.</description><pubDate>Tue, 10 Jul 2012 10:04:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 3.1</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-1/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-03-1/</guid><description>World generation.</description><pubDate>Mon, 09 Jul 2012 09:37:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 2</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-02/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-02/</guid><description>Dealing with state.</description><pubDate>Sun, 08 Jul 2012 09:26:00 GMT</pubDate></item><item><title>The Caves of Clojure: Part 1</title><link>https://stevelosh.com/blog/2012/07/caves-of-clojure-01/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/07/caves-of-clojure-01/</guid><description>Getting a Roguelike up and running.</description><pubDate>Sat, 07 Jul 2012 17:00:00 GMT</pubDate></item><item><title>Volatile Software</title><link>https://stevelosh.com/blog/2012/04/volatile-software/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2012/04/volatile-software/</guid><description>Our culture is one of pain and suffering.</description><pubDate>Mon, 23 Apr 2012 14:00:00 GMT</pubDate></item><item><title>Writing Vim Plugins</title><link>https://stevelosh.com/blog/2011/09/writing-vim-plugins/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2011/09/writing-vim-plugins/</guid><description>It&#039;s pretty much black magic.</description><pubDate>Tue, 06 Sep 2011 09:13:00 GMT</pubDate></item><item><title>Django Advice</title><link>https://stevelosh.com/blog/2011/06/django-advice/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2011/06/django-advice/</guid><description>Some useful things I&#039;ve learned.</description><pubDate>Thu, 30 Jun 2011 08:30:00 GMT</pubDate></item><item><title>Going Paper-Free for $220</title><link>https://stevelosh.com/blog/2011/05/paper-free/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2011/05/paper-free/</guid><description>It feels like the future!</description><pubDate>Thu, 26 May 2011 13:44:00 GMT</pubDate></item><item><title>Coming Home to Vim</title><link>https://stevelosh.com/blog/2010/09/coming-home-to-vim/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/09/coming-home-to-vim/</guid><description>I&#039;m sorry I ever left.</description><pubDate>Mon, 20 Sep 2010 18:15:00 GMT</pubDate></item><item><title>A Git User&#039;s Guide to Mercurial Queues</title><link>https://stevelosh.com/blog/2010/08/a-git-users-guide-to-mercurial-queues/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/08/a-git-users-guide-to-mercurial-queues/</guid><description>MQ is git&#039;s index on steroids.</description><pubDate>Tue, 10 Aug 2010 21:00:00 GMT</pubDate></item><item><title>Mercurial Workflows: Translation Branches</title><link>https://stevelosh.com/blog/2010/06/mercurial-workflows-translation-branches/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/06/mercurial-workflows-translation-branches/</guid><description>Uncommon but useful.</description><pubDate>Fri, 11 Jun 2010 08:15:00 GMT</pubDate></item><item><title>Mercurial Workflows: Stable &amp; Default</title><link>https://stevelosh.com/blog/2010/05/mercurial-workflows-stable-default/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/05/mercurial-workflows-stable-default/</guid><description>Part 2 of several.</description><pubDate>Mon, 17 May 2010 18:27:00 GMT</pubDate></item><item><title>A Faster Feed Apart</title><link>https://stevelosh.com/blog/2010/04/a-faster-feed-apart/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/04/a-faster-feed-apart/</guid><description>Rethinking A Feed Apart&#x2019;s backend.</description><pubDate>Fri, 30 Apr 2010 22:55:00 GMT</pubDate></item><item><title>Mercurial Workflows: Branch As Needed</title><link>https://stevelosh.com/blog/2010/02/mercurial-workflows-branch-as-needed/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/02/mercurial-workflows-branch-as-needed/</guid><description>Part 1 of several.</description><pubDate>Sun, 28 Feb 2010 14:00:00 GMT</pubDate></item><item><title>My Extravagant Zsh Prompt</title><link>https://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/</guid><description>It&#x2019;s big, but my monitor isn&#x2019;t running out of ink.</description><pubDate>Mon, 01 Feb 2010 01:05:00 GMT</pubDate></item><item><title>The Real Difference Between Mercurial and Git</title><link>https://stevelosh.com/blog/2010/01/the-real-difference-between-mercurial-and-git/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/01/the-real-difference-between-mercurial-and-git/</guid><description>It&#x2019;s not their features.</description><pubDate>Wed, 20 Jan 2010 21:56:00 GMT</pubDate></item><item><title>Moving from Django to Hyde</title><link>https://stevelosh.com/blog/2010/01/moving-from-django-to-hyde/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2010/01/moving-from-django-to-hyde/</guid><description>Another year, another rewrite.</description><pubDate>Fri, 15 Jan 2010 20:14:00 GMT</pubDate></item><item><title>A Guide to Branching in Mercurial</title><link>https://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/</guid><description>With illustrations and comparisons to git.</description><pubDate>Sun, 30 Aug 2009 20:27:12 GMT</pubDate></item><item><title>How to Contribute to Mercurial</title><link>https://stevelosh.com/blog/2009/06/how-to-contribute-to-mercurial/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/06/how-to-contribute-to-mercurial/</guid><description>Ten minutes of setup will make it easier.</description><pubDate>Mon, 01 Jun 2009 20:09:44 GMT</pubDate></item><item><title>What I Hate About Mercurial</title><link>https://stevelosh.com/blog/2009/05/what-i-hate-about-mercurial/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/05/what-i-hate-about-mercurial/</guid><description>Hg, I love you, but sometimes you bring me down.</description><pubDate>Fri, 29 May 2009 19:51:05 GMT</pubDate></item><item><title>Candy Colored Terminal</title><link>https://stevelosh.com/blog/2009/03/candy-colored-terminal/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/03/candy-colored-terminal/</guid><description>Better colors for the OS X Terminal.</description><pubDate>Wed, 18 Mar 2009 18:26:28 GMT</pubDate></item><item><title>Mercurial Bash Prompts</title><link>https://stevelosh.com/blog/2009/03/mercurial-bash-prompts/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/03/mercurial-bash-prompts/</guid><description>Always know where you are.</description><pubDate>Tue, 17 Mar 2009 21:34:55 GMT</pubDate></item><item><title>How &amp; Why I DJ</title><link>https://stevelosh.com/blog/2009/02/how-and-why-i-dj/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/02/how-and-why-i-dj/</guid><description>I like playing music for dancers.</description><pubDate>Fri, 06 Feb 2009 17:53:44 GMT</pubDate></item><item><title>Deploying with Fabric &amp; Mercurial</title><link>https://stevelosh.com/blog/2009/01/deploying-site-fabric-and-mercurial/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/01/deploying-site-fabric-and-mercurial/</guid><description>Trimming typing.</description><pubDate>Thu, 15 Jan 2009 20:51:09 GMT</pubDate></item><item><title>Going Open Source</title><link>https://stevelosh.com/blog/2009/01/going-open-source/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/01/going-open-source/</guid><description>Why I&#x2019;m making the code to this website public.</description><pubDate>Tue, 13 Jan 2009 20:08:56 GMT</pubDate></item><item><title>Site Redesign</title><link>https://stevelosh.com/blog/2009/01/site-redesign/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2009/01/site-redesign/</guid><description>Yeah, I know.  Again.</description><pubDate>Sun, 11 Jan 2009 17:58:23 GMT</pubDate></item><item><title>Entourage + Applescript = Frustration</title><link>https://stevelosh.com/blog/2008/02/microsoft-entourage-applescript-frustration/</link><guid isPermaLink='true'>https://stevelosh.com/blog/2008/02/microsoft-entourage-applescript-frustration/</guid><description>This is ridiculous.</description><pubDate>Thu, 21 Feb 2008 15:25:45 GMT</pubDate></item></channel></rss>