]> git.piffa.net Git - aerei_site/commitdiff
ifirst
authoreaman <eaman@andreamanni.com>
Thu, 16 Feb 2017 18:50:47 +0000 (19:50 +0100)
committereaman <eaman@andreamanni.com>
Thu, 16 Feb 2017 18:50:47 +0000 (19:50 +0100)
46 files changed:
.gitignore [new file with mode: 0644]
.gitmodules [new file with mode: 0644]
.jekyll-metadata [new file with mode: 0644]
Gemfile [new file with mode: 0644]
README.md [new file with mode: 0755]
_config.yml [new file with mode: 0644]
_includes/HEADER.html [new file with mode: 0644]
_includes/head.html [new file with mode: 0644]
_includes/page-footer.html [new file with mode: 0644]
_includes/page-header.html [new file with mode: 0644]
_layouts/default.html [new file with mode: 0644]
_layouts/page.html [new file with mode: 0644]
_layouts/post.html [new file with mode: 0644]
_plugins/jekyll-rst [new submodule]
_posts/2017-01-13-benvenuti.markdown [new file with mode: 0644]
_posts/aerei/2017-02-14-aereo-antonino.markdown [new file with mode: 0644]
_posts/aerei/2017-02-14-aereo-cirso.markdown [new file with mode: 0644]
_posts/aerei/2017-02-15-zeta.markdown [new file with mode: 0644]
_posts/aerei/repo [new submodule]
_posts/esempi/2017-02-08-elettronica.markdown [new file with mode: 0644]
_posts/esempi/2017-02-09-arduino.markdown [new file with mode: 0644]
_posts/esempi/2017-02-09-libreria.markdown [new file with mode: 0644]
_posts/esempi/2017-02-10-base.markdown [new file with mode: 0644]
_posts/esempi/2017-02-11-throttle_pulse_in.markdown [new file with mode: 0644]
_posts/esempi/2017-02-12-throttle-stadi.markdown [new file with mode: 0644]
_posts/esempi/2017-02-13-throttle-fsm.markdown [new file with mode: 0644]
_posts/esempi/2017-02-16-accensione-fsm.markdown [new file with mode: 0644]
_posts/esempi/repo [new submodule]
_posts/repo [new submodule]
_sass/_base.scss [new file with mode: 0644]
_sass/_layout.scss [new file with mode: 0644]
_sass/_normalize.scss [new file with mode: 0644]
_sass/_syntax-highlighting.scss [new file with mode: 0644]
css/cayman.css [new file with mode: 0755]
css/cayman.css_grad [new file with mode: 0755]
css/main.scss [new file with mode: 0644]
css/normalize.css [new file with mode: 0755]
index.html [new file with mode: 0644]
jekyll-cayman-theme.gemspec [new file with mode: 0644]
js/html5shiv.js [new file with mode: 0644]
js/respond.js [new file with mode: 0644]
night.jpg [new file with mode: 0644]
night2.jpg [new file with mode: 0644]
pages/about.rst [new file with mode: 0644]
pages/setup.markdown [new file with mode: 0644]
repo [new submodule]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..771fc10
--- /dev/null
@@ -0,0 +1,5 @@
+_site
+.bundle
+.sass-cache
+Gemfile.lock
+.DS_Store
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..0a95d9b
--- /dev/null
@@ -0,0 +1,3 @@
+[submodule "_plugins/jekyll-rst"]
+       path = _plugins/jekyll-rst
+       url = https://github.com/xdissent/jekyll-rst.git
diff --git a/.jekyll-metadata b/.jekyll-metadata
new file mode 100644 (file)
index 0000000..7884d65
Binary files /dev/null and b/.jekyll-metadata differ
diff --git a/Gemfile b/Gemfile
new file mode 100644 (file)
index 0000000..260cdca
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,8 @@
+source 'https://rubygems.org'
+gemspec
+
+gem 'jekyll'
+gem 'jekyll-paginate'
+gem 'kramdown'
+gem 'pygments.rb'
+gem 'RbST'
diff --git a/README.md b/README.md
new file mode 100755 (executable)
index 0000000..b562943
--- /dev/null
+++ b/README.md
@@ -0,0 +1,69 @@
+# Jekyll Cayman theme
+
+This is a [Jekyll][1] theme for [@jasonlong][2]'s [Cayman theme][4] on [GitHub Pages][3].
+
+Cayman is a clean, responsive theme for [GitHub Pages](https://pages.github.com). This theme is available as an option if you use the [Automatic Page Generator](https://help.github.com/articles/creating-pages-with-the-automatic-generator/) or you can copy the template and styles to use on your own.
+
+You can preview the theme at http://jasonlong.github.io/cayman-theme or with real content at http://jasonlong.github.io/geo_pattern.
+
+![](http://cl.ly/image/1T3r3d18311V/content)
+
+# How to use it?
+
+Download the theme @ http://github.com/pietromenna/jekyll-cayman-theme/archive/master.zip
+
+Unzip it and use it as a regular jekyll folder.
+
+```
+$ unzip jekyll-cayman-theme-master.zip
+```
+
+Get inside the newly extracted folder
+```
+$ cd jekyll-cayman-theme-master
+```
+
+Get the required gems
+```
+$ bundle install
+```
+
+Use it!
+
+```
+$ jekyll serve
+```
+
+For more details read about [Jekyll][1] on its web page.
+
+# Setup
+
+Some important configuration can be done in the file `_config.yml`. Please, check the Setup section in that file.
+
+
+## baseurl
+
+`baseurl` parameter is required in the case the site doesn't sit on the root of the domain. For example: http://pietromenna.github.io/jekyll-cayman-theme
+
+In the case above the baseurl should be set to "/jekyll-cayman-theme".
+
+In the case the site sits in the root, you can leave `baseurl` as empty "".
+
+# Contributing
+
+Bug reports and pull requests are welcome on GitHub at https://github.com/pietromenn/jekyll-cayman-theme.
+
+# Development
+
+To set up your environment to develop this theme, run `bundle install`.
+
+You theme is setup just like a normal Jelyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
+
+# License
+
+This work is licensed under a [Creative Commons Attribution 4.0 International](http://creativecommons.org/licenses/by/4.0/) license.
+
+[1]: http://jekyllrb.com/
+[2]: https://github.com/jasonlong
+[3]: http://pages.github.com/
+[4]: https://github.com/jasonlong/cayman-theme
\ No newline at end of file
diff --git a/_config.yml b/_config.yml
new file mode 100644 (file)
index 0000000..8c9f594
--- /dev/null
@@ -0,0 +1,17 @@
+# Setup
+title:        Luci Arduino
+tagline:      Luci per aerei RC con Arduino
+baseurl:      ""
+paginate:     1
+
+# About/contact
+author:
+  name:       Andrea Manni
+  url:        https://piffa.net
+
+# Gems
+gems:
+  - jekyll-paginate
+
+#Others
+markdown: kramdown
diff --git a/_includes/HEADER.html b/_includes/HEADER.html
new file mode 100644 (file)
index 0000000..9cf491e
--- /dev/null
@@ -0,0 +1 @@
+<h1>Aerei.piffa.net</h1>
diff --git a/_includes/head.html b/_includes/head.html
new file mode 100644 (file)
index 0000000..c05d71f
--- /dev/null
@@ -0,0 +1,9 @@
+<head>
+  <meta charset="UTF-8">
+  <title>{{ site.title }}</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <meta name="theme-color" content="#157878">
+  <link rel="stylesheet" href="{{ site.baseurl }}/css/normalize.css">
+  <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
+  <link rel="stylesheet" href="{{ site.baseurl }}/css/cayman.css">
+</head>
\ No newline at end of file
diff --git a/_includes/page-footer.html b/_includes/page-footer.html
new file mode 100644 (file)
index 0000000..e6d8344
--- /dev/null
@@ -0,0 +1,4 @@
+<footer class="site-footer">
+    <span class="site-footer-owner"><a href="{{ site.url }}">{{ site.title }}</a> E' attualmente <i>under construction</i>, e' gestito da <a href="{{ site.author.url }}">{{ site.author.name }}</a>.</span>
+  <span class="site-footer-credits">Questo progetto e' accessibile tramite<a href="http://git.andreamanni.com/"> Git</a>.</span>
+</footer>
diff --git a/_includes/page-header.html b/_includes/page-header.html
new file mode 100644 (file)
index 0000000..81acf80
--- /dev/null
@@ -0,0 +1,7 @@
+<section class="page-header">
+  <h1 class="project-name">{{ site.title }}</h1>
+  <h2 class="project-tagline">{{ site.tagline }}</h2>
+  <a href="https://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=tgz" class="btn">Download .tar.gz</a>
+  <a href="/repo" class="btn">Naviga</a>
+  <a href="http://git.andreamanni.com/" class="btn">Scarica con Git</a>
+</section>
diff --git a/_layouts/default.html b/_layouts/default.html
new file mode 100644 (file)
index 0000000..8a21bd7
--- /dev/null
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en-us">
+  
+  {% include head.html %}
+
+  <body>
+    {% include page-header.html %}
+
+    <section class="main-content">
+      
+      {{ content }}
+
+      {% include page-footer.html %}
+
+    </section>
+
+  </body>
+</html>
diff --git a/_layouts/page.html b/_layouts/page.html
new file mode 100644 (file)
index 0000000..84f03f7
--- /dev/null
@@ -0,0 +1,5 @@
+---
+layout: default
+---
+
+{{ content }}
\ No newline at end of file
diff --git a/_layouts/post.html b/_layouts/post.html
new file mode 100644 (file)
index 0000000..5b12153
--- /dev/null
@@ -0,0 +1,7 @@
+---
+layout: default
+---
+<h2>{{ page.title }}</h2>
+<p class="meta">{{ page.date | date_to_string }}</p>
+
+{{ content }}
\ No newline at end of file
diff --git a/_plugins/jekyll-rst b/_plugins/jekyll-rst
new file mode 160000 (submodule)
index 0000000..c6a78ef
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c6a78ef0b5ebbd33589c8c625b3736b7de211d5b
diff --git a/_posts/2017-01-13-benvenuti.markdown b/_posts/2017-01-13-benvenuti.markdown
new file mode 100644 (file)
index 0000000..709b661
--- /dev/null
@@ -0,0 +1,15 @@
+---
+layout: default
+title:  "Benvenuti"
+date:   2017-01-03 17:50:00
+categories: news
+---
+
+# Welcome 
+
+Benvenuti all'archivio del codice per la gestione delle luci per aerei RC con Arduino, in questo sito verranno tenuti gli esempi e le librerie utilizzate da Andrea per i vari aerei.
+
+## Warning
+Attenzione, il sito **e acnhe il codice** sono attualmente *under costruction*!
+
+Quando riscontrate qualche errore segnalatelo ad Andrea (il codice degli aerei potrebbe non essere testato!), se avete richieste o suggerimenti scrivete ad andrea via email oppure ancora meglio usate il [forum di discussione](https://forum.piffa.net/viewforum.php?f=4&sid=94f626deb3143fc39dd165d661309f1b) .
diff --git a/_posts/aerei/2017-02-14-aereo-antonino.markdown b/_posts/aerei/2017-02-14-aereo-antonino.markdown
new file mode 100644 (file)
index 0000000..51b5a2b
--- /dev/null
@@ -0,0 +1,11 @@
+---
+layout: post
+title:  "Aereo di Antonino"
+date:   2017-02-13 06:14:16 +0100
+categories: aerei
+---
+L'aereo di Antonino, vedi [esempio dell'uso del throttle](/esempi/2017/02/15/throttle-stadi.html).
+{% highlight ruby %}
+{% include_relative /repo/aerei/antonino/bugatti/bugatti.ino %}
+{% endhighlight %}
+
diff --git a/_posts/aerei/2017-02-14-aereo-cirso.markdown b/_posts/aerei/2017-02-14-aereo-cirso.markdown
new file mode 100644 (file)
index 0000000..04639b4
--- /dev/null
@@ -0,0 +1,24 @@
+---
+layout: post
+title:  "Cirso: On/Off"
+date:   2017-02-13 08:14:16 +0100
+categories: aerei
+---
+L'aereo di Cirso: in questo aereo il comportamento delle luci e' e predeterminato (non dipende da nessun *inupt*) ma e' stato abilitato un interruttore della radio per accendere e spegnere le luci.
+
+L'interruttore a due stati e' gestito da un interrupt.
+
+In un primo esempio questo e' un semplice ON/OFF impostato con un *ciclo if*, nel secondo invece viene implementata una FSM (macchina a stati) per gestire anche le transizioni tra i vari stati.
+
+## ON / OFF
+{% highlight ruby %}
+{% include_relative /repo/aerei/cirso/trigger_on/trigger_on.ino %}
+{% endhighlight %}
+
+## FSM
+
+C'e' una transizione tra gli stati On <-> Off: una dissolvenza in PWM a salire e a scendere quando si accende e si spegne le luci.
+{% highlight ruby %}
+{% include_relative /repo/aerei/cirso/trigger_transition/trigger_transition.ino %}
+{% endhighlight %}
+
diff --git a/_posts/aerei/2017-02-15-zeta.markdown b/_posts/aerei/2017-02-15-zeta.markdown
new file mode 100644 (file)
index 0000000..b1d49d5
--- /dev/null
@@ -0,0 +1,20 @@
+---
+layout: post
+title:  "Zeta"
+date:   2017-01-13 06:14:16 +0100
+categories: aerei
+---
+La *Wing Wing z84 (Zeta)* di Andrea, il primo aereo usato per il volo notturno.
+
+Della Zeta sono disponibili [vari prototipi](/repo/aerei/zeta/).
+
+La particolarita' di Zeta e' che invece che usare un integrato ULN2803a per pilotare i LED buona parte delle striscie sono attivate da un transistor incastonato nel telaio dell'aereo in prossimita' delle strisce.
+
+Per gli altri transistor e' stato fatto in piccolo circuito su una scheda preforata per metterne in array 4, questo sistema puo' essere seguito se non si hanno a disposizione gli integrati darlighton.
+
+TODO: aggiungere foto
+
+{% highlight ruby %}
+{% include_relative /repo/aerei/zeta/zeta/zeta.ino%}
+{% endhighlight %}
+
diff --git a/_posts/aerei/repo b/_posts/aerei/repo
new file mode 160000 (submodule)
index 0000000..1bd7fb2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1bd7fb2b43bdccb600e5983f6fc8bcdedf4f01e7
diff --git a/_posts/esempi/2017-02-08-elettronica.markdown b/_posts/esempi/2017-02-08-elettronica.markdown
new file mode 100644 (file)
index 0000000..6ad5c5c
--- /dev/null
@@ -0,0 +1,15 @@
+---
+layout: post
+title:  "Elettronica"
+date:   2017-02-09 06:14:16 +0100
+categories: esempi 
+---
+
+TODO
+Link al kit per le luci: https://piffa.net/kit/7/luci-aeromodellismo
+
+Inserire schemi sull'uso dell'integrato:
+* https://lab.piffa.net/schemi/uln2_darlinghton_arduino_bb.png
+* https://lab.piffa.net/schemi/uln2_darlinghton_arduino_schem.png
+* Aggiungere schemi per interrupts.
+* foto array di transistor su PCB
diff --git a/_posts/esempi/2017-02-09-arduino.markdown b/_posts/esempi/2017-02-09-arduino.markdown
new file mode 100644 (file)
index 0000000..de353b9
--- /dev/null
@@ -0,0 +1,26 @@
+---
+layout: post
+title:  "Arduino"
+date:   2017-02-08 06:14:16 +0100
+categories: esempi 
+---
+
+TODO
+
+
+# Risorse utili per utilizzare Arduino:
+
+* Per poter programmare le schede Arduino: [Arduino IDE](https://www.arduino.cc/en/Main/Software#)
+* [Testi consigliati](https://lab.piffa.net/testi.html)
+* [Risorse online](http://wiki.piffa.net/index.php/Guide)
+* [Forum Aeromodellismo - elettronica](http://www.baronerosso.it/forum/circuiti-elettronici/)
+
+## Hardware / Schede
+
+* Arduino [Pro Mini](http://wiki.piffa.net/index.php/Arduino_Mini_Pro)
+* Arduino [Nano](http://wiki.piffa.net/index.php?title=Arduino_Nano&action=edit&redlink=1)
+
+## Siti web di Andrea
+* [Lab Arduino](https://lab.piffa.net/)
+* [Wiki](http://wiki.piffa.net/)
+* [Forum](https://forum.piffa.net/)
diff --git a/_posts/esempi/2017-02-09-libreria.markdown b/_posts/esempi/2017-02-09-libreria.markdown
new file mode 100644 (file)
index 0000000..42b863a
--- /dev/null
@@ -0,0 +1,19 @@
+---
+layout: post
+title:  "Utilizzo della libreria common"
+date:   2017-02-13 08:14:16 +0100
+categories: esempi 
+---
+TODO
+# Introduzione
+
+* blocking
+* OOP
+
+# Esempi sull'utilizzo della libreria
+
+* [Esempi](/repo/libraries/common/examples/)
+
+# Installazione e aggiornamento
+
+* [Readme](http://aerei.piffa.net/repo/libraries/README.html)
diff --git a/_posts/esempi/2017-02-10-base.markdown b/_posts/esempi/2017-02-10-base.markdown
new file mode 100644 (file)
index 0000000..ac8e614
--- /dev/null
@@ -0,0 +1,16 @@
+---
+layout: post
+title:  "Prototipo Base"
+date:   2017-02-13 06:14:16 +0100
+categories: esempi 
+---
+Esempio base, lampeggi e un fade preimpostati non determinati da input o sensori.
+
+*   2 LED / Strisce laterali che lampeggiano alternativamente
+*   1 LED / Striscia sotto in FADE
+
+
+{% highlight cpp %}
+{% include_relative /repo/esempi/base/base.ino %}
+{% endhighlight %}
+
diff --git a/_posts/esempi/2017-02-11-throttle_pulse_in.markdown b/_posts/esempi/2017-02-11-throttle_pulse_in.markdown
new file mode 100644 (file)
index 0000000..4d175ec
--- /dev/null
@@ -0,0 +1,23 @@
+---
+layout: post
+title:  "Trottle con pulse-in"
+date:   2017-02-15 06:14:16 +0100
+categories: esempi 
+---
+I  lampeggi variano di frequenza in base al throttle, il PWM inferiore e' proporzionale al throttle con correzione di luminosita'. Per rilevare il valore del throttle viene usata la funzione pulseIn: questa' e' bloking durante la transizione HI -> LOW quindi per circa 1-2ms ogni ~20ms (considerando una frequenza di aggiornamento di 50Hz) il loop sara' bloccato.
+
+Il vantaggio e' che pulseIn puo' essere usata su qualunque PIN.
+
+Negli esempi successivi vedremo come impostare un numero definito di letture per secondo (ad esempio una lettura ogni 200ms potrebbe essere piu' che sufficiente per i nostri scopi) in modo da limitare il blocco. Poi useremo gli interrupts per leggere i canali della ricevente.
+
+
+
+*   2 LED / Strisce laterali che lampeggiano alternativamente
+*   1 LED / Striscia sotto in FADE
+
+
+{% highlight cpp %}
+{% include_relative /repo/esempi/base_th/base_th.ino %}
+
+{% endhighlight %}
+
diff --git a/_posts/esempi/2017-02-12-throttle-stadi.markdown b/_posts/esempi/2017-02-12-throttle-stadi.markdown
new file mode 100644 (file)
index 0000000..4ae3575
--- /dev/null
@@ -0,0 +1,37 @@
+---
+layout: post
+title:  "Trottle a 3 stadi"
+date:   2017-02-15 06:14:16 +0100
+categories: esempi 
+---
+Tramite la lettura del valore del *throttle* vengono indicati 3 stati: 
+* IDLE: gas praticamente a zero
+* Max: a tutto gas!
+* Medio: tutti i valori intermedi
+
+Outputs:
+*   2 LED / Strisce laterali che lampeggiano alternativamente
+*   1 LED / Striscia sotto in FADE
+
+
+### IDLE
+Nello stato IDLE vengono impostati dei FADE a salire e scendere *rpwm.UD(2000)* della durata di 2 secondi. 
+
+Il LED inferiore va' in dissolvenza dal max verso il minimo con correzione di luminosita'.
+
+### Max
+Nello stato Max i lampeggi sono a caso con un intervallo da 20-240ms. 
+
+Il valore del *PWM sotto* e' impostato a caso.
+
+### Normal
+In tutti i valori intermedi i lampeggi sono proporzionali al throttle: da un minimo di 200ms a un massimo di ~1200ms in proporzione al throttle.
+
+Anche la luminosita' del *PWM sotto* e' proporzionale al throttle con correzione di luminosita' (*lSet*).
+
+
+{% highlight cpp %}
+{% include_relative /repo/esempi/base_th_3stati/base_th_3stati.ino %}
+
+{% endhighlight %}
+
diff --git a/_posts/esempi/2017-02-13-throttle-fsm.markdown b/_posts/esempi/2017-02-13-throttle-fsm.markdown
new file mode 100644 (file)
index 0000000..dffda49
--- /dev/null
@@ -0,0 +1,29 @@
+---
+layout: post
+title:  "Trottle con FSM a dispatcher esterno"
+date:   2017-02-15 08:14:16 +0100
+categories: esempi 
+---
+Output:
+*   2 LED / Strisce laterali che lampeggiano alternativamente
+*   1 LED / Striscia sotto in FADE
+
+Input:
+* Throttle
+
+Tramite la lettura del valore del *throttle* vengono indicati 3 stati: 
+* IDLE: gas praticamente a zero
+* Max: a tutto gas!
+* Medio: tutti i valori intermedi
+
+Questo sketch si comporta esattamente come *base_th_3stati*, in questa versione pero' invece che dei cicli *if* viene usato un ciclo *switch* per implementare una macchina a stati. A ogni esecuzione del *loop* viene letto il valore del throttle e in base a questo viene deciso in quale stato si verra' a trovare il ciclo *switch*.
+
+Gli stati disponibili sono dichiarati in una variabile di tipo *enum*. 
+
+Nell'esempio successivo *ailerons_state_rgb.ino* verra' implementata una FMS con transizioni tra gli stati per la gestione di una luce RGB associata al canale degli alettoni.
+
+{% highlight cpp %}
+{% include_relative /repo/esempi/ailerons_state_rgb/ailerons_state_rgb.ino %}
+
+{% endhighlight %}
+
diff --git a/_posts/esempi/2017-02-16-accensione-fsm.markdown b/_posts/esempi/2017-02-16-accensione-fsm.markdown
new file mode 100644 (file)
index 0000000..7478506
--- /dev/null
@@ -0,0 +1,24 @@
+---
+layout: post
+title:  "Accensione e spegnimento"
+date:   2017-02-16 05:14:16 +0100
+categories: esempi
+---
+In questo aereo il comportamento delle luci e' e predeterminato (non dipende da nessun *inupt*) ma e' stato abilitato un interruttore della radio per accendere e spegnere le luci.
+
+L'interruttore a due stati e' gestito da un interrupt.
+
+In un primo esempio questo e' un semplice ON/OFF impostato con un *ciclo if*, nel secondo invece viene implementata una FSM (macchina a stati) per gestire anche le transizioni tra i due stati.
+
+## ON / OFF
+{% highlight ruby %}
+{% include_relative /repo/aerei/cirso/trigger_on/trigger_on.ino %}
+{% endhighlight %}
+
+## FSM
+
+C'e' una transizione tra gli stati On <-> Off: una dissolvenza in PWM a salire e a scendere quando si accende e si spegne le luci.
+{% highlight ruby %}
+{% include_relative /repo/aerei/cirso/trigger_transition/trigger_transition.ino %}
+{% endhighlight %}
+
diff --git a/_posts/esempi/repo b/_posts/esempi/repo
new file mode 160000 (submodule)
index 0000000..1bd7fb2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1bd7fb2b43bdccb600e5983f6fc8bcdedf4f01e7
diff --git a/_posts/repo b/_posts/repo
new file mode 160000 (submodule)
index 0000000..1bd7fb2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1bd7fb2b43bdccb600e5983f6fc8bcdedf4f01e7
diff --git a/_sass/_base.scss b/_sass/_base.scss
new file mode 100644 (file)
index 0000000..0883c3c
--- /dev/null
@@ -0,0 +1,206 @@
+/**
+ * Reset some basic elements
+ */
+body, h1, h2, h3, h4, h5, h6,
+p, blockquote, pre, hr,
+dl, dd, ol, ul, figure {
+    margin: 0;
+    padding: 0;
+}
+
+
+
+/**
+ * Basic styling
+ */
+body {
+    font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
+    color: $text-color;
+    background-color: $background-color;
+    -webkit-text-size-adjust: 100%;
+    -webkit-font-feature-settings: "kern" 1;
+    -moz-font-feature-settings: "kern" 1;
+    -o-font-feature-settings: "kern" 1;
+    font-feature-settings: "kern" 1;
+    font-kerning: normal;
+}
+
+
+
+/**
+ * Set `margin-bottom` to maintain vertical rhythm
+ */
+h1, h2, h3, h4, h5, h6,
+p, blockquote, pre,
+ul, ol, dl, figure,
+%vertical-rhythm {
+    margin-bottom: $spacing-unit / 2;
+}
+
+
+
+/**
+ * Images
+ */
+img {
+    max-width: 100%;
+    vertical-align: middle;
+}
+
+
+
+/**
+ * Figures
+ */
+figure > img {
+    display: block;
+}
+
+figcaption {
+    font-size: $small-font-size;
+}
+
+
+
+/**
+ * Lists
+ */
+ul, ol {
+    margin-left: $spacing-unit;
+}
+
+li {
+    > ul,
+    > ol {
+         margin-bottom: 0;
+    }
+}
+
+
+
+/**
+ * Headings
+ */
+h1, h2, h3, h4, h5, h6 {
+    font-weight: $base-font-weight;
+}
+
+
+
+/**
+ * Links
+ */
+a {
+    color: $brand-color;
+    text-decoration: none;
+
+    &:visited {
+        color: darken($brand-color, 15%);
+    }
+
+    &:hover {
+        color: $text-color;
+        text-decoration: underline;
+    }
+}
+
+
+
+/**
+ * Blockquotes
+ */
+blockquote {
+    color: $grey-color;
+    border-left: 4px solid $grey-color-light;
+    padding-left: $spacing-unit / 2;
+    font-size: 18px;
+    letter-spacing: -1px;
+    font-style: italic;
+
+    > :last-child {
+        margin-bottom: 0;
+    }
+}
+
+
+
+/**
+ * Code formatting
+ */
+pre,
+code {
+    font-size: 15px;
+    border: 1px solid $grey-color-light;
+    border-radius: 3px;
+    background-color: #eef;
+}
+
+code {
+    padding: 1px 5px;
+}
+
+pre {
+    padding: 8px 12px;
+    overflow-x: auto;
+
+    > code {
+        border: 0;
+        padding-right: 0;
+        padding-left: 0;
+    }
+}
+
+
+
+/**
+ * Wrapper
+ */
+.wrapper {
+    max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
+    max-width:         calc(#{$content-width} - (#{$spacing-unit} * 2));
+    margin-right: auto;
+    margin-left: auto;
+    padding-right: $spacing-unit;
+    padding-left: $spacing-unit;
+    @extend %clearfix;
+
+    @include media-query($on-laptop) {
+        max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));
+        max-width:         calc(#{$content-width} - (#{$spacing-unit}));
+        padding-right: $spacing-unit / 2;
+        padding-left: $spacing-unit / 2;
+    }
+}
+
+
+
+/**
+ * Clearfix
+ */
+%clearfix {
+
+    &:after {
+        content: "";
+        display: table;
+        clear: both;
+    }
+}
+
+
+
+/**
+ * Icons
+ */
+.icon {
+
+    > svg {
+        display: inline-block;
+        width: 16px;
+        height: 16px;
+        vertical-align: middle;
+
+        path {
+            fill: $grey-color;
+        }
+    }
+}
diff --git a/_sass/_layout.scss b/_sass/_layout.scss
new file mode 100644 (file)
index 0000000..9cbfdde
--- /dev/null
@@ -0,0 +1,242 @@
+/**
+ * Site header
+ */
+.site-header {
+    border-top: 5px solid $grey-color-dark;
+    border-bottom: 1px solid $grey-color-light;
+    min-height: 56px;
+
+    // Positioning context for the mobile navigation icon
+    position: relative;
+}
+
+.site-title {
+    font-size: 26px;
+    font-weight: 300;
+    line-height: 56px;
+    letter-spacing: -1px;
+    margin-bottom: 0;
+    float: left;
+
+    &,
+    &:visited {
+        color: $grey-color-dark;
+    }
+}
+
+.site-nav {
+    float: right;
+    line-height: 56px;
+
+    .menu-icon {
+        display: none;
+    }
+
+    .page-link {
+        color: $text-color;
+        line-height: $base-line-height;
+
+        // Gaps between nav items, but not on the last one
+        &:not(:last-child) {
+            margin-right: 20px;
+        }
+    }
+
+    @include media-query($on-palm) {
+        position: absolute;
+        top: 9px;
+        right: $spacing-unit / 2;
+        background-color: $background-color;
+        border: 1px solid $grey-color-light;
+        border-radius: 5px;
+        text-align: right;
+
+        .menu-icon {
+            display: block;
+            float: right;
+            width: 36px;
+            height: 26px;
+            line-height: 0;
+            padding-top: 10px;
+            text-align: center;
+
+            > svg {
+                width: 18px;
+                height: 15px;
+
+                path {
+                    fill: $grey-color-dark;
+                }
+            }
+        }
+
+        .trigger {
+            clear: both;
+            display: none;
+        }
+
+        &:hover .trigger {
+            display: block;
+            padding-bottom: 5px;
+        }
+
+        .page-link {
+            display: block;
+            padding: 5px 10px;
+
+            &:not(:last-child) {
+                margin-right: 0;
+            }
+            margin-left: 20px;
+        }
+    }
+}
+
+
+
+/**
+ * Site footer
+ */
+.site-footer {
+    border-top: 1px solid $grey-color-light;
+    padding: $spacing-unit 0;
+}
+
+.footer-heading {
+    font-size: 18px;
+    margin-bottom: $spacing-unit / 2;
+}
+
+.contact-list,
+.social-media-list {
+    list-style: none;
+    margin-left: 0;
+}
+
+.footer-col-wrapper {
+    font-size: 15px;
+    color: $grey-color;
+    margin-left: -$spacing-unit / 2;
+    @extend %clearfix;
+}
+
+.footer-col {
+    float: left;
+    margin-bottom: $spacing-unit / 2;
+    padding-left: $spacing-unit / 2;
+}
+
+.footer-col-1 {
+    width: -webkit-calc(35% - (#{$spacing-unit} / 2));
+    width:         calc(35% - (#{$spacing-unit} / 2));
+}
+
+.footer-col-2 {
+    width: -webkit-calc(20% - (#{$spacing-unit} / 2));
+    width:         calc(20% - (#{$spacing-unit} / 2));
+}
+
+.footer-col-3 {
+    width: -webkit-calc(45% - (#{$spacing-unit} / 2));
+    width:         calc(45% - (#{$spacing-unit} / 2));
+}
+
+@include media-query($on-laptop) {
+    .footer-col-1,
+    .footer-col-2 {
+        width: -webkit-calc(50% - (#{$spacing-unit} / 2));
+        width:         calc(50% - (#{$spacing-unit} / 2));
+    }
+
+    .footer-col-3 {
+        width: -webkit-calc(100% - (#{$spacing-unit} / 2));
+        width:         calc(100% - (#{$spacing-unit} / 2));
+    }
+}
+
+@include media-query($on-palm) {
+    .footer-col {
+        float: none;
+        width: -webkit-calc(100% - (#{$spacing-unit} / 2));
+        width:         calc(100% - (#{$spacing-unit} / 2));
+    }
+}
+
+
+
+/**
+ * Page content
+ */
+.page-content {
+    padding: $spacing-unit 0;
+}
+
+.page-heading {
+    font-size: 20px;
+}
+
+.post-list {
+    margin-left: 0;
+    list-style: none;
+
+    > li {
+        margin-bottom: $spacing-unit;
+    }
+}
+
+.post-meta {
+    font-size: $small-font-size;
+    color: $grey-color;
+}
+
+.post-link {
+    display: block;
+    font-size: 24px;
+}
+
+
+
+/**
+ * Posts
+ */
+.post-header {
+    margin-bottom: $spacing-unit;
+}
+
+.post-title {
+    font-size: 42px;
+    letter-spacing: -1px;
+    line-height: 1;
+
+    @include media-query($on-laptop) {
+        font-size: 36px;
+    }
+}
+
+.post-content {
+    margin-bottom: $spacing-unit;
+
+    h2 {
+        font-size: 32px;
+
+        @include media-query($on-laptop) {
+            font-size: 28px;
+        }
+    }
+
+    h3 {
+        font-size: 26px;
+
+        @include media-query($on-laptop) {
+            font-size: 22px;
+        }
+    }
+
+    h4 {
+        font-size: 20px;
+
+        @include media-query($on-laptop) {
+            font-size: 18px;
+        }
+    }
+}
diff --git a/_sass/_normalize.scss b/_sass/_normalize.scss
new file mode 100644 (file)
index 0000000..08f8950
--- /dev/null
@@ -0,0 +1,425 @@
+/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+  font-family: sans-serif; /* 1 */
+  -ms-text-size-adjust: 100%; /* 2 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+  margin: 0;
+}
+
+/* HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+  display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+  display: inline-block; /* 1 */
+  vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+  display: none;
+}
+
+/* Links
+   ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+  background: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+  outline: 0;
+}
+
+/* Text-level semantics
+   ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+  font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+  font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+  background: #ff0;
+  color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+  font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sup {
+  top: -0.5em;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+/* Embedded content
+   ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+  border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+/* Grouping content
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+  margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+  overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+
+/* Forms
+   ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ *    Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  color: inherit; /* 1 */
+  font: inherit; /* 2 */
+  margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+  overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+  text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button; /* 2 */
+  cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+  line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+  -webkit-appearance: textfield; /* 1 */
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box; /* 2 */
+  box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+  border: 0; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+  overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+  font-weight: bold;
+}
+
+/* Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+td,
+th {
+  padding: 0;
+}
diff --git a/_sass/_syntax-highlighting.scss b/_sass/_syntax-highlighting.scss
new file mode 100644 (file)
index 0000000..8fac597
--- /dev/null
@@ -0,0 +1,71 @@
+/**
+ * Syntax highlighting styles
+ */
+.highlight {
+    background: #fff;
+    @extend %vertical-rhythm;
+
+    .highlighter-rouge & {
+      background: #eef;
+    }
+
+    .c     { color: #998; font-style: italic } // Comment
+    .err   { color: #a61717; background-color: #e3d2d2 } // Error
+    .k     { font-weight: bold } // Keyword
+    .o     { font-weight: bold } // Operator
+    .cm    { color: #998; font-style: italic } // Comment.Multiline
+    .cp    { color: #999; font-weight: bold } // Comment.Preproc
+    .c1    { color: #998; font-style: italic } // Comment.Single
+    .cs    { color: #999; font-weight: bold; font-style: italic } // Comment.Special
+    .gd    { color: #000; background-color: #fdd } // Generic.Deleted
+    .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
+    .ge    { font-style: italic } // Generic.Emph
+    .gr    { color: #a00 } // Generic.Error
+    .gh    { color: #999 } // Generic.Heading
+    .gi    { color: #000; background-color: #dfd } // Generic.Inserted
+    .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
+    .go    { color: #888 } // Generic.Output
+    .gp    { color: #555 } // Generic.Prompt
+    .gs    { font-weight: bold } // Generic.Strong
+    .gu    { color: #aaa } // Generic.Subheading
+    .gt    { color: #a00 } // Generic.Traceback
+    .kc    { font-weight: bold } // Keyword.Constant
+    .kd    { font-weight: bold } // Keyword.Declaration
+    .kp    { font-weight: bold } // Keyword.Pseudo
+    .kr    { font-weight: bold } // Keyword.Reserved
+    .kt    { color: #458; font-weight: bold } // Keyword.Type
+    .m     { color: #099 } // Literal.Number
+    .s     { color: #d14 } // Literal.String
+    .na    { color: #008080 } // Name.Attribute
+    .nb    { color: #0086B3 } // Name.Builtin
+    .nc    { color: #458; font-weight: bold } // Name.Class
+    .no    { color: #008080 } // Name.Constant
+    .ni    { color: #800080 } // Name.Entity
+    .ne    { color: #900; font-weight: bold } // Name.Exception
+    .nf    { color: #900; font-weight: bold } // Name.Function
+    .nn    { color: #555 } // Name.Namespace
+    .nt    { color: #000080 } // Name.Tag
+    .nv    { color: #008080 } // Name.Variable
+    .ow    { font-weight: bold } // Operator.Word
+    .w     { color: #bbb } // Text.Whitespace
+    .mf    { color: #099 } // Literal.Number.Float
+    .mh    { color: #099 } // Literal.Number.Hex
+    .mi    { color: #099 } // Literal.Number.Integer
+    .mo    { color: #099 } // Literal.Number.Oct
+    .sb    { color: #d14 } // Literal.String.Backtick
+    .sc    { color: #d14 } // Literal.String.Char
+    .sd    { color: #d14 } // Literal.String.Doc
+    .s2    { color: #d14 } // Literal.String.Double
+    .se    { color: #d14 } // Literal.String.Escape
+    .sh    { color: #d14 } // Literal.String.Heredoc
+    .si    { color: #d14 } // Literal.String.Interpol
+    .sx    { color: #d14 } // Literal.String.Other
+    .sr    { color: #009926 } // Literal.String.Regex
+    .s1    { color: #d14 } // Literal.String.Single
+    .ss    { color: #990073 } // Literal.String.Symbol
+    .bp    { color: #999 } // Name.Builtin.Pseudo
+    .vc    { color: #008080 } // Name.Variable.Class
+    .vg    { color: #008080 } // Name.Variable.Global
+    .vi    { color: #008080 } // Name.Variable.Instance
+    .il    { color: #099 } // Literal.Number.Integer.Long
+}
diff --git a/css/cayman.css b/css/cayman.css
new file mode 100755 (executable)
index 0000000..ec9b541
--- /dev/null
@@ -0,0 +1,192 @@
+.highlight table td { padding: 5px; }
+
+.highlight table pre { margin: 0; }
+
+.highlight .cm { color: #999988; font-style: italic; }
+
+.highlight .cp { color: #999999; font-weight: bold; }
+
+.highlight .c1 { color: #999988; font-style: italic; }
+
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic; }
+
+.highlight .c, .highlight .cd { color: #999988; font-style: italic; }
+
+.highlight .err { color: #a61717; background-color: #e3d2d2; }
+
+.highlight .gd { color: #000000; background-color: #ffdddd; }
+
+.highlight .ge { color: #000000; font-style: italic; }
+
+.highlight .gr { color: #aa0000; }
+
+.highlight .gh { color: #999999; }
+
+.highlight .gi { color: #000000; background-color: #ddffdd; }
+
+.highlight .go { color: #888888; }
+
+.highlight .gp { color: #555555; }
+
+.highlight .gs { font-weight: bold; }
+
+.highlight .gu { color: #aaaaaa; }
+
+.highlight .gt { color: #aa0000; }
+
+.highlight .kc { color: #000000; font-weight: bold; }
+
+.highlight .kd { color: #000000; font-weight: bold; }
+
+.highlight .kn { color: #000000; font-weight: bold; }
+
+.highlight .kp { color: #000000; font-weight: bold; }
+
+.highlight .kr { color: #000000; font-weight: bold; }
+
+.highlight .kt { color: #445588; font-weight: bold; }
+
+.highlight .k, .highlight .kv { color: #000000; font-weight: bold; }
+
+.highlight .mf { color: #009999; }
+
+.highlight .mh { color: #009999; }
+
+.highlight .il { color: #009999; }
+
+.highlight .mi { color: #009999; }
+
+.highlight .mo { color: #009999; }
+
+.highlight .m, .highlight .mb, .highlight .mx { color: #009999; }
+
+.highlight .sb { color: #d14; }
+
+.highlight .sc { color: #d14; }
+
+.highlight .sd { color: #d14; }
+
+.highlight .s2 { color: #d14; }
+
+.highlight .se { color: #d14; }
+
+.highlight .sh { color: #d14; }
+
+.highlight .si { color: #d14; }
+
+.highlight .sx { color: #d14; }
+
+.highlight .sr { color: #009926; }
+
+.highlight .s1 { color: #d14; }
+
+.highlight .ss { color: #990073; }
+
+.highlight .s { color: #d14; }
+
+.highlight .na { color: #008080; }
+
+.highlight .bp { color: #999999; }
+
+.highlight .nb { color: #0086B3; }
+
+.highlight .nc { color: #445588; font-weight: bold; }
+
+.highlight .no { color: #008080; }
+
+.highlight .nd { color: #3c5d5d; font-weight: bold; }
+
+.highlight .ni { color: #800080; }
+
+.highlight .ne { color: #990000; font-weight: bold; }
+
+.highlight .nf { color: #990000; font-weight: bold; }
+
+.highlight .nl { color: #990000; font-weight: bold; }
+
+.highlight .nn { color: #555555; }
+
+.highlight .nt { color: #000080; }
+
+.highlight .vc { color: #008080; }
+
+.highlight .vg { color: #008080; }
+
+.highlight .vi { color: #008080; }
+
+.highlight .nv { color: #008080; }
+
+.highlight .ow { color: #000000; font-weight: bold; }
+
+.highlight .o { color: #000000; font-weight: bold; }
+
+.highlight .w { color: #bbbbbb; }
+
+.highlight { background-color: #f8f8f8; }
+
+* { box-sizing: border-box; }
+
+body { padding: 0; margin: 0; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.5; color: #606c71; }
+
+a { color: #1e6bb8; text-decoration: none; }
+a:hover { text-decoration: underline; }
+
+.btn { display: inline-block; margin-bottom: 1rem; color: rgba(255, 255, 255, 0.7); background-color: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.2); border-style: solid; border-width: 1px; border-radius: 0.3rem; transition: color 0.2s, background-color 0.2s, border-color 0.2s; }
+.btn:hover { color: rgba(255, 255, 255, 0.8); text-decoration: none; background-color: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.3); }
+.btn + .btn { margin-left: 1rem; }
+@media screen and (min-width: 64em) { .btn { padding: 0.75rem 1rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .btn { padding: 0.6rem 0.9rem; font-size: 0.9rem; } }
+@media screen and (max-width: 42em) { .btn { display: block; width: 100%; padding: 0.75rem; font-size: 0.9rem; }
+  .btn + .btn { margin-top: 1rem; margin-left: 0; } }
+
+.page-header { color: #fff; text-align: center; background-color: #000000; background-image: url('/night2.jpg')}
+@media screen and (min-width: 64em) { .page-header { padding: 5rem 6rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .page-header { padding: 3rem 4rem; } }
+@media screen and (max-width: 42em) { .page-header { padding: 2rem 1rem; } }
+
+.project-name { margin-top: 0; margin-bottom: 0.1rem; }
+@media screen and (min-width: 64em) { .project-name { font-size: 3.25rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .project-name { font-size: 2.25rem; } }
+@media screen and (max-width: 42em) { .project-name { font-size: 1.75rem; } }
+
+.project-tagline { margin-bottom: 2rem; font-weight: normal; opacity: 0.7; }
+@media screen and (min-width: 64em) { .project-tagline { font-size: 1.25rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .project-tagline { font-size: 1.15rem; } }
+@media screen and (max-width: 42em) { .project-tagline { font-size: 1rem; } }
+
+.main-content { word-wrap: break-word; }
+.main-content :first-child { margin-top: 0; }
+@media screen and (min-width: 64em) { .main-content { max-width: 64rem; padding: 2rem 6rem; margin: 0 auto; font-size: 1.1rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .main-content { padding: 2rem 4rem; font-size: 1.1rem; } }
+@media screen and (max-width: 42em) { .main-content { padding: 2rem 1rem; font-size: 1rem; } }
+.main-content img { max-width: 100%; }
+.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { margin-top: 2rem; margin-bottom: 1rem; font-weight: normal; color: #159957; }
+.main-content p { margin-bottom: 1em; }
+.main-content code { padding: 2px 4px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 0.9rem; color: #567482; background-color: #f3f6fa; border-radius: 0.3rem; }
+.main-content pre { padding: 0.8rem; margin-top: 0; margin-bottom: 1rem; font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace; color: #567482; word-wrap: normal; background-color: #f3f6fa; border: solid 1px #dce6f0; border-radius: 0.3rem; }
+.main-content pre > code { padding: 0; margin: 0; font-size: 0.9rem; color: #567482; word-break: normal; white-space: pre; background: transparent; border: 0; }
+.main-content .highlight { margin-bottom: 1rem; }
+.main-content .highlight pre { margin-bottom: 0; word-break: normal; }
+.main-content .highlight pre, .main-content pre { padding: 0.8rem; overflow: auto; font-size: 0.9rem; line-height: 1.45; border-radius: 0.3rem; -webkit-overflow-scrolling: touch; }
+.main-content pre code, .main-content pre tt { display: inline; max-width: initial; padding: 0; margin: 0; overflow: initial; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0; }
+.main-content pre code:before, .main-content pre code:after, .main-content pre tt:before, .main-content pre tt:after { content: normal; }
+.main-content ul, .main-content ol { margin-top: 0; }
+.main-content blockquote { padding: 0 1rem; margin-left: 0; color: #819198; border-left: 0.3rem solid #dce6f0; }
+.main-content blockquote > :first-child { margin-top: 0; }
+.main-content blockquote > :last-child { margin-bottom: 0; }
+.main-content table { display: block; width: 100%; overflow: auto; word-break: normal; word-break: keep-all; -webkit-overflow-scrolling: touch; }
+.main-content table th { font-weight: bold; }
+.main-content table th, .main-content table td { padding: 0.5rem 1rem; border: 1px solid #e9ebec; }
+.main-content dl { padding: 0; }
+.main-content dl dt { padding: 0; margin-top: 1rem; font-size: 1rem; font-weight: bold; }
+.main-content dl dd { padding: 0; margin-bottom: 1rem; }
+.main-content hr { height: 2px; padding: 0; margin: 1rem 0; background-color: #eff0f1; border: 0; }
+
+.site-footer { padding-top: 2rem; margin-top: 2rem; border-top: solid 1px #eff0f1; }
+@media screen and (min-width: 64em) { .site-footer { font-size: 1rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .site-footer { font-size: 1rem; } }
+@media screen and (max-width: 42em) { .site-footer { font-size: 0.9rem; } }
+
+.site-footer-owner { display: block; font-weight: bold; }
+
+.site-footer-credits { color: #819198; }
diff --git a/css/cayman.css_grad b/css/cayman.css_grad
new file mode 100755 (executable)
index 0000000..36351b1
--- /dev/null
@@ -0,0 +1,192 @@
+.highlight table td { padding: 5px; }
+
+.highlight table pre { margin: 0; }
+
+.highlight .cm { color: #999988; font-style: italic; }
+
+.highlight .cp { color: #999999; font-weight: bold; }
+
+.highlight .c1 { color: #999988; font-style: italic; }
+
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic; }
+
+.highlight .c, .highlight .cd { color: #999988; font-style: italic; }
+
+.highlight .err { color: #a61717; background-color: #e3d2d2; }
+
+.highlight .gd { color: #000000; background-color: #ffdddd; }
+
+.highlight .ge { color: #000000; font-style: italic; }
+
+.highlight .gr { color: #aa0000; }
+
+.highlight .gh { color: #999999; }
+
+.highlight .gi { color: #000000; background-color: #ddffdd; }
+
+.highlight .go { color: #888888; }
+
+.highlight .gp { color: #555555; }
+
+.highlight .gs { font-weight: bold; }
+
+.highlight .gu { color: #aaaaaa; }
+
+.highlight .gt { color: #aa0000; }
+
+.highlight .kc { color: #000000; font-weight: bold; }
+
+.highlight .kd { color: #000000; font-weight: bold; }
+
+.highlight .kn { color: #000000; font-weight: bold; }
+
+.highlight .kp { color: #000000; font-weight: bold; }
+
+.highlight .kr { color: #000000; font-weight: bold; }
+
+.highlight .kt { color: #445588; font-weight: bold; }
+
+.highlight .k, .highlight .kv { color: #000000; font-weight: bold; }
+
+.highlight .mf { color: #009999; }
+
+.highlight .mh { color: #009999; }
+
+.highlight .il { color: #009999; }
+
+.highlight .mi { color: #009999; }
+
+.highlight .mo { color: #009999; }
+
+.highlight .m, .highlight .mb, .highlight .mx { color: #009999; }
+
+.highlight .sb { color: #d14; }
+
+.highlight .sc { color: #d14; }
+
+.highlight .sd { color: #d14; }
+
+.highlight .s2 { color: #d14; }
+
+.highlight .se { color: #d14; }
+
+.highlight .sh { color: #d14; }
+
+.highlight .si { color: #d14; }
+
+.highlight .sx { color: #d14; }
+
+.highlight .sr { color: #009926; }
+
+.highlight .s1 { color: #d14; }
+
+.highlight .ss { color: #990073; }
+
+.highlight .s { color: #d14; }
+
+.highlight .na { color: #008080; }
+
+.highlight .bp { color: #999999; }
+
+.highlight .nb { color: #0086B3; }
+
+.highlight .nc { color: #445588; font-weight: bold; }
+
+.highlight .no { color: #008080; }
+
+.highlight .nd { color: #3c5d5d; font-weight: bold; }
+
+.highlight .ni { color: #800080; }
+
+.highlight .ne { color: #990000; font-weight: bold; }
+
+.highlight .nf { color: #990000; font-weight: bold; }
+
+.highlight .nl { color: #990000; font-weight: bold; }
+
+.highlight .nn { color: #555555; }
+
+.highlight .nt { color: #000080; }
+
+.highlight .vc { color: #008080; }
+
+.highlight .vg { color: #008080; }
+
+.highlight .vi { color: #008080; }
+
+.highlight .nv { color: #008080; }
+
+.highlight .ow { color: #000000; font-weight: bold; }
+
+.highlight .o { color: #000000; font-weight: bold; }
+
+.highlight .w { color: #bbbbbb; }
+
+.highlight { background-color: #f8f8f8; }
+
+* { box-sizing: border-box; }
+
+body { padding: 0; margin: 0; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.5; color: #606c71; }
+
+a { color: #1e6bb8; text-decoration: none; }
+a:hover { text-decoration: underline; }
+
+.btn { display: inline-block; margin-bottom: 1rem; color: rgba(255, 255, 255, 0.7); background-color: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.2); border-style: solid; border-width: 1px; border-radius: 0.3rem; transition: color 0.2s, background-color 0.2s, border-color 0.2s; }
+.btn:hover { color: rgba(255, 255, 255, 0.8); text-decoration: none; background-color: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.3); }
+.btn + .btn { margin-left: 1rem; }
+@media screen and (min-width: 64em) { .btn { padding: 0.75rem 1rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .btn { padding: 0.6rem 0.9rem; font-size: 0.9rem; } }
+@media screen and (max-width: 42em) { .btn { display: block; width: 100%; padding: 0.75rem; font-size: 0.9rem; }
+  .btn + .btn { margin-top: 1rem; margin-left: 0; } }
+
+.page-header { color: #fff; text-align: center; background-color: #159957; background-image: radial-gradient(farthest-side, #0e2e64, #000036   ); }
+@media screen and (min-width: 64em) { .page-header { padding: 5rem 6rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .page-header { padding: 3rem 4rem; } }
+@media screen and (max-width: 42em) { .page-header { padding: 2rem 1rem; } }
+
+.project-name { margin-top: 0; margin-bottom: 0.1rem; }
+@media screen and (min-width: 64em) { .project-name { font-size: 3.25rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .project-name { font-size: 2.25rem; } }
+@media screen and (max-width: 42em) { .project-name { font-size: 1.75rem; } }
+
+.project-tagline { margin-bottom: 2rem; font-weight: normal; opacity: 0.7; }
+@media screen and (min-width: 64em) { .project-tagline { font-size: 1.25rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .project-tagline { font-size: 1.15rem; } }
+@media screen and (max-width: 42em) { .project-tagline { font-size: 1rem; } }
+
+.main-content { word-wrap: break-word; }
+.main-content :first-child { margin-top: 0; }
+@media screen and (min-width: 64em) { .main-content { max-width: 64rem; padding: 2rem 6rem; margin: 0 auto; font-size: 1.1rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .main-content { padding: 2rem 4rem; font-size: 1.1rem; } }
+@media screen and (max-width: 42em) { .main-content { padding: 2rem 1rem; font-size: 1rem; } }
+.main-content img { max-width: 100%; }
+.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { margin-top: 2rem; margin-bottom: 1rem; font-weight: normal; color: #159957; }
+.main-content p { margin-bottom: 1em; }
+.main-content code { padding: 2px 4px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 0.9rem; color: #567482; background-color: #f3f6fa; border-radius: 0.3rem; }
+.main-content pre { padding: 0.8rem; margin-top: 0; margin-bottom: 1rem; font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace; color: #567482; word-wrap: normal; background-color: #f3f6fa; border: solid 1px #dce6f0; border-radius: 0.3rem; }
+.main-content pre > code { padding: 0; margin: 0; font-size: 0.9rem; color: #567482; word-break: normal; white-space: pre; background: transparent; border: 0; }
+.main-content .highlight { margin-bottom: 1rem; }
+.main-content .highlight pre { margin-bottom: 0; word-break: normal; }
+.main-content .highlight pre, .main-content pre { padding: 0.8rem; overflow: auto; font-size: 0.9rem; line-height: 1.45; border-radius: 0.3rem; -webkit-overflow-scrolling: touch; }
+.main-content pre code, .main-content pre tt { display: inline; max-width: initial; padding: 0; margin: 0; overflow: initial; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0; }
+.main-content pre code:before, .main-content pre code:after, .main-content pre tt:before, .main-content pre tt:after { content: normal; }
+.main-content ul, .main-content ol { margin-top: 0; }
+.main-content blockquote { padding: 0 1rem; margin-left: 0; color: #819198; border-left: 0.3rem solid #dce6f0; }
+.main-content blockquote > :first-child { margin-top: 0; }
+.main-content blockquote > :last-child { margin-bottom: 0; }
+.main-content table { display: block; width: 100%; overflow: auto; word-break: normal; word-break: keep-all; -webkit-overflow-scrolling: touch; }
+.main-content table th { font-weight: bold; }
+.main-content table th, .main-content table td { padding: 0.5rem 1rem; border: 1px solid #e9ebec; }
+.main-content dl { padding: 0; }
+.main-content dl dt { padding: 0; margin-top: 1rem; font-size: 1rem; font-weight: bold; }
+.main-content dl dd { padding: 0; margin-bottom: 1rem; }
+.main-content hr { height: 2px; padding: 0; margin: 1rem 0; background-color: #eff0f1; border: 0; }
+
+.site-footer { padding-top: 2rem; margin-top: 2rem; border-top: solid 1px #eff0f1; }
+@media screen and (min-width: 64em) { .site-footer { font-size: 1rem; } }
+@media screen and (min-width: 42em) and (max-width: 64em) { .site-footer { font-size: 1rem; } }
+@media screen and (max-width: 42em) { .site-footer { font-size: 0.9rem; } }
+
+.site-footer-owner { display: block; font-weight: bold; }
+
+.site-footer-credits { color: #819198; }
diff --git a/css/main.scss b/css/main.scss
new file mode 100644 (file)
index 0000000..f2e566e
--- /dev/null
@@ -0,0 +1,53 @@
+---
+# Only the main Sass file needs front matter (the dashes are enough)
+---
+@charset "utf-8";
+
+
+
+// Our variables
+$base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+$base-font-size:   16px;
+$base-font-weight: 400;
+$small-font-size:  $base-font-size * 0.875;
+$base-line-height: 1.5;
+
+$spacing-unit:     30px;
+
+$text-color:       #111;
+$background-color: #fdfdfd;
+$brand-color:      #2a7ae2;
+
+$grey-color:       #828282;
+$grey-color-light: lighten($grey-color, 40%);
+$grey-color-dark:  darken($grey-color, 25%);
+
+// Width of the content area
+$content-width:    800px;
+
+$on-palm:          600px;
+$on-laptop:        800px;
+
+
+
+// Use media queries like this:
+// @include media-query($on-palm) {
+//     .wrapper {
+//         padding-right: $spacing-unit / 2;
+//         padding-left: $spacing-unit / 2;
+//     }
+// }
+@mixin media-query($device) {
+    @media screen and (max-width: $device) {
+        @content;
+    }
+}
+
+
+
+// Import partials from `sass_dir` (defaults to `_sass`)
+@import
+        "base",
+        "layout",
+        "syntax-highlighting"
+;
diff --git a/css/normalize.css b/css/normalize.css
new file mode 100755 (executable)
index 0000000..30366a6
--- /dev/null
@@ -0,0 +1,424 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+  font-family: sans-serif; /* 1 */
+  -ms-text-size-adjust: 100%; /* 2 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+  margin: 0;
+}
+
+/* HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+  display: inline-block; /* 1 */
+  vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+  display: none;
+}
+
+/* Links
+   ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+  background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+  outline: 0;
+}
+
+/* Text-level semantics
+   ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+  font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+  font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+  background: #ff0;
+  color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+  font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sup {
+  top: -0.5em;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+/* Embedded content
+   ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+  border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+/* Grouping content
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+  margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+  box-sizing: content-box;
+  height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+  overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+
+/* Forms
+   ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ *    Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  color: inherit; /* 1 */
+  font: inherit; /* 2 */
+  margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+  overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+  text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button; /* 2 */
+  cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+  line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+  -webkit-appearance: textfield; /* 1 */ /* 2 */
+  box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+  border: 0; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+  overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+  font-weight: bold;
+}
+
+/* Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+td,
+th {
+  padding: 0;
+}
diff --git a/index.html b/index.html
new file mode 100644 (file)
index 0000000..8e817a7
--- /dev/null
@@ -0,0 +1,43 @@
+---
+layout: default
+---
+<h1>Luci per Aerei con Arduino</h1>
+<p>Sketches e librerie per la gestione delle luci di aeromodelli RC con microcontroller compatibili con <i>*arduino</i></p>
+<p>Per installare e utilizzare vedi la <a href="/setup">pagina setup</a>.</p>
+<div class="home">
+
+
+<h2>aerei</h2>
+  <p>Codice degli aerei gia' pronti.</p>
+<ol>
+{% for post in site.categories.aerei %}
+<li><a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a> </li>
+{% endfor %}
+</ol>
+<h2>Esempi</h2>
+  <p>Esempi di programmzione: leggere i canali della radio, macchine a stati, paradigmi di prograzione.</p>
+<ol>
+{% for post in site.categories.esempi reversed  %}
+<li><a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a></li>
+{% endfor %}
+</ol>
+<h2>Snippets</h2>
+  <p>Frammenti di codice di uso comune: interrupts, pulse in.</p>
+<ol>
+{% for post in site.categories.snippets reversed  %}
+<li><a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a></li>
+{% endfor %}
+</ol>
+
+  <h1 class="page-heading">Posts</h1>
+  <p>Elenco degli ultimi articoli pubblicati.</p>
+  <ul class="post-list">
+    {% for post in site.posts %}
+      <li>
+          <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
+
+      </li>
+    {% endfor %}
+  </ul>
+
+</div>
diff --git a/jekyll-cayman-theme.gemspec b/jekyll-cayman-theme.gemspec
new file mode 100644 (file)
index 0000000..6bb58c6
--- /dev/null
@@ -0,0 +1,17 @@
+# coding: utf-8
+
+Gem::Specification.new do |spec|
+  spec.name          = "jekyll-cayman-theme"
+  spec.version       = "0.1.0"
+  spec.authors       = ["Pietro F. Menna"]
+  spec.email         = ["pietromenna@yahoo.com"]
+
+  spec.summary       = %q{A Jekyll theme for the responsive theme for GitHub Pages http://jasonlong.github.io/cayman-theme/ }
+  spec.homepage      = "https://github.com/pietromenna/jekyll-cayman-theme"
+  spec.license       = "MIT"
+
+  spec.files         = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(_layouts|_includes|_sass|LICENSE|README)/i}) }
+
+  spec.add_development_dependency "jekyll", "~> 3.2"
+  spec.add_development_dependency "rake", "~> 10.0"
+end
diff --git a/js/html5shiv.js b/js/html5shiv.js
new file mode 100644 (file)
index 0000000..77dace4
--- /dev/null
@@ -0,0 +1,322 @@
+/**
+* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+;(function(window, document) {
+/*jshint evil:true */
+  /** version */
+  var version = '3.7.2';
+
+  /** Preset options */
+  var options = window.html5 || {};
+
+  /** Used to skip problem elements */
+  var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+  /** Not all elements can be cloned in IE **/
+  var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+  /** Detect whether the browser supports default html5 styles */
+  var supportsHtml5Styles;
+
+  /** Name of the expando, to work with multiple documents or to re-shiv one document */
+  var expando = '_html5shiv';
+
+  /** The id for the the documents expando */
+  var expanID = 0;
+
+  /** Cached data for each document */
+  var expandoData = {};
+
+  /** Detect whether the browser supports unknown elements */
+  var supportsUnknownElements;
+
+  (function() {
+    try {
+        var a = document.createElement('a');
+        a.innerHTML = '<xyz></xyz>';
+        //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+        supportsHtml5Styles = ('hidden' in a);
+
+        supportsUnknownElements = a.childNodes.length == 1 || (function() {
+          // assign a false positive if unable to shiv
+          (document.createElement)('a');
+          var frag = document.createDocumentFragment();
+          return (
+            typeof frag.cloneNode == 'undefined' ||
+            typeof frag.createDocumentFragment == 'undefined' ||
+            typeof frag.createElement == 'undefined'
+          );
+        }());
+    } catch(e) {
+      // assign a false positive if detection fails => unable to shiv
+      supportsHtml5Styles = true;
+      supportsUnknownElements = true;
+    }
+
+  }());
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Creates a style sheet with the given CSS text and adds it to the document.
+   * @private
+   * @param {Document} ownerDocument The document.
+   * @param {String} cssText The CSS text.
+   * @returns {StyleSheet} The style element.
+   */
+  function addStyleSheet(ownerDocument, cssText) {
+    var p = ownerDocument.createElement('p'),
+        parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+    p.innerHTML = 'x<style>' + cssText + '</style>';
+    return parent.insertBefore(p.lastChild, parent.firstChild);
+  }
+
+  /**
+   * Returns the value of `html5.elements` as an array.
+   * @private
+   * @returns {Array} An array of shived element node names.
+   */
+  function getElements() {
+    var elements = html5.elements;
+    return typeof elements == 'string' ? elements.split(' ') : elements;
+  }
+
+  /**
+   * Extends the built-in list of html5 elements
+   * @memberOf html5
+   * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
+   * @param {Document} ownerDocument The context document.
+   */
+  function addElements(newElements, ownerDocument) {
+    var elements = html5.elements;
+    if(typeof elements != 'string'){
+      elements = elements.join(' ');
+    }
+    if(typeof newElements != 'string'){
+      newElements = newElements.join(' ');
+    }
+    html5.elements = elements +' '+ newElements;
+    shivDocument(ownerDocument);
+  }
+
+   /**
+   * Returns the data associated to the given document
+   * @private
+   * @param {Document} ownerDocument The document.
+   * @returns {Object} An object of data.
+   */
+  function getExpandoData(ownerDocument) {
+    var data = expandoData[ownerDocument[expando]];
+    if (!data) {
+        data = {};
+        expanID++;
+        ownerDocument[expando] = expanID;
+        expandoData[expanID] = data;
+    }
+    return data;
+  }
+
+  /**
+   * returns a shived element for the given nodeName and document
+   * @memberOf html5
+   * @param {String} nodeName name of the element
+   * @param {Document} ownerDocument The context document.
+   * @returns {Object} The shived element.
+   */
+  function createElement(nodeName, ownerDocument, data){
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    if(supportsUnknownElements){
+        return ownerDocument.createElement(nodeName);
+    }
+    if (!data) {
+        data = getExpandoData(ownerDocument);
+    }
+    var node;
+
+    if (data.cache[nodeName]) {
+        node = data.cache[nodeName].cloneNode();
+    } else if (saveClones.test(nodeName)) {
+        node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+    } else {
+        node = data.createElem(nodeName);
+    }
+
+    // Avoid adding some elements to fragments in IE < 9 because
+    // * Attributes like `name` or `type` cannot be set/changed once an element
+    //   is inserted into a document/fragment
+    // * Link elements with `src` attributes that are inaccessible, as with
+    //   a 403 response, will cause the tab/window to crash
+    // * Script elements appended to fragments will execute when their `src`
+    //   or `text` property is set
+    return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
+  }
+
+  /**
+   * returns a shived DocumentFragment for the given document
+   * @memberOf html5
+   * @param {Document} ownerDocument The context document.
+   * @returns {Object} The shived DocumentFragment.
+   */
+  function createDocumentFragment(ownerDocument, data){
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    if(supportsUnknownElements){
+        return ownerDocument.createDocumentFragment();
+    }
+    data = data || getExpandoData(ownerDocument);
+    var clone = data.frag.cloneNode(),
+        i = 0,
+        elems = getElements(),
+        l = elems.length;
+    for(;i<l;i++){
+        clone.createElement(elems[i]);
+    }
+    return clone;
+  }
+
+  /**
+   * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+   * @private
+   * @param {Document|DocumentFragment} ownerDocument The document.
+   * @param {Object} data of the document.
+   */
+  function shivMethods(ownerDocument, data) {
+    if (!data.cache) {
+        data.cache = {};
+        data.createElem = ownerDocument.createElement;
+        data.createFrag = ownerDocument.createDocumentFragment;
+        data.frag = data.createFrag();
+    }
+
+
+    ownerDocument.createElement = function(nodeName) {
+      //abort shiv
+      if (!html5.shivMethods) {
+          return data.createElem(nodeName);
+      }
+      return createElement(nodeName, ownerDocument, data);
+    };
+
+    ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+      'var n=f.cloneNode(),c=n.createElement;' +
+      'h.shivMethods&&(' +
+        // unroll the `createElement` calls
+        getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
+          data.createElem(nodeName);
+          data.frag.createElement(nodeName);
+          return 'c("' + nodeName + '")';
+        }) +
+      ');return n}'
+    )(html5, data.frag);
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Shivs the given document.
+   * @memberOf html5
+   * @param {Document} ownerDocument The document to shiv.
+   * @returns {Document} The shived document.
+   */
+  function shivDocument(ownerDocument) {
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    var data = getExpandoData(ownerDocument);
+
+    if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+      data.hasCSS = !!addStyleSheet(ownerDocument,
+        // corrects block display not defined in IE6/7/8/9
+        'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
+        // adds styling not present in IE6/7/8/9
+        'mark{background:#FF0;color:#000}' +
+        // hides non-rendered elements
+        'template{display:none}'
+      );
+    }
+    if (!supportsUnknownElements) {
+      shivMethods(ownerDocument, data);
+    }
+    return ownerDocument;
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * The `html5` object is exposed so that more elements can be shived and
+   * existing shiving can be detected on iframes.
+   * @type Object
+   * @example
+   *
+   * // options can be changed before the script is included
+   * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+   */
+  var html5 = {
+
+    /**
+     * An array or space separated string of node names of the elements to shiv.
+     * @memberOf html5
+     * @type Array|String
+     */
+    'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
+
+    /**
+     * current version of html5shiv
+     */
+    'version': version,
+
+    /**
+     * A flag to indicate that the HTML5 style sheet should be inserted.
+     * @memberOf html5
+     * @type Boolean
+     */
+    'shivCSS': (options.shivCSS !== false),
+
+    /**
+     * Is equal to true if a browser supports creating unknown/HTML5 elements
+     * @memberOf html5
+     * @type boolean
+     */
+    'supportsUnknownElements': supportsUnknownElements,
+
+    /**
+     * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+     * methods should be overwritten.
+     * @memberOf html5
+     * @type Boolean
+     */
+    'shivMethods': (options.shivMethods !== false),
+
+    /**
+     * A string to describe the type of `html5` object ("default" or "default print").
+     * @memberOf html5
+     * @type String
+     */
+    'type': 'default',
+
+    // shivs the document according to the specified `html5` object options
+    'shivDocument': shivDocument,
+
+    //creates a shived element
+    createElement: createElement,
+
+    //creates a shived documentFragment
+    createDocumentFragment: createDocumentFragment,
+
+    //extends list of elements
+    addElements: addElements
+  };
+
+  /*--------------------------------------------------------------------------*/
+
+  // expose html5
+  window.html5 = html5;
+
+  // shiv the document
+  shivDocument(document);
+
+}(this, document));
diff --git a/js/respond.js b/js/respond.js
new file mode 100644 (file)
index 0000000..58883e4
--- /dev/null
@@ -0,0 +1,353 @@
+/* Respond.js: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs  */
+(function( w ){
+
+       "use strict";
+
+       //exposed namespace
+       var respond = {};
+       w.respond = respond;
+
+       //define update even in native-mq-supporting browsers, to avoid errors
+       respond.update = function(){};
+
+       //define ajax obj
+       var requestQueue = [],
+               xmlHttp = (function() {
+                       var xmlhttpmethod = false;
+                       try {
+                               xmlhttpmethod = new w.XMLHttpRequest();
+                       }
+                       catch( e ){
+                               xmlhttpmethod = new w.ActiveXObject( "Microsoft.XMLHTTP" );
+                       }
+                       return function(){
+                               return xmlhttpmethod;
+                       };
+               })(),
+
+               //tweaked Ajax functions from Quirksmode
+               ajax = function( url, callback ) {
+                       var req = xmlHttp();
+                       if (!req){
+                               return;
+                       }
+                       req.open( "GET", url, true );
+                       req.onreadystatechange = function () {
+                               if ( req.readyState !== 4 || req.status !== 200 && req.status !== 304 ){
+                                       return;
+                               }
+                               callback( req.responseText );
+                       };
+                       if ( req.readyState === 4 ){
+                               return;
+                       }
+                       req.send( null );
+               },
+               isUnsupportedMediaQuery = function( query ) {
+                       return query.replace( respond.regex.minmaxwh, '' ).match( respond.regex.other );
+               };
+
+       //expose for testing
+       respond.ajax = ajax;
+       respond.queue = requestQueue;
+       respond.unsupportedmq = isUnsupportedMediaQuery;
+       respond.regex = {
+               media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
+               keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
+               comments: /\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,
+               urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
+               findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
+               only: /(only\s+)?([a-zA-Z]+)\s?/,
+               minw: /\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
+               maxw: /\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
+               minmaxwh: /\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,
+               other: /\([^\)]*\)/g
+       };
+
+       //expose media query support flag for external use
+       respond.mediaQueriesSupported = w.matchMedia && w.matchMedia( "only all" ) !== null && w.matchMedia( "only all" ).matches;
+
+       //if media queries are supported, exit here
+       if( respond.mediaQueriesSupported ){
+               return;
+       }
+
+       //define vars
+       var doc = w.document,
+               docElem = doc.documentElement,
+               mediastyles = [],
+               rules = [],
+               appendedEls = [],
+               parsedSheets = {},
+               resizeThrottle = 30,
+               head = doc.getElementsByTagName( "head" )[0] || docElem,
+               base = doc.getElementsByTagName( "base" )[0],
+               links = head.getElementsByTagName( "link" ),
+
+               lastCall,
+               resizeDefer,
+
+               //cached container for 1em value, populated the first time it's needed
+               eminpx,
+
+               // returns the value of 1em in pixels
+               getEmValue = function() {
+                       var ret,
+                               div = doc.createElement('div'),
+                               body = doc.body,
+                               originalHTMLFontSize = docElem.style.fontSize,
+                               originalBodyFontSize = body && body.style.fontSize,
+                               fakeUsed = false;
+
+                       div.style.cssText = "position:absolute;font-size:1em;width:1em";
+
+                       if( !body ){
+                               body = fakeUsed = doc.createElement( "body" );
+                               body.style.background = "none";
+                       }
+
+                       // 1em in a media query is the value of the default font size of the browser
+                       // reset docElem and body to ensure the correct value is returned
+                       docElem.style.fontSize = "100%";
+                       body.style.fontSize = "100%";
+
+                       body.appendChild( div );
+
+                       if( fakeUsed ){
+                               docElem.insertBefore( body, docElem.firstChild );
+                       }
+
+                       ret = div.offsetWidth;
+
+                       if( fakeUsed ){
+                               docElem.removeChild( body );
+                       }
+                       else {
+                               body.removeChild( div );
+                       }
+
+                       // restore the original values
+                       docElem.style.fontSize = originalHTMLFontSize;
+                       if( originalBodyFontSize ) {
+                               body.style.fontSize = originalBodyFontSize;
+                       }
+
+
+                       //also update eminpx before returning
+                       ret = eminpx = parseFloat(ret);
+
+                       return ret;
+               },
+
+               //enable/disable styles
+               applyMedia = function( fromResize ){
+                       var name = "clientWidth",
+                               docElemProp = docElem[ name ],
+                               currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp,
+                               styleBlocks     = {},
+                               lastLink = links[ links.length-1 ],
+                               now = (new Date()).getTime();
+
+                       //throttle resize calls
+                       if( fromResize && lastCall && now - lastCall < resizeThrottle ){
+                               w.clearTimeout( resizeDefer );
+                               resizeDefer = w.setTimeout( applyMedia, resizeThrottle );
+                               return;
+                       }
+                       else {
+                               lastCall = now;
+                       }
+
+                       for( var i in mediastyles ){
+                               if( mediastyles.hasOwnProperty( i ) ){
+                                       var thisstyle = mediastyles[ i ],
+                                               min = thisstyle.minw,
+                                               max = thisstyle.maxw,
+                                               minnull = min === null,
+                                               maxnull = max === null,
+                                               em = "em";
+
+                                       if( !!min ){
+                                               min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
+                                       }
+                                       if( !!max ){
+                                               max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
+                                       }
+
+                                       // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true
+                                       if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){
+                                               if( !styleBlocks[ thisstyle.media ] ){
+                                                       styleBlocks[ thisstyle.media ] = [];
+                                               }
+                                               styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] );
+                                       }
+                               }
+                       }
+
+                       //remove any existing respond style element(s)
+                       for( var j in appendedEls ){
+                               if( appendedEls.hasOwnProperty( j ) ){
+                                       if( appendedEls[ j ] && appendedEls[ j ].parentNode === head ){
+                                               head.removeChild( appendedEls[ j ] );
+                                       }
+                               }
+                       }
+                       appendedEls.length = 0;
+
+                       //inject active styles, grouped by media type
+                       for( var k in styleBlocks ){
+                               if( styleBlocks.hasOwnProperty( k ) ){
+                                       var ss = doc.createElement( "style" ),
+                                               css = styleBlocks[ k ].join( "\n" );
+
+                                       ss.type = "text/css";
+                                       ss.media = k;
+
+                                       //originally, ss was appended to a documentFragment and sheets were appended in bulk.
+                                       //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one!
+                                       head.insertBefore( ss, lastLink.nextSibling );
+
+                                       if ( ss.styleSheet ){
+                                               ss.styleSheet.cssText = css;
+                                       }
+                                       else {
+                                               ss.appendChild( doc.createTextNode( css ) );
+                                       }
+
+                                       //push to appendedEls to track for later removal
+                                       appendedEls.push( ss );
+                               }
+                       }
+               },
+               //find media blocks in css text, convert to style blocks
+               translate = function( styles, href, media ){
+                       var qs = styles.replace( respond.regex.comments, '' )
+                                       .replace( respond.regex.keyframes, '' )
+                                       .match( respond.regex.media ),
+                               ql = qs && qs.length || 0;
+
+                       //try to get CSS path
+                       href = href.substring( 0, href.lastIndexOf( "/" ) );
+
+                       var repUrls = function( css ){
+                                       return css.replace( respond.regex.urls, "$1" + href + "$2$3" );
+                               },
+                               useMedia = !ql && media;
+
+                       //if path exists, tack on trailing slash
+                       if( href.length ){ href += "/"; }
+
+                       //if no internal queries exist, but media attr does, use that
+                       //note: this currently lacks support for situations where a media attr is specified on a link AND
+                               //its associated stylesheet has internal CSS media queries.
+                               //In those cases, the media attribute will currently be ignored.
+                       if( useMedia ){
+                               ql = 1;
+                       }
+
+                       for( var i = 0; i < ql; i++ ){
+                               var fullq, thisq, eachq, eql;
+
+                               //media attr
+                               if( useMedia ){
+                                       fullq = media;
+                                       rules.push( repUrls( styles ) );
+                               }
+                               //parse for styles
+                               else{
+                                       fullq = qs[ i ].match( respond.regex.findStyles ) && RegExp.$1;
+                                       rules.push( RegExp.$2 && repUrls( RegExp.$2 ) );
+                               }
+
+                               eachq = fullq.split( "," );
+                               eql = eachq.length;
+
+                               for( var j = 0; j < eql; j++ ){
+                                       thisq = eachq[ j ];
+
+                                       if( isUnsupportedMediaQuery( thisq ) ) {
+                                               continue;
+                                       }
+
+                                       mediastyles.push( {
+                                               media : thisq.split( "(" )[ 0 ].match( respond.regex.only ) && RegExp.$2 || "all",
+                                               rules : rules.length - 1,
+                                               hasquery : thisq.indexOf("(") > -1,
+                                               minw : thisq.match( respond.regex.minw ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ),
+                                               maxw : thisq.match( respond.regex.maxw ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" )
+                                       } );
+                               }
+                       }
+
+                       applyMedia();
+               },
+
+               //recurse through request queue, get css text
+               makeRequests = function(){
+                       if( requestQueue.length ){
+                               var thisRequest = requestQueue.shift();
+
+                               ajax( thisRequest.href, function( styles ){
+                                       translate( styles, thisRequest.href, thisRequest.media );
+                                       parsedSheets[ thisRequest.href ] = true;
+
+                                       // by wrapping recursive function call in setTimeout
+                                       // we prevent "Stack overflow" error in IE7
+                                       w.setTimeout(function(){ makeRequests(); },0);
+                               } );
+                       }
+               },
+
+               //loop stylesheets, send text content to translate
+               ripCSS = function(){
+
+                       for( var i = 0; i < links.length; i++ ){
+                               var sheet = links[ i ],
+                               href = sheet.href,
+                               media = sheet.media,
+                               isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
+
+                               //only links plz and prevent re-parsing
+                               if( !!href && isCSS && !parsedSheets[ href ] ){
+                                       // selectivizr exposes css through the rawCssText expando
+                                       if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
+                                               translate( sheet.styleSheet.rawCssText, href, media );
+                                               parsedSheets[ href ] = true;
+                                       } else {
+                                               if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) ||
+                                                       href.replace( RegExp.$1, "" ).split( "/" )[0] === w.location.host ){
+                                                       // IE7 doesn't handle urls that start with '//' for ajax request
+                                                       // manually add in the protocol
+                                                       if ( href.substring(0,2) === "//" ) { href = w.location.protocol + href; }
+                                                       requestQueue.push( {
+                                                               href: href,
+                                                               media: media
+                                                       } );
+                                               }
+                                       }
+                               }
+                       }
+                       makeRequests();
+               };
+
+       //translate CSS
+       ripCSS();
+
+       //expose update for re-running respond later on
+       respond.update = ripCSS;
+
+       //expose getEmValue
+       respond.getEmValue = getEmValue;
+
+       //adjust on resize
+       function callMedia(){
+               applyMedia( true );
+       }
+
+       if( w.addEventListener ){
+               w.addEventListener( "resize", callMedia, false );
+       }
+       else if( w.attachEvent ){
+               w.attachEvent( "onresize", callMedia );
+       }
+})(this);
diff --git a/night.jpg b/night.jpg
new file mode 100644 (file)
index 0000000..89c4a85
Binary files /dev/null and b/night.jpg differ
diff --git a/night2.jpg b/night2.jpg
new file mode 100644 (file)
index 0000000..cc91a63
Binary files /dev/null and b/night2.jpg differ
diff --git a/pages/about.rst b/pages/about.rst
new file mode 100644 (file)
index 0000000..3269acc
--- /dev/null
@@ -0,0 +1,53 @@
+---
+layout: page
+title: About
+permalink: /about/
+---
+
+Setup
+=======
+
+Gli sketch utilizzano la libreria common presente nella cartella
+``libraries/common/``: questa deve essere quindi inclusa tra le librerie
+utilizzate. Un modo rapido per farlo e' settare nelle preferences dell'Arduino
+IDE l'intero repo ``aerei_arduino`` come cartella degli sketchbook, oppure
+copiare la cartella ``libraries/common`` dentro ``libraries`` dello sketchbook
+attuale.
+
+Download
+===============
+
+Download tramite git:
+    git clone git://git.andreamanni.com/aerei
+
+Per aggiornare all'ultima versione::
+
+    cd ~/aerei
+    git pull
+
+* `Download manuale archivio <https://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=tgz>`_
+* `Browse on line <https://aerei.piffa.net/repo/>`_
+* `Interfaccia git Web <https://git.andreamanni.com/web?p=aerei>`_
+* `Foum di Discussione <https://forum.piffa.net/viewforum.php?f=4&sid=aef380599d890d6e7b9f92743fab9d7e>`_
+   
+Libreria
+------------
+
+La sola libreria Common contenete gli oggetti base puo' essere scaricata direttamente nella vostra cartella libraries da:
+    git clone git://git.andreamanni.com/common
+
+* `Download manuale archivio <https://git.andreamanni.com/web?p=common;a=snapshot;h=HEAD;sf=tgz>`_
+* `Browse on line <https://aerei.piffa.net/repo/libraries/common/>`_
+* `Interfaccia git Web <https://git.andreamanni.com/web?p=common>`_
+
+
+Links
+=========
+Risorse utili per utilizzare Arduino:
+
+* Per poter programmare le schede Arduino: `Arduino IDE <https://www.arduino.cc/en/Main/Software#>`_
+* Risorse di Andrea: https://lab.piffa.net/
+    * Wiki: http://wiki.piffa.net/
+    * Forum: https://forum.piffa.net/
+* Testi consigliati: https://lab.piffa.net/testi.html
+* Risorse online: http://wiki.piffa.net/index.php/Guide
diff --git a/pages/setup.markdown b/pages/setup.markdown
new file mode 100644 (file)
index 0000000..4e1ef85
--- /dev/null
@@ -0,0 +1,76 @@
+---
+layout: default
+permalink: setup
+title: Installazione
+tagline: Installazione
+description: Come scaricare e installare la libreria e gli esempi.
+categories: [main]
+---
+Luci per Aerei con Arduino
+==========================
+
+Sketches e librerie per la gestione delle luci di aeromodelli RC con
+microcontroller compatibili con \*arduino
+
+Setup
+-----
+
+Gli sketch utilizzano la libreria common presente nella cartella
+`libraries/common/`: questa deve essere quindi inclusa tra le librerie
+utilizzate. Un modo rapido per farlo e’ settare nelle preferences
+dell’Arduino IDE l’intero repo `aerei_arduino` come cartella degli
+sketchbook, oppure copiare la cartella `libraries/common` dentro
+`libraries` dello sketchbook attuale.
+
+Download
+--------
+
+Download tramite git:
+
+:   git clone <git://git.andreamanni.com/aerei>
+
+Per aggiornare all’ultima versione:
+
+    cd ~/aerei
+    git pull
+
+-   [Download manuale archivio]
+-   [Browse on line]
+-   [Interfaccia git Web]
+-   [Foum di Discussione]
+
+### Libreria
+
+La sola libreria Common contenete gli oggetti base puo’ essere scaricata direttamente nella vostra cartella libraries da:
+
+:   git clone <git://git.andreamanni.com/common>
+
+-   [Download manuale archivio][1]
+-   [Browse on line][2]
+-   [Interfaccia git Web][3]
+
+Links
+-----
+
+Risorse utili per utilizzare Arduino:
+
+-   Per poter programmare le schede Arduino: [Arduino IDE]
+-   
+
+    Risorse di Andrea: <https://lab.piffa.net/>
+
+    :   -   Wiki: <http://wiki.piffa.net/>
+        -   Forum: <https://forum.piffa.net/>
+
+-   Testi consigliati: <https://lab.piffa.net/testi.html>
+-   Risorse online: <http://wiki.piffa.net/index.php/Guide>
+
+  [Download manuale archivio]: https://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=tgz
+  [Browse on line]: https://aerei.piffa.net/repo/
+  [Interfaccia git Web]: https://git.andreamanni.com/web?p=aerei
+  [Foum di Discussione]: https://forum.piffa.net/viewforum.php?f=4&sid=aef380599d890d6e7b9f92743fab9d7e
+  [1]: https://git.andreamanni.com/web?p=common;a=snapshot;h=HEAD;sf=tgz
+  [2]: https://aerei.piffa.net/repo/libraries/common/
+  [3]: https://git.andreamanni.com/web?p=common
+  [Arduino IDE]: https://www.arduino.cc/en/Main/Software#
+
diff --git a/repo b/repo
new file mode 160000 (submodule)
index 0000000..1bd7fb2
--- /dev/null
+++ b/repo
@@ -0,0 +1 @@
+Subproject commit 1bd7fb2b43bdccb600e5983f6fc8bcdedf4f01e7