From 620011bf7925da5658cff1ac7c2864d28eb6dbe3 Mon Sep 17 00:00:00 2001 From: James Brechtel Date: Wed, 2 Oct 2024 20:28:42 -0400 Subject: [PATCH] Adding individual posts --- aws-metric-filters.org | 64 ++++++++++ https-at-home.html | 243 ++++++++++++++++++++++++++++++++++++++ index.html | 212 +++++++++++++++++++++++++++++++++ index.org | 9 ++ job-description.org | 7 ++ let-people-fail.html | 212 +++++++++++++++++++++++++++++++++ let-people-fail.org | 53 +++++++++ managing-expectations.org | 5 + posts.org | 13 +- setup.org | 14 +++ simple-css.org | 21 ++++ 11 files changed, 841 insertions(+), 12 deletions(-) create mode 100644 aws-metric-filters.org create mode 100644 https-at-home.html create mode 100644 index.html create mode 100644 index.org create mode 100644 job-description.org create mode 100644 let-people-fail.html create mode 100644 let-people-fail.org create mode 100644 managing-expectations.org create mode 100644 setup.org create mode 100644 simple-css.org diff --git a/aws-metric-filters.org b/aws-metric-filters.org new file mode 100644 index 0000000..737ef7e --- /dev/null +++ b/aws-metric-filters.org @@ -0,0 +1,64 @@ +:PROPERTIES: +#+SETUPFILE: setup.org +#+export_file_name: aws-cloudwatch-metric-filters +#+subtitle: +:END: +** Structed and passively collected metrics via AWS CloudWatch + +AWS is a vast and sprawling set of services. It can be hard to find the +hidden gems like this one so I wanted to point this one out. + +Structured metrics are very helpful to monitoring the health and +function of an software system. + +- Do you want to know how long a particular transaction typically takes? +- How fast your database queries are? +- How long external APIs take to respond? +- Fire an alert when a particular function on the site happens too many + times? Or too few times? + +...plus a million other things specific to whatever system you're +working on. + +There are a lot of great tools for doing this and one that you might not +know about is AWS CloudWatch Metric Filters. If you're already on AWS +then you should consider these because it requires only that your +application logs to CloudWatch. + +If you're on ECS then the +[[https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html][awslogs]] +log driver for Docker gets you that nearly for free. By "free" I mean +that your application itself can have /zero/ dependencies on AWS +services and not require any AWS credentials or libraries to start +pumping out metrics that you can visualize, alert on and record over +time. + +The +[[https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html][AWS +docs]] themselves offer the canonical reference for configuring these so +I won't go into detail here. + +However, the gist is that for a log filter you define the following +properties + +- A filter pattern for extracting a discrete metric value out of a log + entry +- A metric name to store the value in +- An optional dimension for sub-classifying the value +- And finally a log group to extract the metric values from + +After that you just run the application and as the logs roll in the +metric values get pumped out. Then you can +[[https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html][define +alarms for alerting]] on them, +[[https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html][graph +them]], +[[https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html#policy-creating-alarm-console][define +autoscaling rules]] from them and more. + +To conclude - AWS is big and hairy. While there are benefits to staying +platform agnostic, some AWS services don't require much or any coupling +of your application code to take advantage of. Cloudwatch Metrics is one +of those services and you can get a lot of value out of it with not much +effort. + diff --git a/https-at-home.html b/https-at-home.html new file mode 100644 index 0000000..ca135a7 --- /dev/null +++ b/https-at-home.html @@ -0,0 +1,243 @@ + + + + + + + +Just let people be wrong + + + + + + + +
+

Just let people be wrong +
+ +

+ +

+Warning: This, like most things, will involve a fair bit of projection. +

+ +

+I have some thoughts about collaboration. +

+ +

+While a lot of this is obvious and well accepted, I think there are some fine points worth elaborating on. +

+ +

+The obvious part is that people work better together when they believe they are trusted. Trust breeds initiative and independence. Distrust breeds resentment and inaction. +

+ +

+Consider the flip side of trust, for a moment. +

+ +

+A common way that people show distrust when collaborating is either micromanaging or just coming in behind someone and redoing their work. +

+ +

+If that demonstrates distrust then +

+ +

+It's not enough that you simply do trust someone else to get the benefits, you need to show it. I think this is the part that many people skip or ignore. +

+ +

+This is, of course, true in general. +

+
+ + diff --git a/index.html b/index.html new file mode 100644 index 0000000..a75a3dc --- /dev/null +++ b/index.html @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + +
+ +
+

1. Posts

+ +
+
+ + diff --git a/index.org b/index.org new file mode 100644 index 0000000..cf0b767 --- /dev/null +++ b/index.org @@ -0,0 +1,9 @@ +:PROPERTIES: +#+SETUPFILE: setup.org +#+export_file_name: index +#+subtitle: +:END: + +* Posts +[[file:let-people-fail.org][Let people fail]] + diff --git a/job-description.org b/job-description.org new file mode 100644 index 0000000..d651759 --- /dev/null +++ b/job-description.org @@ -0,0 +1,7 @@ +:PROPERTIES: +#+SETUPFILE: setup.org +#+export_file_name: job-description +:END: +** My job description + +For my own sake, I think it's clarifying for me ot describe just what my job is. diff --git a/let-people-fail.html b/let-people-fail.html new file mode 100644 index 0000000..717411f --- /dev/null +++ b/let-people-fail.html @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + +
+ +
+

1. Posts

+ +
+
+ + diff --git a/let-people-fail.org b/let-people-fail.org new file mode 100644 index 0000000..f52c08f --- /dev/null +++ b/let-people-fail.org @@ -0,0 +1,53 @@ +:PROPERTIES: +#+SETUPFILE: setup.org +#+keywords: advice relationships people +#+export_file_name: let-people-fail +#+subtitle: +:END: + +* How (and why) to let people fail +Warning: This, like most things, will involve a fair bit of projection. + +I have some thoughts about collaboration. + +While a lot of this is obvious and well accepted, I think there are some fine points worth elaborating on. + +The obvious part is that people work better together when they believe they are trusted. Trust breeds initiative and independence. Distrust breeds resentment and inaction. + +Consider the flip side of trust, for a moment. + +A common way that people show _distrust_ when collaborating is either micromanaging or just coming in behind someone and redoing their work. + +If that demonstrates distrust then + +It's not enough that you simply _do_ trust someone else to get the benefits, you need to show it. I think this is the part that many people skip or ignore. + +This is, of course, true in general. + +** Very simple CSS frameworks +:PROPERTIES: +#+keywords: CSS +#+export_file_name: css-frameworks +#+subtitle: +:END: + +*** Minimal CSS / fancy resets +I really like simple drop-in CSS resets like the one I use for this site. + +At the time of writing, I'm using [[https://picocss.com/][Pico]] but I also considered [[https://yegor256.github.io/tacit/][tacit]] + +The idea is that they provide nice default styling of HTML elements out of the box without the need to reference any specific classes. + +The idea works well for sites that are much more content than layout - like this one. + +Using tacit is a matter of incluing this link tag in the page's HEAD element: + +#+BEGIN_SRC html + +#+END_SRC + +#+BEGIN_SRC haskell + doThings :: String -> IO () + doThings name = do + putStrLn name +#+END_SRC diff --git a/managing-expectations.org b/managing-expectations.org new file mode 100644 index 0000000..39e98ff --- /dev/null +++ b/managing-expectations.org @@ -0,0 +1,5 @@ +:PROPERTIES: +#+SETUPFILE: setup.org +#+export_file_name: expectations +:END: +* Managing expectations diff --git a/posts.org b/posts.org index ba44a5a..fffcaa0 100644 --- a/posts.org +++ b/posts.org @@ -1,16 +1,5 @@ :PROPERTIES: -#+author: James Brechtel -#+email: me@jamesbrechtel.com -#+html_head: -#+html_head_holiday: -#+html_head_mvp: -#+html_head_pico: -#+html_head_tacit: -#+options: html-link-use-abs-url:nil html-postamble:nil -#+options: html-preamble:t html-scripts:nil html-style:t -#+options: html5-fancy:t tex:t -#+options: author:t broken-links:mark c:nil creator:nil f:t tasks:t toc:nil todo:t -#+language: en +#+SETUPFILE: setup.org :END: * Homelab :homelab: ** HTTPS @ Home diff --git a/setup.org b/setup.org new file mode 100644 index 0000000..6d89155 --- /dev/null +++ b/setup.org @@ -0,0 +1,14 @@ +:PROPERTIES: +#+author: James Brechtel +#+email: me@jamesbrechtel.com +#+html_head: +#+html_head_holiday: +#+html_head_mvp: +#+html_head_pico: +#+html_head_tacit: +#+options: html-link-use-abs-url:nil html-postamble:nil +#+options: html-preamble:t html-scripts:nil html-style:t +#+options: html5-fancy:t tex:t +#+options: author:t broken-links:mark c:nil creator:nil f:t tasks:t toc:nil todo:t +#+language: en +:END: diff --git a/simple-css.org b/simple-css.org new file mode 100644 index 0000000..7a74f7b --- /dev/null +++ b/simple-css.org @@ -0,0 +1,21 @@ +:PROPERTIES: +#+SETUPFILE: setup.org +#+export_file_name: css-frameworks +#+subtitle: +:END: +** Very simple CSS frameworks + +*** Minimal CSS / fancy resets +I really like simple drop-in CSS resets like the one I use for this site. + +At the time of writing, I'm using [[https://picocss.com/][Pico]] but I also considered [[https://yegor256.github.io/tacit/][tacit]] + +The idea is that they provide nice default styling of HTML elements out of the box without the need to reference any specific classes. + +The idea works well for sites that are much more content than layout - like this one. + +Using tacit is a matter of incluing this link tag in the page's HEAD element: + +#+BEGIN_SRC html + +#+END_SRC