The hand-painted look is a compelling game art style. It adds a whimsically fantastical feel that photorealism lacks. However, actually achieving the look can be quite tedious — sometimes requiring hours for a single texture.

When I last wrote about binding PureScript to C++, I demonstrated animating the PureScript logo with SFML. Since then, PureScript Native (PSN) has superseded Pure11 and the details for using PSN have changed.

Managing state. It’s the bane of programmers everywhere. The more stateful processes, subroutines, objects, components, widgets, doodads, etc. there are, the harder it is to keep your app from becoming a giant mud pit.

Are you curious about monads? 🤔 Or maybe you’re further down the rabbit 🐰 hole, looking into applicatives? Does “functor” sound alien 👽 to you?

No worries! 😃

Monad, applicative functor, and functor are just functional programming patterns you can use to deal with effects like lists/arrays, trees, hashes/dictionaries, and even functions.

Functor is the simplest pattern, so it makes sense to start there. As you work your way to monad, you’ll see that functor is the basis for applicative functor which is the basis for monad.

⚠️ If you don’t get the animations, don’t worry. Just focus on the…

For the upcoming release of Gifcurry an open-source, video-to-GIF maker — a completely custom theme was made using CSS and Haskell. The new theme will help maintain a more consistent look and feel across platforms and for Linux — across distros. The theme also ensures the need for only one set of custom icons.

Creating a GTK desktop app and styling it like you would a web application is a great alternative to frameworks like Electron. You can reuse your CSS knowledge and ship a cross-platform product with reduced system requirements. Of course Haskell isn’t required, as you can…

GTK, if you’re unfamiliar with it, is a library for creating graphical widgets for the desktop. These widgets can take in user input and/or show application output. GTK comes with a nice selection of widgets. Widgets range from the humble checkbox to a full-blown file explorer. For the most part, you’ll never need to create your own widget but sometimes what’s in stock isn’t enough.

You’ve modeled your life around Kleisli composition. On your right arm is a tattoo that reads, “point free or die.” You can tie the knot in your sleep. Zygohistomorphic prepromorphism is your go-to recursion scheme. You looked out from atop the Haskell pyramid and found the view boring. Now comes the hard part — distributing your Haskell app to Linux users.

Once that last commit goes in, it’s time to get your app out there by opening up a distribution channel. One viable Linux app distribution channel is Flathub.

Flathub aims to be the place to get and distribute apps…

Not too many stock photos for “Latent Dirichlet Allocation”.

Before we get started, I made a tool (here’s the source) that runs LDA right inside your browser (it’s pretty neat). Be sure to have that open as I go along, it will make things a lot clearer.

All of the emoji I use come from this page. Just select any one emoji and copy it into the input boxes. If you don’t see the emoji, try using Firefox version 50 or greater.

What is LDA?

Latent Dirichlet Allocation (LDA) is a “generative probabilistic model” of a collection of composites made up of parts. …

There comes a time in most every app’s life when it needs distribution. If you can, it’s best to ship it in as many ways as possible. Still, if you’re targeting Ubuntu—or Linux in general — a decent solution is to create a snap.

What is a snap?

According to the Snapcraft website, “Snaps are universal Linux packages.” The end user goal is to provide a no-hassle way to download software and keep it up to date as new revisions come out. No building, compiling, transpiling, linking, making, make installing, and/or dependency downloading — just download the snap and you’re off to the races.

So how do I get started snapping my app?

Found in a list of 100+ interesting data sets, the Texas Department of Criminal Justice provides different collections of information on death row inmates both present and past. Prior occupations for each current offender are listed here.


We’ll need some packages to scrape, cluster, and chart our findings.

  • rvest: “Wrappers around the ‘xml2’ and ‘httr’ packages to make it easy to download, then manipulate, HTML and XML.”
  • wordcloud: “Pretty word clouds.”
  • tm: “A framework for text mining applications within R.”
  • apcluster: “The ‘apcluster’ package implements Frey’s and Dueck’s Affinity Propagation clustering in R.”


The data we wish to look…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store