Skip to content

Commit

Permalink
First version of website :shipit:
Browse files Browse the repository at this point in the history
  • Loading branch information
electron0zero committed Jan 19, 2020
1 parent 9bf1820 commit 308aa0e
Show file tree
Hide file tree
Showing 38 changed files with 1,525 additions and 57 deletions.
14 changes: 14 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# editorconfig.org

root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false
10 changes: 7 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
_site/
.sass-cache/
.jekyll-cache/
_site
.sass-cache
.jekyll-cache
.jekyll-metadata
vendor

# IDE folders
/.idea/
Empty file removed .nojekyll
Empty file.
25 changes: 25 additions & 0 deletions 404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
layout: default
---

<style type="text/css" media="screen">
.container {
margin: 10px auto;
max-width: 600px;
text-align: center;
}
h1 {
margin: 30px 0;
font-size: 4em;
line-height: 1;
letter-spacing: -1px;
}
</style>

<div class="container">
<h1>404</h1>

<p><strong>Page not found :(</strong></p>
<p>The requested page could not be found.</p>
<p>Tweet me <a href="https://twitter.com/electron0zero">@electron0zero</a> if you think this page should be here :-)</p>
</div>
32 changes: 32 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
source 'https://rubygems.org'
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem 'jekyll', '~> 4.0.0'
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem 'minima', '~> 2.5'
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem 'jekyll-feed', '~> 0.12'
gem 'jekyll-seo-tag', '~> 2.6'
gem 'jemoji'
end

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do
gem 'tzinfo', '~> 1.2'
gem 'tzinfo-data'
end

# Performance-booster for watching directories on Windows
gem 'wdm', '~> 0.1.1', :install_if => Gem.win_platform?

105 changes: 105 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.2.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
concurrent-ruby (1.1.5)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
ffi (1.12.1)
forwardable-extended (2.6.0)
gemoji (3.0.1)
html-pipeline (2.12.3)
activesupport (>= 2)
nokogiri (>= 1.4)
http_parser.rb (0.6.0)
i18n (1.8.2)
concurrent-ruby (~> 1.0)
jekyll (4.0.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (>= 0.9.5, < 2)
jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 1.8)
jekyll-feed (0.13.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (2.0.1)
sassc (> 2.0.1, < 3.0)
jekyll-seo-tag (2.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
jemoji (0.11.1)
gemoji (~> 3.0)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
kramdown (2.1.0)
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.2.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6)
mini_portile2 (2.4.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
minitest (5.14.0)
nokogiri (1.10.7)
mini_portile2 (~> 2.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.3)
rb-fsevent (0.10.3)
rb-inotify (0.10.1)
ffi (~> 1.0)
rouge (3.15.0)
safe_yaml (1.0.5)
sassc (2.2.1)
ffi (~> 1.9)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
tzinfo (1.2.6)
thread_safe (~> 0.1)
tzinfo-data (1.2019.3)
tzinfo (>= 1.0.0)
unicode-display_width (1.6.1)
wdm (0.1.1)
zeitwerk (2.2.2)

PLATFORMS
ruby

DEPENDENCIES
jekyll (~> 4.0.0)
jekyll-feed (~> 0.12)
jekyll-seo-tag (~> 2.6)
jemoji
minima (~> 2.5)
tzinfo (~> 1.2)
tzinfo-data
wdm (~> 0.1.1)

BUNDLED WITH
1.17.2
52 changes: 10 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,14 @@
# failure-modes
list of failure modes/stories/postmortems in software systems
## failure-modes - [failuremodes.dev](failuremodes.dev)
Curated list of failures in software systems, and other literature around the same topic.

### Want to learn more and contribute, see [about](/about.md) page
### Current list, See [index](/index.md) page

# Failure Stories

## PostgreSQL
- [Transaction ID wraparound outage at mandrill](https://mailchimp.com/what-we-learned-from-the-recent-mandrill-outage/)
- [Transaction ID wraparound outage at sentry](https://blog.sentry.io/2015/07/23/transaction-id-wraparound-in-postgres)
#### running locally
This site is built using jekyll, so you need to install it to run it locally

## Kafka
- [Kafkapocalypse: a postmortem on our service outage](https://blog.parse.ly/post/1738/kafkapocalypse/)
- [Stories from the Front: Lessons Learned from Supporting Apache Kafka](https://www.confluent.io/blog/stories-front-lessons-learned-supporting-apache-kafka/)
- [How to Lose Messages on a Kafka Cluster - Part 1 ](https://jack-vanlightly.com/blog/2018/9/14/how-to-lose-messages-on-a-kafka-cluster-part1)

## Kubernetes
- [Compilation of public failure/horror stories related to Kubernetes](https://github.com/hjacobs/kubernetes-failure-stories)
- [10 Ways to Shoot Yourself in the Foot with Kubernetes, #9 Will Surprise You - Laurent Bernaille](https://www.youtube.com/watch?v=QKI-JRs2RIE)


# Notable Resources

## Postmortems
- [postmortem of global Cloudflare outage](https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/)
- [postmortem of major GitHub outage](https://github.blog/2018-10-30-oct21-post-incident-analysis/)

## Talks
- [Debugging Under Fire: Keep your Head when Systems have Lost their Mind • Bryan Cantrill](https://www.youtube.com/watch?v=30jNsCVLpAE)
- [Bryan Cantrill - Docker in Production: Tales From the Engine Room](https://www.youtube.com/watch?v=0T2XFSALOaU)
- [Keynote: High Reliability Infrastructure Migrations - Julia Evans, Software Engineer, Stripe](https://www.youtube.com/watch?v=obB2IvCv-K0)
- ["I See What You Mean" by Peter Alvaro](https://www.youtube.com/watch?v=R2Aa4PivG0g)
- [Orchestrated Chaos: Applying Failure Testing Research at Scale](https://www.youtube.com/watch?v=QOTNBKx9Irc)
- [Orchestrating Chaos Applying Database Research in the Wild - Peter Alvaro](https://www.youtube.com/watch?v=YplkQu6a80Q)

## Research
- [Lineage-driven Fault Injection - the morning paper](https://blog.acolyer.org/2015/03/26/lineage-driven-fault-injection/)
- [The Network is Reliable - the morning paper](https://blog.acolyer.org/2014/12/18/the-network-is-reliable/)
- [Gray failure: the Achilles’ heel of cloud-scale systems - the morning paper](https://blog.acolyer.org/2017/06/15/gray-failure-the-achilles-heel-of-cloud-scale-systems/)

## Blog posts
- [Chaos Engineering — Review Lineage Driven Failure Injection(LDFI)](https://medium.com/becloudy/chaos-engineering-review-lineage-driven-failure-injection-ldfi-a1c831abe504)
- [I test in prod - Charity Majors](https://increment.com/testing/i-test-in-production/)

## Projects
- [Chaos Toolkit](https://github.com/chaostoolkit)
- [chaos monkey - Netflix](https://github.com/Netflix/chaosmonkey)
0. [install jekyll](https://jekyllrb.com/docs/installation/)
1. git clone
2. install gems `bundle install`
3. start local server `jekyll server`
65 changes: 65 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
#
# If you need help with YAML syntax, here are some quick references for you:
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
# https://learnxinyminutes.com/docs/yaml/
#
# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.

title: Failure Modes
description: >- # this means to ignore newlines until "baseurl:"
Collection of how and why our software systems fail
baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: electron0zero

#header_pages:
# - pages/about.md
# - pages/stories.md
# - pages/blog_posts.md
# - pages/postmortems.md
# - pages/research.md
# - pages/projects.md
# - pages/stories.md
# - pages/talks.md

# Build settings
theme: minima

plugins:
- jekyll-feed
- jekyll-seo-tag
- jemoji


# Exclude from processing.
# The following items will not be processed, by default.
# Any item listed under the `exclude:` key here will be automatically added to
# the internal "default list".
#
# Excluded items can be processed by explicitly listing the directories or
# their entries' file path in the `include:` list.
exclude:
- .sass-cache/
- .jekyll-cache/
- gemfiles/
- Gemfile
- Gemfile.lock
- node_modules/
- vendor/bundle/
- vendor/cache/
- vendor/gems/
- vendor/ruby/
- .idea/
20 changes: 20 additions & 0 deletions _includes/disqus_comments.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{%- if page.comments != false and jekyll.environment == "production" -%}

<div id="disqus_thread"></div>
<script>
var disqus_config = function () {
this.page.url = '{{ page.url | absolute_url }}';
this.page.identifier = '{{ page.url | absolute_url }}';
};

(function() {
var d = document, s = d.createElement('script');

s.src = 'https://{{ site.disqus.shortname }}.disqus.com/embed.js';

s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
{%- endif -%}
6 changes: 6 additions & 0 deletions _includes/favicons.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{% comment %}
Placeholder to allow defining custom favicons

1. Head over to https://realfavicongenerator.net/ to add your own favicons.
2. Customize default _includes/favicons.html in your source directory and insert the given code snippet.
{% endcomment %}
32 changes: 32 additions & 0 deletions _includes/footer.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<footer class="site-footer h-card">
<data class="u-url" href="{{ "/" | relative_url }}"></data>

<div class="wrapper">

<div class="footer-col-wrapper">
<div class="footer-col one-half">
<h2 class="footer-heading">{{ site.title | escape }}</h2>
<ul class="contact-list">
<li class="p-name">
{%- if site.author -%}
{{ site.author | escape }}
{%- endif -%}
</li>
{%- if site.email -%}
<li><a class="u-email" href="mailto:{{ site.email }}">{{ site.email }}</a></li>
{%- endif -%}
</ul>
</div>

<div class="footer-col one-half">
<p>{{ site.description | escape }}</p>
</div>

<div class="footer-col one-half">
{%- include social.html -%}
</div>
</div>

</div>

</footer>
9 changes: 9 additions & 0 deletions _includes/google-analytics.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
<script>
window['ga-disable-{{ site.google_analytics }}'] = window.doNotTrack === "1" || navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1";
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', '{{ site.google_analytics }}');
</script>
12 changes: 12 additions & 0 deletions _includes/head.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
{%- include favicons.html -%}
{%- seo -%}
<link rel="stylesheet" href="{{ "/assets/css/style.css" | relative_url }}">
{%- feed_meta -%}
{%- if jekyll.environment == 'production' and site.google_analytics -%}
{%- include google-analytics.html -%}
{%- endif -%}
</head>
Loading

0 comments on commit 308aa0e

Please sign in to comment.