View Main.purs
appComponent :: forall m. H.Component HH.HTML Query Unit Void m
appComponent = H.component
{ initialState: const {}
, render
, eval
, receiver: const Nothing
render :: State -> H.ComponentHTML Query
View Application.hs
module Application where
import Data.Profunctor
newtype Application request response = Application {unApplication :: request -> IO response}
instance Profunctor Application where
dimap actOnRequest actOnResponse application = Application $ (fmap actOnResponse) . (unApplication application) . actOnRequest
View spectre.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#ifdef _MSC_VER
#include <intrin.h> /* for rdtscp and clflush */
#pragma optimize("gt",on)
#include <x86intrin.h> /* for rdtscp and clflush */

Disclaimer: Please follow this guide being aware of the fact that I'm not an expert regarding the things outlined below, however I made my best attempt. A few people in IRC confirmed it worked for them and the results looked acceptable.

Attention: After following all the steps run gdk-pixbuf-query-loaders --update-cache as root, this prevents various gdk-related bugs that have been reported in the last few hours. Symptoms are varied, and for Cinnamon the DE fails to start entirely while for XFCE the icon theme seemingly can't be changed anymore etc.

Check the gist's comments for any further tips and instructions, especially if you are running into problems!


Results after following the guide as of 11.01.2017 13:08:

View Price

Server Price Breakdown: DigitalOcean, Amazon AWS LightSail, Vultr, Linode, OVH, Hetzner, Scaleway/



Provider Type RAM Cores Storage Transfer Network Price

Android Tools Attributes


Android has a dedicated XML namespace intended for tools to be able to record information in XML files, and have that information stripped when the application is packaged such that there is no runtime or download size penalty. The namespace URI is and is usually bound to the tools: prefix:

<FrameLayout xmlns:android=""
View Main.purs
module Main where
import Prelude
import Data.Lens (LensP(), (+~), lens)
import Control.Monad.Aff (runAff, later, later')
import Control.Monad.Eff (Eff())
import Control.Monad.Eff.Exception (throwException)
import Control.Monad.Rec.Class (forever)

Material Animations

Android Arsenal

[Android Transition Framework][transition-framework] can be used for three main things:

  1. Animate activity layout content when transitioning from one activity to another.
  2. Animate shared elements (Hero views) in transitions between activities.
  3. Animate view changes within same activity.
View traverse.purs
module Main where
import Prelude
import Data.Maybe
import Data.Either
import Data.Tuple
import Data.List
import Data.Profunctor

Setting up Git message validation hook

Install pre-git for handling Git hooks and commitizen for helping format the commit messages

npm install pre-git commitizen cz-conventional-changelog --save-dev