Understand your Mac and iPhone more deeply by tracing the evolution of Mac OS X from prelease to Swift. John Siracusa delivers the details.
You've got two main options:
Classes | |
* Keith Devlin - Introduction to Mathematical Thinking - https://www.coursera.org/learn/mathematical-thinking | |
* Michael Genesereth - Introduction to Logic - https://www.coursera.org/learn/logic-introduction | |
* Robert Harper - Homotopy Type Theory - http://www.cs.cmu.edu/~rwh/courses/hott/ | |
Books and Articles | |
* Benjamin C. Pierce - Types and Programming Languages - https://www.cis.upenn.edu/~bcpierce/tapl/ | |
* x775 - Introduction to Datalog - https://x775.net/2019/03/18/Introduction-to-Datalog.html | |
* Bartosz Milewski - Category Theory For Programmers - https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/ | |
* Benjamin C. Pierce et al. - Software Foundations - https://softwarefoundations.cis.upenn.edu/ |
See also List of materials about Software Design in Haskell
Junior | Middle | Senior | Architect | |
---|---|---|---|---|
Haskell level | Basic Haskell | Intermediate Haskell | Advanced Haskell | Language-agnostic |
Haskell knowledge scope | Learn you a Haskell | Get programming with Haskell | Haskell in Depth | Knows several languages from different categories |
Get programming with Haskell | Haskell in Depth | Functional Design and Architecture | ||
[Other books on Software Engineering in Haskell](https://github.com/graninas/software-design-in-haskell#B |
name: Security audit | |
on: | |
schedule: | |
- cron: '0 0 * * *' | |
push: | |
paths: | |
- '**/Cargo.toml' | |
- '**/Cargo.lock' | |
jobs: | |
security_audit: |
{ | |
"lib/**/views/*_view.ex": { | |
"type": "view", | |
"alternate": "test/{dirname}/views/{basename}_view_test.exs", | |
"template": [ | |
"defmodule {dirname|camelcase|capitalize}.{basename|camelcase|capitalize}View do", | |
" use {dirname|camelcase|capitalize}, :view", | |
"end" | |
] | |
}, |
{ config, lib, pkgs, ...}: | |
with lib; | |
let | |
cfg = config.services.batteryNotifier; | |
in { | |
options = { | |
services.batteryNotifier = { | |
enable = mkOption { |
Disclaimer: This piece is written anonymously. The names of a few particular companies are mentioned, but as common examples only.
This is a short write-up on things that I wish I'd known and considered before joining a private company (aka startup, aka unicorn in some cases). I'm not trying to make the case that you should never join a private company, but the power imbalance between founder and employee is extreme, and that potential candidates would
To harmonize (with G2 curvature) two cubic Bézier curves a0,a1,a2,a3
and b0,b1,b2,b3
where a2
, a3 = b0
, and b1
are colinear:
a1--a2
and line b1--b2
.p0 = |a1, a2| / |a2, d|
and p1 = |d1, b1| / |b1, b2|
.p = sqrt(p0 * p1)
a3 = b0
such that |a2, a3| / |a3, b1| == p
.t = p / (p+1)
.a3=b0
so that it sits t
of the way between a2
and b1
.Of course, you may prefer to keep the position of a3
because it's the on-curve point. Fine. Instead, compute where a3
should go according to this algorithm, work out the delta between the new position and the current position, and apply that delta to the handles a2
and b1
instead.