<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Haskell on The Negation</title><link>https://www.thenegation.com/tags/haskell/</link><description>Recent content in Haskell on The Negation</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 29 May 2025 23:55:54 +0000</lastBuildDate><atom:link href="https://www.thenegation.com/tags/haskell/index.xml" rel="self" type="application/rss+xml"/><item><title>Cross-Compiling Haskell under NixOS with Docker</title><link>https://www.thenegation.com/posts/cross-compile-haskell/</link><pubDate>Thu, 29 May 2025 23:55:54 +0000</pubDate><guid>https://www.thenegation.com/posts/cross-compile-haskell/</guid><description>&lt;p&gt;I learned how to cross-compile Haskell projects under NixOS using Docker images
for ARM architectures, and how to run them under emulation on &lt;code&gt;x86_64&lt;/code&gt; hosts.&lt;/p&gt;</description></item><item><title>Magic JSON in Haskell</title><link>https://www.thenegation.com/posts/magic-json-haskell/</link><pubDate>Fri, 23 May 2025 21:19:46 +0000</pubDate><guid>https://www.thenegation.com/posts/magic-json-haskell/</guid><description>&lt;p&gt;Among all Haskell libraries I have used, the one I reach for the most is
&lt;a href="https://hackage.haskell.org/package/autodocodec"&gt;autodocodec&lt;/a&gt;. I will explain what it is and what freebies it gives you.&lt;/p&gt;</description></item><item><title>Hacking Haskell with Nix: Two Tricks</title><link>https://www.thenegation.com/posts/quick-haskell-dev-setup/</link><pubDate>Thu, 22 May 2025 22:10:37 +0000</pubDate><guid>https://www.thenegation.com/posts/quick-haskell-dev-setup/</guid><description>&lt;p&gt;I have mentioned a few times in my posts that &lt;a href="https://www.haskell.org/"&gt;Haskell&lt;/a&gt; is my go-to language.
This is true even for small applications which go beyond a simple shell script.&lt;/p&gt;
&lt;p&gt;Hacking Haskell with Nix is an easy and fun way to quickly prototype. I want to
share two tricks that I use.&lt;/p&gt;</description></item><item><title>Haskell Project Template with Nix Flakes</title><link>https://www.thenegation.com/posts/haskell-template-flakes/</link><pubDate>Tue, 20 May 2025 21:43:46 +0000</pubDate><guid>https://www.thenegation.com/posts/haskell-template-flakes/</guid><description>&lt;p&gt;This post introduces my Haskell project template powered by Nix Flakes &amp;ndash; a
simple setup I use to quickly spin up new Haskell applications.&lt;/p&gt;</description></item><item><title>More Haskell Diagrams: Contribution Graph</title><link>https://www.thenegation.com/posts/haskell-diagrams-plot-calendar/</link><pubDate>Fri, 30 Aug 2024 22:39:46 +0000</pubDate><guid>https://www.thenegation.com/posts/haskell-diagrams-plot-calendar/</guid><description/></item><item><title>Hacking Watson with Haskell - Part 3</title><link>https://www.thenegation.com/posts/hacking-watson-part-3/</link><pubDate>Sat, 17 Aug 2024 21:02:23 +0000</pubDate><guid>https://www.thenegation.com/posts/hacking-watson-part-3/</guid><description>&lt;p&gt;In the previous blog posts (&lt;a href="https://www.thenegation.com/posts/hacking-watson-with-haskell-part-1/"&gt;part 1&lt;/a&gt;, &lt;a href="https://www.thenegation.com/posts/hacking-watson-with-haskell-part-2/"&gt;part 2&lt;/a&gt;), we managed to read &lt;a href="http://tailordev.github.io/Watson/"&gt;Watson&lt;/a&gt;
frames and state from its JSON files. In this blog post, we will do something
more useful: start and stop timer.&lt;/p&gt;</description></item><item><title>Hacking Watson with Haskell - Part 2</title><link>https://www.thenegation.com/posts/hacking-watson-part-2/</link><pubDate>Fri, 16 Aug 2024 22:50:46 +0000</pubDate><guid>https://www.thenegation.com/posts/hacking-watson-part-2/</guid><description>&lt;p&gt;In the &lt;a href="https://www.thenegation.com/posts/hacking-watson-with-haskell-part-1/"&gt;previous blog post&lt;/a&gt;, we read the &lt;a href="http://tailordev.github.io/Watson/"&gt;Watson&lt;/a&gt; frames from a JSON file. In
this blog post, we will read the &lt;a href="http://tailordev.github.io/Watson/"&gt;Watson&lt;/a&gt; state file and print it to the
standard output.&lt;/p&gt;</description></item><item><title>Hacking Watson with Haskell - Part 1</title><link>https://www.thenegation.com/posts/hacking-watson-part-1/</link><pubDate>Thu, 15 Aug 2024 21:33:55 +0000</pubDate><guid>https://www.thenegation.com/posts/hacking-watson-part-1/</guid><description>&lt;p&gt;&lt;a href="http://tailordev.github.io/Watson/"&gt;Watson&lt;/a&gt; is a command-line tool that helps you to track your time. It is simple
and powerful, yet it lacks some features that I would like to have. In this blog
post, I will start hacking &lt;a href="http://tailordev.github.io/Watson/"&gt;Watson&lt;/a&gt; with Haskell.&lt;/p&gt;</description></item><item><title>More Haskell Diagrams: Dynamic OpenGraph Images</title><link>https://www.thenegation.com/posts/haskell-diagrams-dynamic-og/</link><pubDate>Wed, 14 Aug 2024 20:29:55 +0000</pubDate><guid>https://www.thenegation.com/posts/haskell-diagrams-dynamic-og/</guid><description>&lt;p&gt;This blog post is a Literate Haskell program that produces its own OpenGraph
image using the infamous Haskell &lt;a href="https://diagrams.github.io"&gt;diagrams&lt;/a&gt; library.&lt;/p&gt;</description></item><item><title>More Haskell Diagrams: Wrapping Text</title><link>https://www.thenegation.com/posts/haskell-diagrams-text/</link><pubDate>Tue, 13 Aug 2024 19:14:35 +0000</pubDate><guid>https://www.thenegation.com/posts/haskell-diagrams-text/</guid><description>&lt;p&gt;Working with text, especially wrapping it, can be tricky when generating images
with Haskell&amp;rsquo;s &lt;a href="https://diagrams.github.io"&gt;diagrams&lt;/a&gt; library. In this blog post, we will write a literate
Haskell program to generate an image with text that fits in a box and wraps if
we want so.&lt;/p&gt;</description></item><item><title>More Haskell Diagrams: OpenGraph Images</title><link>https://www.thenegation.com/posts/haskell-diagrams-og/</link><pubDate>Mon, 12 Aug 2024 21:15:53 +0000</pubDate><guid>https://www.thenegation.com/posts/haskell-diagrams-og/</guid><description>&lt;p&gt;In this blog post, we are continuing to play with Haskell&amp;rsquo;s &lt;a href="https://diagrams.github.io"&gt;diagrams&lt;/a&gt; library.
We will write a literate Haskell program to generate an &lt;a href="https://ogp.me"&gt;OpenGraph&lt;/a&gt; image.&lt;/p&gt;</description></item><item><title>Executable Blog Posts: Second Take</title><link>https://www.thenegation.com/posts/executable-blog-post-pandoc-filters/</link><pubDate>Sun, 11 Aug 2024 22:35:12 +0000</pubDate><guid>https://www.thenegation.com/posts/executable-blog-post-pandoc-filters/</guid><description>&lt;p&gt;This is a second take for my previous blog post &lt;a href="https://www.thenegation.com/posts/abuse-haskell/"&gt;Abusing Haskell: Executable
Blog Posts&lt;/a&gt;. This time, I am going to improve the solution with a &lt;a href="https://www.lua.org"&gt;Lua&lt;/a&gt; filter
for &lt;a href="https://pandoc.org"&gt;pandoc&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>More Haskell Diagrams: Images</title><link>https://www.thenegation.com/posts/haskell-diagrams-images/</link><pubDate>Sat, 10 Aug 2024 11:03:50 +0000</pubDate><guid>https://www.thenegation.com/posts/haskell-diagrams-images/</guid><description>&lt;p&gt;Let&amp;rsquo;s continue exploring the Haskell &lt;a href="https://diagrams.github.io"&gt;diagrams&lt;/a&gt; library. In this post, we will
embed external images in our diagrams.&lt;/p&gt;</description></item><item><title>Introduction to Haskell Diagrams</title><link>https://www.thenegation.com/posts/haskell-diagrams-intro/</link><pubDate>Fri, 09 Aug 2024 23:20:10 +0000</pubDate><guid>https://www.thenegation.com/posts/haskell-diagrams-intro/</guid><description>&lt;p&gt;I need a solid declarative diagramming library or tool that I can invest time
in. I always wanted to learn Haskell&amp;rsquo;s &lt;code&gt;diagrams&lt;/code&gt; library. In this post, I will
give it a try.&lt;/p&gt;</description></item><item><title>Using niv to Manage Haskell Dependencies</title><link>https://www.thenegation.com/posts/using-niv-with-hackage/</link><pubDate>Tue, 06 Aug 2024 20:31:10 +0000</pubDate><guid>https://www.thenegation.com/posts/using-niv-with-hackage/</guid><description>&lt;p&gt;Using Nix to manage project dependencies and development environments is a great
way to keep your projects reproducible and isolated. &lt;a href="https://github.com/nmattia/niv"&gt;niv&lt;/a&gt; can help you further
in this by pinning the versions of your dependencies outside of your Nix code as
JSON data.&lt;/p&gt;
&lt;p&gt;In this post, I will show you what using &lt;a href="https://github.com/nmattia/niv"&gt;niv&lt;/a&gt; looks like and how to override
Haskell dependencies. I will also demo a small script I wrote to add Hackage
packages to the &lt;code&gt;sources.json&lt;/code&gt; file.&lt;/p&gt;</description></item><item><title>Backup GitHub Repositories with gidek</title><link>https://www.thenegation.com/posts/backup-github-repos/</link><pubDate>Mon, 05 Aug 2024 21:24:10 +0000</pubDate><guid>https://www.thenegation.com/posts/backup-github-repos/</guid><description>&lt;p&gt;Do you backup your Git repositories? If not, you should consider doing so. I
might even have a solution for you if you are using GitHub: &lt;a href="https://github.com/vst/gidek"&gt;gidek&lt;/a&gt;. It even has
some NixOS goodies packed with it.&lt;/p&gt;</description></item><item><title>Abusing Haskell: Executable Blog Posts</title><link>https://www.thenegation.com/posts/abuse-haskell/</link><pubDate>Sun, 04 Aug 2024 12:21:10 +0000</pubDate><guid>https://www.thenegation.com/posts/abuse-haskell/</guid><description>&lt;p&gt;Why? Because I can, and it is a rainy Sunday.&lt;/p&gt;
&lt;p&gt;I post my notes on &lt;a href="https://www.thenegation.com"&gt;my blog&lt;/a&gt;, &lt;a href="https://thenegation.hashnode.dev"&gt;Hashnode&lt;/a&gt; and &lt;a href="https://dev.to/vst"&gt;dev.to&lt;/a&gt;, which require slightly
different markdown formats. I have been doing the sane thing to fix formats so
far. But it is a rainy Sunday and I am bored, so I decided to make this blog
post an executable Haskell program to do the same.&lt;/p&gt;</description></item></channel></rss>