{
"path": "/3masu52cs7v73",
"site": "at://did:plc:s5wwr2ccjuqricdxiyiuspfv/site.standard.publication/3m7zleg5tyc2b",
"$type": "site.standard.document",
"title": "Weekly Review - Week 38",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "3masu52cqk6l6",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This post is a summary of my activities related to coding and software in the past week. Its purpose is both to serve as a high-level personal log and as a potential source of interesting (or not so interesting) links. Entries are provided in no particular order with minimal comments..."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 50,
"byteStart": 0
},
"features": [
{
"uri": "https://vadosware.io/post/static-binaries-for-haskell-a-convoluted-approach/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Static Binaries for Haskell: A Convoluted Approach"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ": When trying to build minimal docker images, having a statically linked binary is a plus. This is actually quite hard to realize in practice with GHC as this post demonstrates (note that I tried the suggested approach and failed...)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "http://graydon2.dreamwidth.org/253769.html",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "graydon2 | \"What next?\""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 49,
"byteStart": 38
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": ": Interesting and opinionated post on what's next in Programming languages, e.g. which features from PLT will reach mainstream. First-class modules done right is definitely something we are direly in need for!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 51,
"byteStart": 0
},
"features": [
{
"uri": "http://slatestarcodex.com/2017/09/05/book-review-surfing-uncertainty/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Book Review: Surfing Uncertainty | Slate Star Codex"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ": A long book review on cognition and how our brain copes with uncertain, partial or plain wrong data."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 27,
"byteStart": 0
},
"features": [
{
"uri": "https://github.com/adericbourg/coreprotocols-fr",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Les Protocoles Fondamentaux"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 66,
"byteStart": 52
},
"features": [
{
"uri": "",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 114,
"byteStart": 74
},
"features": [
{
"uri": "https://github.com/rkasper/coreprotocols",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": ": French translation of Michelle and Jim McCarthy's Core Protocols, using The Core Protocols: A Guide to Greatness dfrom Richard Kasperowski as main source."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 8,
"byteStart": 0
},
"features": [
{
"uri": "https://filecoin.io/filecoin.pdf",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "FileCoin"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 18,
"byteStart": 4
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": ": A cryptocurrency providing blockchain-based file-system"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 55,
"byteStart": 0
},
"features": [
{
"uri": "http://hackage.haskell.org/package/testing-feat",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "testing-feat: Functional Enumeration of Algebraic Types"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ": A Haskell package to enumerate inhabitants of any ADT, useful for systematic testing of data types."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 16,
"byteStart": 0
},
"features": [
{
"uri": "http://www.samcoope.com/posts/deep_code_generation",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Sam Coope - Blog"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ": Looks fun! Did not read the full thesis though..."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 69,
"byteStart": 0
},
"features": [
{
"uri": "https://pragprog.com/magazines/2012-01/unit-tests-are-first",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "PragPub January 2012 | Unit Tests Are FIRST | The Pragmatic Bookshelf"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ": A gentle reminder about the properties that a proper unit test should exhibit: Fast, Isolated, Repeatable, Self-Verifying, and Timely"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 18,
"byteStart": 0
},
"features": [
{
"uri": "https://www.tezos.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Tezos Crowdfunding"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 117,
"byteStart": 97
},
"features": [
{
"uri": "https://www.tezos.com/static/papers/white_paper.pdf",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": ": Tezos is a smart contracts platform that aims at offering a self-governing network. I read the language white paper which interestingly draws ideas from Forth: The Tezos language is a typed stack-based language. Although of note is the fact the reference implementation is in OCaml."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 65,
"byteStart": 0
},
"features": [
{
"uri": "https://blog.acolyer.org/2017/09/18/bringing-the-web-up-to-speed-with-webassembly/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Bringing the web up to speed with WebAssembly | the morning paper"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ": Speaking of languages, WebAssembly aims at providing a more solid foundation than Javascript as a the lingua franca for executing arbitrary code in browsers."
}
}
]
}
]
},
"publishedAt": "2017-09-18T00:00:00Z"
}