aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock20
-rw-r--r--_includes/head.html3
-rw-r--r--_layouts/chapter.html3
-rw-r--r--chapter/3/message-passing.md3
-rw-r--r--resources/css/blog.css106
-rwxr-xr-xresources/css/main.css72
7 files changed, 179 insertions, 30 deletions
diff --git a/Gemfile b/Gemfile
index 2d0c493..6017699 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,3 +1,3 @@
source 'https://rubygems.org'
-gem 'jekyll', '3.1.2'
+gem 'jekyll', '3.2.0'
gem 'jekyll-scholar' \ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index ea96b36..81a1250 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -8,22 +8,24 @@ GEM
citeproc-ruby (1.1.5)
citeproc (>= 1.0.4, < 2.0)
csl (~> 1.4)
- colorator (0.1)
+ colorator (1.1.0)
csl (1.4.5)
namae (~> 0.7)
csl-styles (1.0.1.7)
csl (~> 1.0)
ffi (1.9.14)
- jekyll (3.1.2)
- colorator (~> 0.1)
+ forwardable-extended (2.6.0)
+ jekyll (3.2.0)
+ colorator (~> 1.0)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 3.0)
mercenary (~> 0.3.3)
+ pathutil (~> 0.9)
rouge (~> 1.7)
safe_yaml (~> 1.0)
- jekyll-sass-converter (1.4.0)
+ jekyll-sass-converter (1.5.0)
sass (~> 3.4)
jekyll-scholar (5.8.5)
bibtex-ruby (~> 4.0, >= 4.0.13)
@@ -32,7 +34,7 @@ GEM
jekyll (~> 3.0)
jekyll-watch (1.5.0)
listen (~> 3.0, < 3.1)
- kramdown (1.12.0)
+ kramdown (1.13.1)
latex-decode (0.2.2)
unicode (~> 0.4)
liquid (3.0.6)
@@ -41,19 +43,21 @@ GEM
rb-inotify (~> 0.9, >= 0.9.7)
mercenary (0.3.6)
namae (0.11.0)
- rb-fsevent (0.9.7)
+ pathutil (0.14.0)
+ forwardable-extended (~> 2.6)
+ rb-fsevent (0.9.8)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
rouge (1.11.1)
safe_yaml (1.0.4)
- sass (3.4.22)
+ sass (3.4.23)
unicode (0.4.4.2)
PLATFORMS
ruby
DEPENDENCIES
- jekyll (= 3.1.2)
+ jekyll (= 3.2.0)
jekyll-scholar
BUNDLED WITH
diff --git a/_includes/head.html b/_includes/head.html
index 03f6f75..177e3ec 100644
--- a/_includes/head.html
+++ b/_includes/head.html
@@ -37,10 +37,11 @@
<link rel="stylesheet" href="{{ site.baseurl }}/resources/css/latex.css"/>
<link rel="stylesheet" href="{{ site.baseurl }}/resources/css/entypo.css" type="text/css" />
<link rel="stylesheet" href="{{ site.baseurl }}/resources/css/prettify.css" type="text/css" />
+ <!-- <link rel="stylesheet" href="{{ site.baseurl }}/resources/css/main.css" type="text/css" /> -->
<link rel="stylesheet" href="{{ site.baseurl }}/resources/css/blog.css" type="text/css" />
<!-- Custom javascript -->
- <script src="{{ site.baseurl }}/resources/js/main.js" type="text/javascript" ></script>
+ <script src="{{ site.baseurl }}/resources/js/main.js" type="text/javascript" ></script>
<!-- <link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}"> -->
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}">
diff --git a/_layouts/chapter.html b/_layouts/chapter.html
index 3380a52..bd8bcc0 100644
--- a/_layouts/chapter.html
+++ b/_layouts/chapter.html
@@ -3,6 +3,7 @@
{% include head.html %}
<body data-spy="scroll" data-target="#toc">
+ <!-- <div class="thin-top-bar"></div> -->
<div class="topbar">
<div class="logo-wrap">
<!-- <div class="circle-logo"></div> -->
@@ -24,8 +25,8 @@
{% assign minutes = content | number_of_words | divided_by:180 %}
<div class="category">{{ page.tag }}</div>
<h1 class="page-title">{{ page.title }}</h1>
+ <div class="author">By {{ page.by }}</div>
<div class="subtitle">{{ page.subtitle }}
- <div class="author">By {{ page.by }}</div>
{% if minutes <= 5 %}
<!-- do nothing -->
{% else %}
diff --git a/chapter/3/message-passing.md b/chapter/3/message-passing.md
index 5a67b7d..3a27a40 100644
--- a/chapter/3/message-passing.md
+++ b/chapter/3/message-passing.md
@@ -1,7 +1,9 @@
---
layout: page
title: "Message Passing and the Actor Model"
+tag: "message passing"
by: "Nathaniel Dempkowski"
+subtitle: "This is a description that will be the subtitle."
---
## Introduction
@@ -203,6 +205,7 @@ Cloud Haskell is an extension of Haskell which essentially implements an enhance
One of the largest improvements over Erlang is the introduction of typed channels for sending messages. These provide guarantees to the programmer about the types of messages their actors can handle, which is something Erlang lacks. In Erlang, all you have is dynamic pattern matching based on values patterns, and the hope that the wrong types of message don't get passed around your system. Cloud Haskell processes can also use multiple typed channels to pass messages between actors, rather than Erlang's single untyped channel. Haskell's monadic types make it possible for programmers to use a programming style, where they can ensure that pure and effective code are not mixed. This makes reasoning about where side-effects happen in your system easier. Cloud Haskell has shared memory within an actor process, which is useful for certain applications. This might sound like it could cause problems, but shared-memory structures are forbidden by the type system from being shared across actors. Finally, Cloud Haskell allows for the serialization of function closures, which means that higher-order functions can be distributed across actors. This means that as long as a function and its environment are serializable, they can be spun off as a remote computation and seamlessly continued elsewhere. These improvements over Erlang make Cloud Haskell a notable project in the space of process-based actors. Cloud Haskell is currently supported and also has developed the Cloud Haskell Platform, which aims to provide common functionality needed to build and manage a production actor system using Cloud Haskell.
+
## Communicating event-loops
The communicating event-loop model was introduced in the E language, {% cite Miller:2005:CSP:1986262.1986274 --file message-passing %} and is one that aims to change the level of granularity at which communication happens within an actor-based system. The previously described actor systems organize communication at the actor level, while the communicating event model puts communication between actors in the context of actions on objects within those actors. The overall messages still reference higher-level actors, but those messages refer to more granular actions within an actor's state.
diff --git a/resources/css/blog.css b/resources/css/blog.css
index 48fa0a3..6074e5a 100644
--- a/resources/css/blog.css
+++ b/resources/css/blog.css
@@ -51,8 +51,8 @@ figure.main-container {
a:link, a:visited {
text-decoration: none;
- color: #3498DB;
- font-weight: 600;
+ color: #4380ae;
+ /*font-weight: 600;*/
border-bottom: 2px solid rgba(189, 195, 199, 0.3);
-webkit-transition: color .1s ease-in;
-moz-transition: color .1s ease-in;
@@ -63,7 +63,7 @@ a:link, a:visited {
a:hover {
text-decoration: none;
- color: #E74C3C;
+ color: #572d4c;
-webkit-transition: color .2s ease-in;
-moz-transition: color .2s ease-in;
-ms-transition: color .2s ease-in;
@@ -145,6 +145,89 @@ ul > li {
margin-left: 24px;
}
+.author {
+ font-family: 'Montserrat', sans-serif;
+ text-transform: uppercase;
+ color: #000000;
+ /*color: #595959;*/
+ font-style: normal;
+ margin-bottom: 0.5em;
+}
+
+.book-title {
+ position: absolute;
+ top: 20px;
+ padding-left: 30px;
+}
+
+.prog-mod {
+ font-family: 'Alegreya Sans', sans-serif;
+ font-weight: 700;
+ font-style: italic;
+ font-size: 22px;
+ margin-bottom: -8px;
+ margin-left: -10px;
+ color: #595959;
+}
+
+.dist-comp {
+ font-family: 'Alegreya Sans', sans-serif;
+ text-transform: uppercase;
+ font-weight: 900;
+ font-style: normal;
+ font-size: 24px;
+}
+
+@font-face {
+ font-family: 'Consolas';
+ src: url('{{ site.baseurl }}/resources/glyphs/Consolas.eot?#iefix') format('embedded-opentype'), url('{{ site.baseurl }}/resources/glyphs/Consolas.woff') format('woff'), url('{{ site.baseurl }}/resources/glyphs/Consolas.ttf') format('truetype'), url('{{ site.baseurl }}/resources/glyphs/Consolas.svg#Consolas') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Consolas';
+ src: url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.eot?#iefix') format('embedded-opentype'), url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.woff') format('woff'), url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.ttf') format('truetype'), url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.svg#Consolas-Italic') format('svg');
+ font-weight: normal;
+ font-style: italic;
+}
+
+code {
+ color: #7599a9;
+ /*background: #F4F4F4;*/
+ /*border-radius: 3px;*/
+ /*padding: 2px;*/
+ /*border: 1px solid #DDDDDD;*/
+ /*margin: 0 3px 0 3px;*/
+ /*padding: 0 2px 0 2px;*/
+}
+
+.thin-top-bar {
+ width: 100%;
+ height: 10px;
+ /*background-color: #572d4c;*/
+ /*background-color: #48274b;*/
+ background-color: #b3c7cf;
+}
+
+.topbar {
+ position: relative;
+ background: #F3F3F3;
+ height: 70px;
+ width: 100%;
+}
+
+.logo-wrap {
+ width: 84%;
+ padding-left: 8%;
+ padding-right: 8%;
+}
+
+.logo {
+ margin-left: -16px;
+ margin-top: 16px;
+}
+
.jumbotron-blog {
padding-top: 30px;
padding-bottom: 60px;
@@ -351,7 +434,8 @@ nav[data-toggle='toc'] {
/* all links */
#toc .nav>li>a {
/*color: #999;*/
- color: #7B7263;
+ /*color: #7B7263;*/
+ color: #797979;
border-left: 2px solid transparent;
padding: 4px 20px;
font-size: 13px;
@@ -413,7 +497,8 @@ nav[data-toggle='toc'] {
.toc-header {
margin-left: 24px;
/*color: #8B8480;*/
- color: #7B7263;
+ /*color: #7B7263;*/
+ color: #797979;
font-style: italic;
}
@@ -638,12 +723,6 @@ nav[data-toggle='toc'] {
background-image: linear-gradient(145deg, #243446, #4d4d4d);
}
-.thin-top-bar {
- width: 100%;
- height: 10px;
- background-color: #572d4c;
-}
-
.footer-strip {
width: 100%;
height: 50px;
@@ -942,7 +1021,7 @@ nav[data-toggle='toc'] {
text-transform: uppercase;
font-weight: 600;
font-size: 14px;
- color: #B4B84C;
+ color: #7499aa;
}
.page-title {
@@ -966,7 +1045,8 @@ nav[data-toggle='toc'] {
.subtitle {
font-family: "BS", sans-serif;
font-size: 16px;
- color: #7b7264;
+ color: #797979;
+ /*color: #7b7264;*/
font-style: italic;
}
diff --git a/resources/css/main.css b/resources/css/main.css
index ce3775a..8dfc101 100755
--- a/resources/css/main.css
+++ b/resources/css/main.css
@@ -142,12 +142,6 @@ ul > li {
margin-left: 24px;
}
-.author {
- font-family: 'Montserrat', sans-serif;
- text-transform: uppercase;
- color: #b3b3b3;
-}
-
.jumbotron {
padding: 20px;
background-color: #34495E;
@@ -163,6 +157,72 @@ ul > li {
color: rgba(86, 103, 110, 0.2);
}
+.book-title {
+ position: absolute;
+ top: 20px;
+ padding-left: 30px;
+}
+
+.prog-mod {
+ font-family: 'Alegreya Sans', sans-serif;
+ font-weight: 700;
+ font-style: italic;
+ font-size: 22px;
+ margin-bottom: -8px;
+ margin-left: -10px;
+ color: #595959;
+}
+
+.dist-comp {
+ font-family: 'Alegreya Sans', sans-serif;
+ text-transform: uppercase;
+ font-weight: 900;
+ font-style: normal;
+ font-size: 24px;
+}
+
+@font-face {
+ font-family: 'Consolas';
+ src: url('{{ site.baseurl }}/resources/glyphs/Consolas.eot?#iefix') format('embedded-opentype'), url('{{ site.baseurl }}/resources/glyphs/Consolas.woff') format('woff'), url('{{ site.baseurl }}/resources/glyphs/Consolas.ttf') format('truetype'), url('{{ site.baseurl }}/resources/glyphs/Consolas.svg#Consolas') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Consolas';
+ src: url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.eot?#iefix') format('embedded-opentype'), url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.woff') format('woff'), url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.ttf') format('truetype'), url('{{ site.baseurl }}/resources/glyphs/Consolas-Italic.svg#Consolas-Italic') format('svg');
+ font-weight: normal;
+ font-style: italic;
+}
+
+code {
+ color: #7599a9;
+ /*background: #F4F4F4;*/
+ /*border-radius: 3px;*/
+ /*padding: 2px;*/
+ /*border: 1px solid #DDDDDD;*/
+ /*margin: 0 3px 0 3px;*/
+ /*padding: 0 2px 0 2px;*/
+}
+
+.topbar {
+ position: relative;
+ background: #F3F3F3;
+ height: 70px;
+ width: 100%;
+}
+
+.logo-wrap {
+ width: 84%;
+ padding-left: 8%;
+ padding-right: 8%;
+}
+
+.logo {
+ margin-left: -16px;
+ margin-top: 16px;
+}
+
.blog-header > a {
border: none;
}