- Side by side terminology of Future and JS Promises to show similarity. This could be setup earlier when Futures abstraction is introduced. The code examples can then instead use JS Promises which should be familiar to frontend programmers.
- References to Finagle are ad-hoc at best in the current draft. Make it clear to the reader how Finagle is relevant to the paper under discussion, and the goals of the project.
- Fix signature difference between Future.t and Js.Promise.t in code examples
- Add an introduction section which sets the context for this narrative. Building a modern web framework which can apply the principles used in building Finagle. Such a web framework written a statically typed language can provide safety guarantees at compile time. The functional style emphasizing immutability, composition, isolation of side effects etc improves our ability to reason about behaviour.
- Rewrite conclusion section.
- Include accidental vs essential complexity quote from out of the
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { match, P } from "ts-pattern"; | |
const headerBlocType = { | |
Header: "header", | |
Paragraph: "paragraph", | |
Image: "image", | |
} as const; | |
interface HeadBlockData { | |
text: string; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Drop me a line if you wanna see this as a proper merb plugin. | |
class Merb::Controller | |
ITEM_RANGE = /^items=(\d+)-(\d+)$/ | |
RANGE = /^(\d+)-(\d+)$/ | |
# Displays a collection resource (using Merb's display method) while supporting requests for sub-ranges of items in a RESTful fashion. | |
# This supports a subset of the HTTP/1.1 spec for content ranges, using a custom range unit 'items'. eg: | |
# GET /collection HTTP/1.1 | |
# Range: items 10-20 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ssh-keygen -t rsa -b 4096 -N '' -C "[email protected]" -f ~/.ssh/id_rsa | |
ssh-keygen -t rsa -b 4096 -N '' -C "[email protected]" -f ~/.ssh/github_rsa | |
ssh-keygen -t rsa -b 4096 -N '' -C "[email protected]" -f ~/.ssh/mozilla_rsa |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// [dependencies] | |
// futures = "0.1.27" | |
// http = "0.1.17" | |
// tokio = "0.1.21" | |
// tower-request-modifier = { git = "https://github.com/tower-rs/tower-http" } | |
// tower-grpc = { version = "0.1.0", features = ["tower-hyper"] } | |
// tower-service = "0.2" | |
// tower-util = "0.1" | |
// tokio-rustls = "0.10.0-alpha.3" |
CSS Modules lets you write and use simple class names rather than remembering and maintaining long unique class names for every component. CSS Modules mutates all of your classnames from each partials into new, completely unique classnames that will not conflict when they are bundled together into your main CSS file. Then, a JSON file is generated that maps the happy classnames from each file to the unique classname in the combined file. You load this map in PHP, and begin using the easy-to-remember classnames as you wish.