diff options
19 files changed, 222 insertions, 30 deletions
| @@ -3,3 +3,4 @@ tmp/ | |||
| 3 | package-lock.json | 3 | package-lock.json |
| 4 | .firebase/ | 4 | .firebase/ |
| 5 | public/ | 5 | public/ |
| 6 | .DS_Store | ||
diff --git a/content/2016-10-14-how-we-destroyed-development.md b/content/2016-10-14-how-we-destroyed-development.md index cd48eec..25ad46f 100644 --- a/content/2016-10-14-how-we-destroyed-development.md +++ b/content/2016-10-14-how-we-destroyed-development.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: How we successfully destroyed the joy of product development | 3 | title: How we successfully destroyed the joy of product development |
| 4 | description: My take on project development. | 4 | description: My take on project development. |
| 5 | slug: how-we-successfully-destroyed-the-joy-of-product-development | 5 | slug: how-we-successfully-destroyed-the-joy-of-product-development |
| 6 | type: note | ||
| 6 | date: 2016-10-14 | 7 | date: 2016-10-14 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2017-01-12-gce-aws-docker-digitalocean.md b/content/2017-01-12-gce-aws-docker-digitalocean.md index 79dfb70..cd6811c 100644 --- a/content/2017-01-12-gce-aws-docker-digitalocean.md +++ b/content/2017-01-12-gce-aws-docker-digitalocean.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: GCE, AWS, Docker and why I choose classic VM’s and DigitalOcean for my current project | 3 | title: GCE, AWS, Docker and why I choose classic VM’s and DigitalOcean for my current project |
| 4 | description: Reasons why I choose DigitalOcean for my project | 4 | description: Reasons why I choose DigitalOcean for my project |
| 5 | slug: gce-aws-docker-and-why-i-choose-classic-vms-and-digitalocean | 5 | slug: gce-aws-docker-and-why-i-choose-classic-vms-and-digitalocean |
| 6 | type: note | ||
| 6 | date: 2017-01-12 | 7 | date: 2017-01-12 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2017-03-07-golang-profiling-simplified.md b/content/2017-03-07-golang-profiling-simplified.md index 7e375f0..fc79020 100644 --- a/content/2017-03-07-golang-profiling-simplified.md +++ b/content/2017-03-07-golang-profiling-simplified.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: Golang profiling simplified | 3 | title: Golang profiling simplified |
| 4 | description: Golang profiling made easy | 4 | description: Golang profiling made easy |
| 5 | slug: golang-profiling-simplified | 5 | slug: golang-profiling-simplified |
| 6 | type: note | ||
| 6 | date: 2017-03-07 | 7 | date: 2017-03-07 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2017-04-10-what-its-like-to-be-a-software-developer.md b/content/2017-04-10-what-its-like-to-be-a-software-developer.md index 2949931..c6b6010 100644 --- a/content/2017-04-10-what-its-like-to-be-a-software-developer.md +++ b/content/2017-04-10-what-its-like-to-be-a-software-developer.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: What it's like to be a software developer | 3 | title: What it's like to be a software developer |
| 4 | description: Couple of observations regarding project management | 4 | description: Couple of observations regarding project management |
| 5 | slug: what-its-like-to-be-a-software-developer | 5 | slug: what-its-like-to-be-a-software-developer |
| 6 | type: note | ||
| 6 | date: 2017-04-10 | 7 | date: 2017-04-10 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2017-04-17-what-i-ve-learned-developing-ad-server.md b/content/2017-04-17-what-i-ve-learned-developing-ad-server.md index 77b396d..c186484 100644 --- a/content/2017-04-17-what-i-ve-learned-developing-ad-server.md +++ b/content/2017-04-17-what-i-ve-learned-developing-ad-server.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: What I've learned developing ad server | 3 | title: What I've learned developing ad server |
| 4 | description: Lessons I learned developing contextual ad server | 4 | description: Lessons I learned developing contextual ad server |
| 5 | slug: what-i-ve-learned-developing-ad-server | 5 | slug: what-i-ve-learned-developing-ad-server |
| 6 | type: note | ||
| 6 | date: 2017-04-17 | 7 | date: 2017-04-17 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2017-04-21-profiling-python-web-applications-with-visual-tools.md b/content/2017-04-21-profiling-python-web-applications-with-visual-tools.md index 9a31cab..6e52ee0 100644 --- a/content/2017-04-21-profiling-python-web-applications-with-visual-tools.md +++ b/content/2017-04-21-profiling-python-web-applications-with-visual-tools.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: Profiling Python web applications with visual tools | 3 | title: Profiling Python web applications with visual tools |
| 4 | description: Missing link when debugging and profiling python web applications | 4 | description: Missing link when debugging and profiling python web applications |
| 5 | slug: profiling-python-web-applications-with-visual-tools | 5 | slug: profiling-python-web-applications-with-visual-tools |
| 6 | type: note | ||
| 6 | date: 2017-04-21 | 7 | date: 2017-04-21 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2017-08-11-simple-iot.md b/content/2017-08-11-simple-iot.md index 17246ba..2eac869 100644 --- a/content/2017-08-11-simple-iot.md +++ b/content/2017-08-11-simple-iot.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: Simple IOT application supported by real-time monitoring and data history | 3 | title: Simple IOT application supported by real-time monitoring and data history |
| 4 | description: Develop simple IOT application with Arduino MKR1000 and Python | 4 | description: Develop simple IOT application with Arduino MKR1000 and Python |
| 5 | slug: simple-iot-application | 5 | slug: simple-iot-application |
| 6 | type: note | ||
| 6 | date: 2017-08-11 | 7 | date: 2017-08-11 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md b/content/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md index 6a9fbe5..f1c893a 100644 --- a/content/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md +++ b/content/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: Using DigitalOcean Spaces Object Storage with FUSE | 3 | title: Using DigitalOcean Spaces Object Storage with FUSE |
| 4 | description: Using DigitalOcean Spaces Object Storage with FUSE | 4 | description: Using DigitalOcean Spaces Object Storage with FUSE |
| 5 | slug: using-digitalocean-spaces-object-storage-with-fuse | 5 | slug: using-digitalocean-spaces-object-storage-with-fuse |
| 6 | type: research | ||
| 6 | date: 2018-01-16 | 7 | date: 2018-01-16 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2018-08-05-the-bullshit-web-developments-pov.md b/content/2018-08-05-the-bullshit-web-developments-pov.md index 46dfc19..04094c2 100644 --- a/content/2018-08-05-the-bullshit-web-developments-pov.md +++ b/content/2018-08-05-the-bullshit-web-developments-pov.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: The Bullshit Web - Development's Point of View | 3 | title: The Bullshit Web - Development's Point of View |
| 4 | description: State of front-end development and what this does to the future of web | 4 | description: State of front-end development and what this does to the future of web |
| 5 | slug: the-bullshit-web-developments-pov | 5 | slug: the-bullshit-web-developments-pov |
| 6 | type: note | ||
| 6 | date: 2018-08-05 | 7 | date: 2018-08-05 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2019-01-03-encoding-binary-data-into-dna-sequence.md b/content/2019-01-03-encoding-binary-data-into-dna-sequence.md index b5636c1..a3bca72 100644 --- a/content/2019-01-03-encoding-binary-data-into-dna-sequence.md +++ b/content/2019-01-03-encoding-binary-data-into-dna-sequence.md | |||
| @@ -3,6 +3,7 @@ layout: post | |||
| 3 | title: Encoding binary data into DNA sequence | 3 | title: Encoding binary data into DNA sequence |
| 4 | description: Imagine a world where you could go outside and take a leaf from a tree and put it through your personal DNA sequencer and get data like music, videos or computer programs from it. | 4 | description: Imagine a world where you could go outside and take a leaf from a tree and put it through your personal DNA sequencer and get data like music, videos or computer programs from it. |
| 5 | slug: encoding-binary-data-into-dna-sequence | 5 | slug: encoding-binary-data-into-dna-sequence |
| 6 | type: research | ||
| 6 | date: 2019-01-03 | 7 | date: 2019-01-03 |
| 7 | --- | 8 | --- |
| 8 | 9 | ||
diff --git a/content/2019-05-11-bci.md b/content/2019-05-11-bci.md new file mode 100644 index 0000000..24e9a30 --- /dev/null +++ b/content/2019-05-11-bci.md | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | --- | ||
| 2 | layout: draft | ||
| 3 | title: BCI | ||
| 4 | description: Imagine a world where you could go outside and take a leaf from a tree and put it through your personal DNA sequencer and get data like music, videos or computer programs from it. | ||
| 5 | slug: bci | ||
| 6 | type: research | ||
| 7 | date: 2019-05-11 | ||
| 8 | --- | ||
| 9 | |||
| 10 | **Table of contents** | ||
| 11 | |||
| 12 | 1. [Intefacing with Bluetooth device](#intefacing-with-bluetooth-device) | ||
| 13 | 1. [Basic Concepts](#basic-concepts) | ||
| 14 | 1. [Attributes](#attributes) | ||
| 15 | 2. [Structure](#structure) | ||
| 16 | 3. [Services](#services) | ||
| 17 | 4. [Characteristics](#characteristics) | ||
| 18 | 2. [Generic text for testing CSS styles](#generic-text-for-testing-css-styles) | ||
| 19 | 3. [Resources](#resources) | ||
| 20 | |||
| 21 | |||
| 22 | ## Intefacing with Bluetooth device | ||
| 23 | |||
| 24 | A Bluetooth device contains a table of data called an Attribute Table which can be accessed by other connected devices in various possible ways. That table of data and the ways in which it can be exploited falls into a technical area of Bluetooth called the Generic Attribute profile or GATT for short and you may see the term GATT in some of the documentation for APIs such as those provided by the Android platform. | ||
| 25 | |||
| 26 | The Attribute Table contains something like a series of records of various types. The main types are called Services, Characteristics, and Descriptors. Let’s look at each of these terms in turn. | ||
| 27 | |||
| 28 | ### Basic Concepts | ||
| 29 | |||
| 30 | #### Attributes | ||
| 31 | |||
| 32 | Services, Characteristics and Descriptors are all types of Attribute. Hence Generic Attribute Profile, Attribute Table and something called the Attribute Protocol. All attributes have a type which is identified by a UUID (Universally Unique Identifer). Some Attributes are defined by the Bluetooth SIG, the technical standards body for Bluetooth and these have UUIDs which are 16 bits in length. Some Attributes are custom designed for a particular device by the product team and these have 128 bit UUIDs. | ||
| 33 | |||
| 34 | #### Structure | ||
| 35 | |||
| 36 | Services, Characteristics and Descriptors are organised in a hierarchy with Services at the top and Descriptors at the bottom. Services contain one or more Characteristics. A Characteristic owns zero or more Descriptors because Descriptors are completely optional whereas a Service must contain at least one Characteristic. | ||
| 37 | |||
| 38 | #### Services | ||
| 39 | |||
| 40 | A Service is a container for logically related Bluetooth data items. Those data items are in fact called Characteristics. A Service can be thought of as the owner of the Characteristics inside it. Often a Service represents a particular feature (e.g. a hardware feature) of a device like the buttons or a particular sensor. An example of a Bluetooth SIG defined Service is the Device Information Service which, as the name suggests, is a container for various items of information about the device such as its manufacturer and serial number. | ||
| 41 | |||
| 42 | #### Characteristics | ||
| 43 | |||
| 44 | Characteristics are items of data which relate to a particular internal state of the device or perhaps some state of the environment which the device can measure using a sensor. The current battery level is an example of internal state data whereas the ambient temperature could perhaps be measured by a sensor. Sometimes Characteristics represent configuration data such as the frequency at which you want something to be measured. In any of these cases, the way a device can expose such data to other devices to use via Bluetooth is by making them available as a Characteristic. An example of a Bluetooth SIG defined Characteristic is the Serial Number String which you’ll find inside the Device Information service. | ||
| 45 | |||
| 46 | Characteristics contain various parts. They have a type, a value, some properties and some permissions. | ||
| 47 | |||
| 48 | Type is something already explained above, a UUID value which indicates which particular type of Characteristic an Attribute is. Value is the value of the associated state data item. | ||
| 49 | |||
| 50 | Properties define what another device can do with the characteristic over Bluetooth in terms of various defined operations such as READ, WRITE or NOTIFY. Reading a characteristic means transferring its current value from the attribute table to the connected device over Bluetooth. Writing allows the connected device to change that value in the state table. Notifications are a special message type which a device can send to a connected device whenever the value of the associated characteristic changes or perhaps periodically, controlled by a timer. Not all Characteristics support all operations. The Characteristic’s properties tell you which operations are supported. | ||
| 51 | |||
| 52 | Sometimes the device will have been programmed to respond in a special way when it processes an operation like reading or writing a value from the attribute table so operations can result in more happening than simply transferring data across the connection. Perhaps changing the value of a Characteristic will result in the device changing the frequency with which it samples readings from the device accelerometer for example. | ||
| 53 | |||
| 54 | Permissions are to do with security and further describe the security conditions that must be met before read or write access to the characteristic is to be granted. | ||
| 55 | |||
| 56 | ## Generic text for testing CSS styles | ||
| 57 | |||
| 58 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus pulvinar finibus ipsum, vitae mattis neque elementum nec. Cras vel lacinia diam, a porttitor nisl. Sed ullamcorper convallis bibendum. Ut id lectus risus. Morbi aliquam eros condimentum volutpat pretium. Praesent malesuada congue eros, vitae mollis erat laoreet nec. Quisque porta tempus turpis a mollis. Nulla at mollis sem, at scelerisque velit. Mauris non ex lectus. Morbi eget erat interdum lacus pretium vehicula vitae ac justo. Quisque vulputate interdum semper. Duis dignissim porta magna, vel faucibus leo pulvinar at. Donec nibh purus, vestibulum vel velit a, ultricies volutpat ipsum. | ||
| 59 | |||
| 60 | <img src="/files/bci/spike-waves.png"> | ||
| 61 | |||
| 62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus pulvinar finibus ipsum, vitae mattis neque elementum nec. Cras vel lacinia diam, a porttitor nisl. Sed ullamcorper convallis bibendum. Ut id lectus risus. Morbi aliquam eros condimentum volutpat pretium. Praesent malesuada congue eros, vitae mollis erat laoreet nec. Quisque porta tempus turpis a mollis. Nulla at mollis sem, at scelerisque velit. Mauris non ex lectus. Morbi eget erat interdum lacus pretium vehicula vitae ac justo. Quisque vulputate interdum semper. Duis dignissim porta magna, vel faucibus leo pulvinar at. Donec nibh purus, vestibulum vel velit a, ultricies volutpat ipsum. | ||
| 63 | |||
| 64 | <img src="http://satyr.io/1100x300/eee" class="large"> | ||
| 65 | |||
| 66 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus pulvinar finibus ipsum, vitae mattis neque elementum nec. Cras vel lacinia diam, a porttitor nisl. Sed ullamcorper convallis bibendum. Ut id lectus risus. Morbi aliquam eros condimentum volutpat pretium. Praesent malesuada congue eros, vitae mollis erat laoreet nec. Quisque porta tempus turpis a mollis. Nulla at mollis sem, at scelerisque velit. Mauris non ex lectus. Morbi eget erat interdum lacus pretium vehicula vitae ac justo. Quisque vulputate interdum semper. Duis dignissim porta magna, vel faucibus leo pulvinar at. Donec nibh purus, vestibulum vel velit a, ultricies volutpat ipsum. | ||
| 67 | |||
| 68 | |||
| 69 | ## Resources | ||
| 70 | |||
| 71 | - https://www.bluetooth.com/blog/a-developers-guide-to-bluetooth/ | ||
diff --git a/content/files/bci/spike-waves.png b/content/files/bci/spike-waves.png new file mode 100644 index 0000000..b0fc0b3 --- /dev/null +++ b/content/files/bci/spike-waves.png | |||
| Binary files differ | |||
diff --git a/gulpfile.js b/gulpfile.js index 6d1b6c7..630ca1a 100644 --- a/gulpfile.js +++ b/gulpfile.js | |||
| @@ -125,7 +125,7 @@ const processMarkdown = (file) => { | |||
| 125 | 125 | ||
| 126 | let post = nunjucks.render(`${meta.layout}.njk`, { | 126 | let post = nunjucks.render(`${meta.layout}.njk`, { |
| 127 | content: md.render(raw.join('')), | 127 | content: md.render(raw.join('')), |
| 128 | title: meta.title.substring(0, 65), | 128 | title: meta.title, //.substring(0, 65) |
| 129 | description: meta.description, | 129 | description: meta.description, |
| 130 | css: `<style>${css}</style>`, | 130 | css: `<style>${css}</style>`, |
| 131 | javascript: `<script>${javascript}</script>`, | 131 | javascript: `<script>${javascript}</script>`, |
diff --git a/source/assets/default.css b/source/assets/default.css index 8f15299..304c294 100644 --- a/source/assets/default.css +++ b/source/assets/default.css | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | @charset "utf-8"; | 1 | @charset "utf-8"; |
| 2 | 2 | ||
| 3 | @import url('https://fonts.googleapis.com/css?family=Heebo:100,300,400,500,700,800,900" rel="stylesheet">'); | 3 | @import url('https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600,700,900'); |
| 4 | @import url('https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600,700,900" rel="stylesheet">'); | ||
| 5 | 4 | ||
| 6 | * { | 5 | * { |
| 7 | box-sizing: border-box; | 6 | box-sizing: border-box; |
| @@ -11,8 +10,9 @@ | |||
| 11 | } | 10 | } |
| 12 | 11 | ||
| 13 | body { | 12 | body { |
| 14 | font-family: 'Heebo', sans-serif; | 13 | /*font-family: 'Heebo', sans-serif;*/ |
| 15 | font-size: 18px; | 14 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; |
| 15 | font-size: 17px; | ||
| 16 | line-height: 170%; | 16 | line-height: 170%; |
| 17 | } | 17 | } |
| 18 | 18 | ||
| @@ -39,22 +39,23 @@ ol a:hover { | |||
| 39 | 39 | ||
| 40 | h1 { | 40 | h1 { |
| 41 | line-height: 140%; | 41 | line-height: 140%; |
| 42 | font-weight: 900; | 42 | font-weight: 600; |
| 43 | font-size: 250%; | 43 | font-size: 210%; |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | h2,h3,h4,h5 { | 46 | h2,h3,h4,h5 { |
| 47 | /*margin-top: 50px;*/ | 47 | /*margin-top: 50px;*/ |
| 48 | font-weight: 500; | ||
| 48 | } | 49 | } |
| 49 | 50 | ||
| 50 | img { | 51 | img { |
| 51 | max-width: 100%; | 52 | max-width: 100%; |
| 52 | margin: 0 auto; | 53 | margin: 30px auto; |
| 53 | display: block; | 54 | display: block; |
| 54 | } | 55 | } |
| 55 | 56 | ||
| 56 | .wrapper { | 57 | .wrapper { |
| 57 | max-width: 750px; | 58 | max-width: 800px; |
| 58 | margin: 0 auto; | 59 | margin: 0 auto; |
| 59 | } | 60 | } |
| 60 | 61 | ||
| @@ -75,7 +76,7 @@ pre, code { | |||
| 75 | } | 76 | } |
| 76 | 77 | ||
| 77 | pre { | 78 | pre { |
| 78 | font-size: 80%; | 79 | font-size: 85%; |
| 79 | margin: 20px; | 80 | margin: 20px; |
| 80 | background: #eee; | 81 | background: #eee; |
| 81 | } | 82 | } |
| @@ -195,16 +196,15 @@ menu { | |||
| 195 | } | 196 | } |
| 196 | 197 | ||
| 197 | menu a.logo { | 198 | menu a.logo { |
| 198 | background: black; | 199 | font-weight: 600; |
| 199 | color: white; | ||
| 200 | font-weight: 800; | ||
| 201 | text-decoration: none; | 200 | text-decoration: none; |
| 202 | padding: 3px 15px; | 201 | font-size: 130%; |
| 202 | padding: 5px 0px ; | ||
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | menu a.logo:hover { | 205 | menu a.logo:hover { |
| 206 | background: fuchsia; | 206 | /*background: fuchsia; |
| 207 | color: white; | 207 | color: white;*/ |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | menu nav { | 210 | menu nav { |
| @@ -239,6 +239,19 @@ footer > * { | |||
| 239 | 239 | ||
| 240 | /*************************************************************** ARTICLE LIST */ | 240 | /*************************************************************** ARTICLE LIST */ |
| 241 | 241 | ||
| 242 | .list .article-list { | ||
| 243 | margin-bottom: 60px; | ||
| 244 | } | ||
| 245 | |||
| 246 | .list .article-list:last-child { | ||
| 247 | margin-bottom: 10px; | ||
| 248 | } | ||
| 249 | |||
| 250 | .list h3 { | ||
| 251 | font-weight: 700; | ||
| 252 | font-size: 140%; | ||
| 253 | } | ||
| 254 | |||
| 242 | .article-list article { | 255 | .article-list article { |
| 243 | margin-bottom: 20px; | 256 | margin-bottom: 20px; |
| 244 | } | 257 | } |
| @@ -246,12 +259,21 @@ footer > * { | |||
| 246 | .article-list article h2 { | 259 | .article-list article h2 { |
| 247 | margin: 0; | 260 | margin: 0; |
| 248 | line-height: 150%; | 261 | line-height: 150%; |
| 262 | font-size: 120%; | ||
| 249 | } | 263 | } |
| 250 | 264 | ||
| 251 | .article-list a { | 265 | .article-list a { |
| 252 | text-decoration: none; | 266 | text-decoration: none; |
| 253 | } | 267 | } |
| 254 | 268 | ||
| 269 | article img.large { | ||
| 270 | max-width: 1100px; | ||
| 271 | width: 1100px; | ||
| 272 | position: relative; | ||
| 273 | left: -150px; | ||
| 274 | margin: 50px 0; | ||
| 275 | } | ||
| 276 | |||
| 255 | /***************************************************************** RESPONSIVE */ | 277 | /***************************************************************** RESPONSIVE */ |
| 256 | 278 | ||
| 257 | @media only screen and (max-width:800px) { | 279 | @media only screen and (max-width:800px) { |
| @@ -270,6 +292,12 @@ footer > * { | |||
| 270 | footer { | 292 | footer { |
| 271 | text-align: center; | 293 | text-align: center; |
| 272 | } | 294 | } |
| 295 | |||
| 296 | article img.large { | ||
| 297 | position: initial; | ||
| 298 | width: 100%; | ||
| 299 | margin: 20px 0; | ||
| 300 | } | ||
| 273 | } | 301 | } |
| 274 | 302 | ||
| 275 | /********************************************************************** PRINT */ | 303 | /********************************************************************** PRINT */ |
diff --git a/source/layouts/draft.njk b/source/layouts/draft.njk new file mode 100644 index 0000000..72923c9 --- /dev/null +++ b/source/layouts/draft.njk | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | <!DOCTYPE html> | ||
| 2 | <html lang="en"> | ||
| 3 | |||
| 4 | <head> | ||
| 5 | <meta charset="utf-8"> | ||
| 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| 7 | <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||
| 8 | <meta name="theme-color" content="#ffffff"> | ||
| 9 | |||
| 10 | <meta name="google-site-verification" content="EwUGW1WlCkRIQuyQ9AE1-bLitWthw-eVMZFTAMZVZaA"> | ||
| 11 | |||
| 12 | <link rel="icon" type="image/png" href="{{ vars.domain }}/files/avatar-64x64.png?ver={{ timestamp }}"> | ||
| 13 | |||
| 14 | <title>{{ title }}</title> | ||
| 15 | <meta name="author" content="{{ vars.author }}"> | ||
| 16 | <meta name="description" content="{{ description }}"> | ||
| 17 | |||
| 18 | <meta name="og:url" content="{{ vars.domain }}/{{ slug }}"> | ||
| 19 | <meta name="og:type" content="website"> | ||
| 20 | <meta name="og:title" content="{{ title }}"> | ||
| 21 | <meta name="og:description" content="{{ description }}"> | ||
| 22 | <meta name="og:image" content="{{ vars.domain }}/files/avatar-512x512.png?ver={{ timestamp }}"> | ||
| 23 | |||
| 24 | <meta name="twitter:card" content="summary"> | ||
| 25 | <meta name="twitter:site" content="@mitjafelicijan"> | ||
| 26 | <meta name="twitter:title" content="{{ title }}"> | ||
| 27 | <meta name="twitter:description" content="{{ description }}"> | ||
| 28 | <meta name="twitter:image" content="{{ vars.domain }}/files/avatar-512x512.png?ver={{ timestamp }}"> | ||
| 29 | |||
| 30 | {{ css }} | ||
| 31 | |||
| 32 | </head> | ||
| 33 | |||
| 34 | <body> | ||
| 35 | |||
| 36 | <main class="wrapper"> | ||
| 37 | |||
| 38 | {% include "navigation.njk" %} | ||
| 39 | |||
| 40 | <article> | ||
| 41 | |||
| 42 | <header> | ||
| 43 | <h1>{{ title }}</h1> | ||
| 44 | <p class="pubdate">Published on | ||
| 45 | <time pubdate="{{ writtenDate.original }}">{{ writtenDate.formatted }}</time> | ||
| 46 | by {{ vars.author }}</p> | ||
| 47 | </header> | ||
| 48 | |||
| 49 | {{ content|safe }} | ||
| 50 | |||
| 51 | </article> | ||
| 52 | |||
| 53 | {{ javascript }} | ||
| 54 | |||
| 55 | {% include "footer.njk" %} | ||
| 56 | |||
| 57 | </main> | ||
| 58 | |||
| 59 | </body> | ||
| 60 | |||
| 61 | </html> | ||
diff --git a/source/layouts/footer.njk b/source/layouts/footer.njk index bbb0775..a8e3aa1 100644 --- a/source/layouts/footer.njk +++ b/source/layouts/footer.njk | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | <footer> | 1 | <footer> |
| 2 | <span>© 2012-{{ currentYear }}</span> | 2 | <span>© 2010-{{ currentYear }}</span> |
| 3 | <a href="/curriculum-vitae">Curriculum Vitae</a> | 3 | <a href="/curriculum-vitae">Curriculum Vitae</a> |
| 4 | <a href="//github.com/mitjafelicijan" target="_blank" rel="noopener nofollow">Github</a> | 4 | <a href="//github.com/mitjafelicijan" target="_blank" rel="noopener nofollow">Github</a> |
| 5 | <a href="//twitter.com/mitjafelicijan" target="_blank" rel="noopener nofollow">Twitter</a> | 5 | <a href="//twitter.com/mitjafelicijan" target="_blank" rel="noopener nofollow">Twitter</a> |
diff --git a/source/layouts/index.njk b/source/layouts/index.njk index 9784155..c4912a7 100644 --- a/source/layouts/index.njk +++ b/source/layouts/index.njk | |||
| @@ -37,16 +37,37 @@ | |||
| 37 | 37 | ||
| 38 | {% include "navigation.njk" %} | 38 | {% include "navigation.njk" %} |
| 39 | 39 | ||
| 40 | <nav class="article-list"> | 40 | <div class="list"> |
| 41 | {% for post in posts %} | 41 | |
| 42 | <article> | 42 | <h3>Research</h3> |
| 43 | <a href="/{{ post.slug }}"> | 43 | <nav class="article-list"> |
| 44 | <time pubdate="{{ post.dateOriginal }}" class="pubdate">{{ post.dateFormatted }}</time> | 44 | {% for post in posts %} |
| 45 | <h2>{{ post.title }}</h2> | 45 | {% if post.type == "research" %} |
| 46 | </a> | 46 | <article> |
| 47 | </article> | 47 | <a href="/{{ post.slug }}" aria-label="Read more about {{ post.title }}"> |
| 48 | {% endfor %} | 48 | <time pubdate="{{ post.dateOriginal }}" class="pubdate">{{ post.dateFormatted }}</time> |
| 49 | </nav> | 49 | <h2>{{ post.title }}</h2> |
| 50 | </a> | ||
| 51 | </article> | ||
| 52 | {% endif %} | ||
| 53 | {% endfor %} | ||
| 54 | </nav> | ||
| 55 | |||
| 56 | <h3>General</h3> | ||
| 57 | <nav class="article-list"> | ||
| 58 | {% for post in posts %} | ||
| 59 | {% if post.type != "research" %} | ||
| 60 | <article> | ||
| 61 | <a href="/{{ post.slug }}" aria-label="Read more about {{ post.title }}"> | ||
| 62 | <time pubdate="{{ post.dateOriginal }}" class="pubdate">{{ post.dateFormatted }}</time> | ||
| 63 | <h2>{{ post.title }}</h2> | ||
| 64 | </a> | ||
| 65 | </article> | ||
| 66 | {% endif %} | ||
| 67 | {% endfor %} | ||
| 68 | </nav> | ||
| 69 | |||
| 70 | </div> | ||
| 50 | 71 | ||
| 51 | {{ javascript }} | 72 | {{ javascript }} |
| 52 | 73 | ||
diff --git a/source/layouts/navigation.njk b/source/layouts/navigation.njk index 163c3c7..8814fc1 100644 --- a/source/layouts/navigation.njk +++ b/source/layouts/navigation.njk | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | <menu> | 1 | <menu> |
| 2 | <div> | 2 | <div> |
| 3 | <a href="/" class="logo">@mitjafelicijan</a> | 3 | <a href="/" class="logo">Mitja Felicijan</a> |
| 4 | </div> | 4 | </div> |
| 5 | <nav> | 5 | <nav> |
| 6 | <a href="//github.com/mitjafelicijan"> | 6 | <a href="//github.com/mitjafelicijan" aria-label="Github"> |
| 7 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | 7 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" |
| 8 | viewBox="0 0 92 92" style="enable-background:new 0 0 92 92;" xml:space="preserve"> | 8 | viewBox="0 0 92 92" style="enable-background:new 0 0 92 92;" xml:space="preserve"> |
| 9 | <g> | 9 | <g> |
| @@ -21,7 +21,7 @@ | |||
| 21 | </svg> | 21 | </svg> |
| 22 | </a> | 22 | </a> |
| 23 | 23 | ||
| 24 | <a href="//twitter.com/mitjafelicijan"> | 24 | <a href="//twitter.com/mitjafelicijan" aria-label="Twitter"> |
| 25 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | 25 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" |
| 26 | viewBox="0 0 612 612" style="enable-background:new 0 0 612 612;" xml:space="preserve"> | 26 | viewBox="0 0 612 612" style="enable-background:new 0 0 612 612;" xml:space="preserve"> |
| 27 | <g> | 27 | <g> |
