From 080b45fcd07a531754ca4045a40c94675c38ad40 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 26 Dec 2021 12:50:19 +0000 Subject: new article --- contact-information.html | 65 +------------ gemfeed/2008-06-26-perl-poetry.html | 65 +------------ ...12-29-using-my-nokia-n95-for-fixing-my-mta.html | 65 +------------ gemfeed/2010-04-09-standard-ml-and-haskell.html | 65 +------------ ...010-05-07-lazy-evaluation-with-standarn-ml.html | 65 +------------ .../2010-05-09-the-fype-programming-language.html | 65 +------------ .../2011-05-07-perl-daemon-service-framework.html | 65 +------------ .../2014-03-24-the-fibonacci.pl.c-polyglot.html | 65 +------------ ...2-05-run-debian-on-your-phone-with-debroid.html | 65 +------------ gemfeed/2016-04-03-offsite-backup-with-zfs.html | 65 +------------ ...04-09-jails-and-zfs-on-freebsd-with-puppet.html | 65 +------------ .../2016-04-16-offsite-backup-with-zfs-part2.html | 65 +------------ ...inning-up-my-own-authoritative-dns-servers.html | 65 +------------ gemfeed/2016-11-20-methods-in-c.html | 65 +------------ ...alistic-load-testing-with-ioriot-for-linux.html | 65 +------------ ...-22-dtail-the-distributed-log-tail-program.html | 65 +------------ gemfeed/2021-04-24-welcome-to-the-geminispace.html | 65 +------------ ...021-05-16-personal-bash-coding-style-guide.html | 65 +------------ ...5-gemtexter-one-bash-script-to-rule-it-all.html | 65 +------------ gemfeed/2021-07-04-the-well-grounded-rubyist.html | 65 +------------ ...-08-01-on-being-pedantic-about-open-source.html | 65 +------------ gemfeed/2021-09-12-keep-it-simple-and-stupid.html | 65 +------------ gemfeed/2021-10-22-defensive-devops.html | 65 +------------ gemfeed/2021-11-28-bash-golf-part-2.draft.html | 65 +------------ gemfeed/2021-11-29-bash-golf-part-1.html | 73 +------------- ...-12-26-how-to-stay-sane-as-a-devops-person.html | 81 ++++++++++++++++ gemfeed/atom.xml | 94 +++++++++++++++++- gemfeed/index.html | 66 +------------ gemfeed/style.css | 61 ++++++++++++ index.html | 66 +------------ other-resources.html | 69 +------------ resources.html | 108 +++++---------------- style.css | 61 ++++++++++++ 33 files changed, 351 insertions(+), 1888 deletions(-) create mode 100644 gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html create mode 100644 gemfeed/style.css create mode 100644 style.css diff --git a/contact-information.html b/contact-information.html index d9dbe670..d28cbc33 100644 --- a/contact-information.html +++ b/contact-information.html @@ -4,70 +4,7 @@ Contact information - +

Contact information

diff --git a/gemfeed/2008-06-26-perl-poetry.html b/gemfeed/2008-06-26-perl-poetry.html index 7271dad1..799faa18 100644 --- a/gemfeed/2008-06-26-perl-poetry.html +++ b/gemfeed/2008-06-26-perl-poetry.html @@ -4,70 +4,7 @@ Perl Poetry - +

Perl Poetry

diff --git a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html index 0eea2fa0..c05ca583 100644 --- a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html +++ b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html @@ -4,70 +4,7 @@ Using my Nokia N95 for fixing my MTA - +

Using my Nokia N95 for fixing my MTA

diff --git a/gemfeed/2010-04-09-standard-ml-and-haskell.html b/gemfeed/2010-04-09-standard-ml-and-haskell.html index 89516771..bde49643 100644 --- a/gemfeed/2010-04-09-standard-ml-and-haskell.html +++ b/gemfeed/2010-04-09-standard-ml-and-haskell.html @@ -4,70 +4,7 @@ Standard ML and Haskell - +

Standard ML and Haskell

diff --git a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html index 2df92939..a91c7c44 100644 --- a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html +++ b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html @@ -4,70 +4,7 @@ Lazy Evaluation with Standard ML - +

Lazy Evaluation with Standard ML

diff --git a/gemfeed/2010-05-09-the-fype-programming-language.html b/gemfeed/2010-05-09-the-fype-programming-language.html index 5b794f41..97125059 100644 --- a/gemfeed/2010-05-09-the-fype-programming-language.html +++ b/gemfeed/2010-05-09-the-fype-programming-language.html @@ -4,70 +4,7 @@ The Fype Programming Language - +

The Fype Programming Language

diff --git a/gemfeed/2011-05-07-perl-daemon-service-framework.html b/gemfeed/2011-05-07-perl-daemon-service-framework.html index a415ee86..d11bb9e8 100644 --- a/gemfeed/2011-05-07-perl-daemon-service-framework.html +++ b/gemfeed/2011-05-07-perl-daemon-service-framework.html @@ -4,70 +4,7 @@ Perl Daemon (Service Framework) - +

Perl Daemon (Service Framework)

diff --git a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html index ab0a162a..50d3cecf 100644 --- a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html +++ b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html @@ -4,70 +4,7 @@ The fibonacci.pl.c Polyglot - +

The fibonacci.pl.c Polyglot

diff --git a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html index ec9e16ed..3248a2b1 100644 --- a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html +++ b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html @@ -4,70 +4,7 @@ Run Debian on your phone with Debroid - +

Run Debian on your phone with Debroid

diff --git a/gemfeed/2016-04-03-offsite-backup-with-zfs.html b/gemfeed/2016-04-03-offsite-backup-with-zfs.html index 4c0b809b..c292a4c3 100644 --- a/gemfeed/2016-04-03-offsite-backup-with-zfs.html +++ b/gemfeed/2016-04-03-offsite-backup-with-zfs.html @@ -4,70 +4,7 @@ Offsite backup with ZFS - +

Offsite backup with ZFS

diff --git a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html index 42c3e924..eb63bf37 100644 --- a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html +++ b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html @@ -4,70 +4,7 @@ Jails and ZFS with Puppet on FreeBSD - +

Jails and ZFS with Puppet on FreeBSD

diff --git a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html index e9a8c24f..ec1183a9 100644 --- a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html +++ b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html @@ -4,70 +4,7 @@ Offsite backup with ZFS (Part 2) - +

Offsite backup with ZFS (Part 2)

diff --git a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html index e85db87c..220428f0 100644 --- a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html +++ b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html @@ -4,70 +4,7 @@ Spinning up my own authoritative DNS servers - +

Spinning up my own authoritative DNS servers

diff --git a/gemfeed/2016-11-20-methods-in-c.html b/gemfeed/2016-11-20-methods-in-c.html index 48dd5bcf..58684be9 100644 --- a/gemfeed/2016-11-20-methods-in-c.html +++ b/gemfeed/2016-11-20-methods-in-c.html @@ -4,70 +4,7 @@ Methods in C - +

Methods in C

diff --git a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html index 3e909488..5afba28c 100644 --- a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html +++ b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html @@ -4,70 +4,7 @@ Realistic load testing with I/O Riot for Linux - +

Realistic load testing with I/O Riot for Linux

diff --git a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html index 23eeb3c0..8544e16d 100644 --- a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html +++ b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html @@ -4,70 +4,7 @@ DTail - The distributed log tail program - +

DTail - The distributed log tail program

diff --git a/gemfeed/2021-04-24-welcome-to-the-geminispace.html b/gemfeed/2021-04-24-welcome-to-the-geminispace.html index b269a4fd..82e303c1 100644 --- a/gemfeed/2021-04-24-welcome-to-the-geminispace.html +++ b/gemfeed/2021-04-24-welcome-to-the-geminispace.html @@ -4,70 +4,7 @@ Welcome to the Geminispace - +

Welcome to the Geminispace

diff --git a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html index 4ac1124c..2f184b70 100644 --- a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html +++ b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html @@ -4,70 +4,7 @@ Personal Bash coding style guide - +

Personal Bash coding style guide

diff --git a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html index 3bea4252..2c0d8a1d 100644 --- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html +++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html @@ -4,70 +4,7 @@ Gemtexter - One Bash script to rule it all - +

Gemtexter - One Bash script to rule it all

diff --git a/gemfeed/2021-07-04-the-well-grounded-rubyist.html b/gemfeed/2021-07-04-the-well-grounded-rubyist.html index bacc8995..95bf87e0 100644 --- a/gemfeed/2021-07-04-the-well-grounded-rubyist.html +++ b/gemfeed/2021-07-04-the-well-grounded-rubyist.html @@ -4,70 +4,7 @@ The Well-Grounded Rubyist - +

The Well-Grounded Rubyist

diff --git a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html index 0e870820..e17f1a3d 100644 --- a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html +++ b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html @@ -4,70 +4,7 @@ On being Pedantic about Open-Source - +

On being Pedantic about Open-Source

diff --git a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html index cc369bbb..666e0acd 100644 --- a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html +++ b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html @@ -4,70 +4,7 @@ Keep it simple and stupid - +

Keep it simple and stupid

diff --git a/gemfeed/2021-10-22-defensive-devops.html b/gemfeed/2021-10-22-defensive-devops.html index 81e26478..65a5b580 100644 --- a/gemfeed/2021-10-22-defensive-devops.html +++ b/gemfeed/2021-10-22-defensive-devops.html @@ -4,70 +4,7 @@ Defensive DevOps - +

Defensive DevOps

diff --git a/gemfeed/2021-11-28-bash-golf-part-2.draft.html b/gemfeed/2021-11-28-bash-golf-part-2.draft.html index a10d1f8d..e73d6ccd 100644 --- a/gemfeed/2021-11-28-bash-golf-part-2.draft.html +++ b/gemfeed/2021-11-28-bash-golf-part-2.draft.html @@ -4,70 +4,7 @@ Bash Golf Part 2 - +

Bash Golf Part 2

diff --git a/gemfeed/2021-11-29-bash-golf-part-1.html b/gemfeed/2021-11-29-bash-golf-part-1.html index 991b5637..d1d91598 100644 --- a/gemfeed/2021-11-29-bash-golf-part-1.html +++ b/gemfeed/2021-11-29-bash-golf-part-1.html @@ -4,70 +4,7 @@ Bash Golf Part 1 - +

Bash Golf Part 1

@@ -382,10 +319,10 @@ bash: 1: command not found...

For these kinds of expressions it's always better to use "let" though. And you should also use $((...expression...)) instead of the old (deprecated) way $[ ...expression... ] like this example demonstrates:

 ❯ declare j=0
-❯ let i=$((j + 1))
-❯ let i=$((j + 1))
-❯ let i=$((j + 1))
-❯ let i=$((j + 1))
+❯ let j=$((j + 1))
+❯ let j=$((j + 1))
+❯ let j=$((j + 1))
+❯ let j=$((j + 1))
 ❯ echo $j
 4
 
diff --git a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html new file mode 100644 index 00000000..7516f9fd --- /dev/null +++ b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html @@ -0,0 +1,81 @@ + + + + +How to stay sane as a DevOps person + + + + +

How to stay sane as a DevOps person

+
+                                     )
+                             )      ((     (
+                           (        ))     )
+                    )       )      //     (
+               _   (        __    (     ~->>
+        ,-----' |__,_~~___<'__`)-~__--__-~->> <
+        | //  : | -__   ~__ o)____)),__ - '> >-  >
+        | //  : |- \_ \ -\_\ -\ \ \ ~\_  \ ->> - ,  >>
+        | //  : |_~_\ -\__\ \~'\ \ \, \__ . -<-  >>
+        `-----._| `  -__`-- - ~~ -- ` --~> >
+         _/___\_    //)_`//  | ||]
+   _____[_______]_[~~-_ (.L_/  ||
+  [____________________]' `\_,/'/
+    ||| /          |||  ,___,'./
+    ||| \          |||,'______|
+    ||| /          /|| I==||
+    ||| \       __/_||  __||__
+-----||-/------`-._/||-o--o---o---
+  ~~~~~'
+
+

Published by Paul Buetow 2021-12-26

+

Log4shell (CVE-2021-44228) made it clear, once again, that working in information technology is not an easy job (especially when you are a DevOps/SRE or a security engineer). I thought it would be interesting to summarize a few techniques to help you to relax.

+https://en.wikipedia.org/wiki/Log4Shell
+

Set clear expectations

+

It's important to set clear expectations. It can be quite overwhelming trying to interpret and guess what others might expect or might not expect from you. If you know exactly what you are supposed to do, you can work towards a specific goal and don't worry about all the other noise so much.

+

However, if you are in a more senior position, it is expected from you to plan your tasks by yourself to a large degree and also be flexible, so you can react quickly to new situations (e.g. resolving incidents). This can overthrow all of your plans. In this case, share your plans with your manager and/or the team and make sure that everyone agrees on it. Once done, be the execution machine. People will be happy when they see that stuff gets done. Communicate clearly all critical work you do. This will capture all the work done as it does not help you in the long run, then you fix everything in the background and everybody else thinks that all is fine.

+

Due to politeness, many people are afraid to set clear expectations. I personally may sound a little "too German" when setting expectations, but so far nobody complained, and I have only received positive feedback so far.

+

Always respond to requests but set expectations and boundaries

+

There are many temptations to get side-tracked by other projects and/or issues. It is important to set boundaries here. But always answer to all requests as nothing is more frustrating than asking a person and never getting any answer back. This is especially frustrating when everyone is working form home and people are using tools such as Slack and E-Mail for most of their communications.

+

How to say no

+

If the request is urgent, and you have the capacity, help. If it's not urgent, maybe ask to create a ticket. If it is urgent, but you don't have the knowledge or the capacity to help, try to defer the request to another colleague who might be able to help. You could also provide some quick tips and hints, so that the requester can resolve the issue by himself. You may also ask the person to come back a few hours later. Also, make it transparent to the requester why you might not have the time right now, as this can help the person to review his own priorities or to escalate.

+

Escalation is only a tool

+

Side note on escalation: Never make it personally. The only forms of escalation should be due to technical issues or lack of work resources. An escalation then becomes like a math equation and does not need human resources involved. So per-se, an escalation is nothing negative, but just a process people can follow to form decision-making. In a good company with a flat hierarchy, escalations tend to be an exception though, as staff know how to deal with the things by themselves without bothering management too much.

+

Think positively

+

If times are very stressful, think that it could be worse:

+ +

Go slower even if you could go faster

+

When working in a team, you may feel that you could get done things faster when you just did everything by yourself. This can be a bit frustrating at times, as you might need to work late hours and also might need to explain things over and over again to others.

+

You work in a team

+

Security is a team sport. So slow down and make sure that everyone is on track with the goals. You can go full-speed with your very own subtasks, though. Not everyone knows how to use all the tools so well like a full-time DevOps person. As a DevOps person, you are not a security expert, though. Security experts are different people in your company, but DevOps will be the main tribe deploying mitigations (following the security recommendations) and management will be the main tribe coordinating all the efforts. So even if you think that you can do everything faster by your own, can you really?

+

(PS: When I mean DevOps, I also mean Site Reliability Engineers and Sysadmins. I believe SRE and DevOps are just new words for Sysadmins, in most cases).

+

Don't rush to prevent errors

+

Slowing down also helps to avoid errors. Don't rush it, even if the task you are working on is urgent. Try to be quick, but don't rush it. Maybe you are writing a script to mitigate a production issue. You could others peer review that script, for example. Their primary programming language may not be the same (e.g. Java vs Ruby), but they would understand the logic (Or let another DevOps person from your company with good scripting skills review your mitigation, but he then may lack the domain knowledge of the software you are patching.

+Read also "Defensive DevOps" about deploying mitigation scripts.
+

So relax, don't always expect immediate results right away. Set clear and reasonable expectations to the management about the mitigations. You are not a superhero who has to do everything by yourself. Sometimes, you will miss a deadline. But that will have a good reason. Don't rush to complete just to meet a deadline.

+

You are not a superhero

+

Always keep that in mind. You can't solve all problems by your own. Maybe you could, but that would be a lot of additional pressure and stress (and this will reflect to your personal life). Also, Superman and Wonder Woman receive probably much higher salaries than you do ;-).

+

I have been a superhero multiple times mitigating critical incidents, and I was proud about it. But actually, I should not have been proud, as for everything there should be other people around who should be able to resolve an incident. No company should rely on a single person, there must always be a substitute. You are not a superhero and as harsh as it sounds, everyone is replaceable. Every superhero can be replaced with another superhero. The only thing it takes is time to get to know the infrastructure and tools very well, paired with work dedication.

+

This doesn't mean, that you shouldn't try your best. But you don't need to try to be the superhero. Maybe someone else will be the superhero, but that's OK as long as it's not always the same person every time. Everyone can have a good day after all.

+

Give away some of your superpowers

+

If you are a superhero, try to give away some of your superpowers, so that you can relax in the evening knowing that others (e.g. the on-call engineer of your team) knows how to tackle things. Every member of the team needs to do DevOps (even the team managers, in my humble opinion). Some may be less experienced than others or have other expertises, but to counteract this you could document the recurring tasks so that they are easy to follow (which then later could be either fully fixed or automated away).

+

So you are not a superhero. Or, if you are a superhero, then all colleagues should be superheroes too.

+

Don't jump on all problems immediately

+

In order to distribute the troubleshooting skills across the team, you should not jump on every problem immediately. Leave some space for others to resolve the issue. This is where the best learning happens. Nobody will learn from you when you solve all problems. People might learn something after you explained what you did, but the takeaways will be minimal compared to when people try to resolve issues by themselves. Always be available for questions which will help your colleagues to steer into the right direction and if you think it helps, give them some tips resolving the issue, even if they didn't ask for it. Sometimes, engineers are too proud to ask.

+

There is an exception, though: If the issue is a very critical one, then you might better off trying to resolve it as fast as possible with your full powers in order to avoid any major damage to the company. Best, in a team-effort though, but that's not always the fastest way, unfortunately. So in this particular circumstance, the company may be better off being saved by a single superhero. Make sure that the problem will not occur again or, at least, that others can fix it the next time without Superman flying in.

+

Force breaks; and shutdown now

+

Be strict about your time off. Nowadays, tech workers check their messages also out of office hours and are reachable 24/7. This really should only the case when you are on-call, to be honest (or if you work for a startup). All other out-of-office time is owned by you and not your employer. You have signed an 40 hour/week and not 7 days/week contract. Of course, there will be always some sort of flexibility and exceptions. You might need to work over the weekend to get a migration done or a problem solved. But to balance it out, you should have other days off.

+

It's important to shut down your brain from work during your breaks (be strict with your breaks, leave your desk for lunch or for a walk early afternoon and if you aren't on-call also don't take your work-phone with you). You will be happier and also much more energized and productive in the afternoon. Also, when you are reachable 24/7, your colleagues will start to think that you don't have anything more important to do than work.

+

Block time every day for personal advance

+

It does not matter how many tasks are in your backlog or how many issues are to be resolved. *Always* find time for personal advance. At the end of the day, you will have a nice feeling that you have accomplished something meaningful. This can be an interesting project or learning a new technology you are interested in. Of course, there must be consensus with your manager.

+

If you are too busy at work and just can't block time, then maybe it's time to think about alternatives. But before you do that, probably there is something else you can do. Perhaps you just think you can't block time, but you would be surprised to hear from your manager that he will fully support you. Of course, he won't agree to you working full-time on your pet projects. But a certain portion of your time should be allocated for personal advance. After all, your employer also want's you to stay happy so that you don't look for alternatives. It's of everyone's interest that you like your job and stay motivated. The more you are motivated, the more productive you will be. The more productive you are, the more valuable you are for the company.

+

E-Mail me your thoughts at comments@mx.buetow.org!

+Go back to the main site
+ + diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index d79573bc..349a4c42 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,11 +1,95 @@ - 2021-12-01T09:12:31+00:00 + 2021-12-26T12:12:56+00:00 buetow.org feed Having fun with computers! https://buetow.org/ + + How to stay sane as a DevOps person + + https://buetow.org/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html + 2021-12-26T12:02:02+00:00 + + Paul Buetow + comments@mx.buetow.org + + Log4shell (CVE-2021-44228) made it clear, once again, that working in information technology is not an easy job (especially when you are a DevOps/SRE or a security engineer). I thought it would be interesting to summarize a few techniques to help you to relax.. .....to read on please visit my site. + +
+

How to stay sane as a DevOps person

+
+                                     )
+                             )      ((     (
+                           (        ))     )
+                    )       )      //     (
+               _   (        __    (     ~->>
+        ,-----' |__,_~~___<'__`)-~__--__-~->> <
+        | //  : | -__   ~__ o)____)),__ - '> >-  >
+        | //  : |- \_ \ -\_\ -\ \ \ ~\_  \ ->> - ,  >>
+        | //  : |_~_\ -\__\ \~'\ \ \, \__ . -<-  >>
+        `-----._| `  -__`-- - ~~ -- ` --~> >
+         _/___\_    //)_`//  | ||]
+   _____[_______]_[~~-_ (.L_/  ||
+  [____________________]' `\_,/'/
+    ||| /          |||  ,___,'./
+    ||| \          |||,'______|
+    ||| /          /|| I==||
+    ||| \       __/_||  __||__
+-----||-/------`-._/||-o--o---o---
+  ~~~~~'
+
+

Published by Paul Buetow 2021-12-26

+

Log4shell (CVE-2021-44228) made it clear, once again, that working in information technology is not an easy job (especially when you are a DevOps/SRE or a security engineer). I thought it would be interesting to summarize a few techniques to help you to relax.

+https://en.wikipedia.org/wiki/Log4Shell
+

Set clear expectations

+

It's important to set clear expectations. It can be quite overwhelming trying to interpret and guess what others might expect or might not expect from you. If you know exactly what you are supposed to do, you can work towards a specific goal and don't worry about all the other noise so much.

+

However, if you are in a more senior position, it is expected from you to plan your tasks by yourself to a large degree and also be flexible, so you can react quickly to new situations (e.g. resolving incidents). This can overthrow all of your plans. In this case, share your plans with your manager and/or the team and make sure that everyone agrees on it. Once done, be the execution machine. People will be happy when they see that stuff gets done. Communicate clearly all critical work you do. This will capture all the work done as it does not help you in the long run, then you fix everything in the background and everybody else thinks that all is fine.

+

Due to politeness, many people are afraid to set clear expectations. I personally may sound a little "too German" when setting expectations, but so far nobody complained, and I have only received positive feedback so far.

+

Always respond to requests but set expectations and boundaries

+

There are many temptations to get side-tracked by other projects and/or issues. It is important to set boundaries here. But always answer to all requests as nothing is more frustrating than asking a person and never getting any answer back. This is especially frustrating when everyone is working form home and people are using tools such as Slack and E-Mail for most of their communications.

+

How to say no

+

If the request is urgent, and you have the capacity, help. If it's not urgent, maybe ask to create a ticket. If it is urgent, but you don't have the knowledge or the capacity to help, try to defer the request to another colleague who might be able to help. You could also provide some quick tips and hints, so that the requester can resolve the issue by himself. You may also ask the person to come back a few hours later. Also, make it transparent to the requester why you might not have the time right now, as this can help the person to review his own priorities or to escalate.

+

Escalation is only a tool

+

Side note on escalation: Never make it personally. The only forms of escalation should be due to technical issues or lack of work resources. An escalation then becomes like a math equation and does not need human resources involved. So per-se, an escalation is nothing negative, but just a process people can follow to form decision-making. In a good company with a flat hierarchy, escalations tend to be an exception though, as staff know how to deal with the things by themselves without bothering management too much.

+

Think positively

+

If times are very stressful, think that it could be worse:

+
    +
  • Nobody is dying, we are only doing some IT stuff.
  • +
  • Your time after work is your own time, look forward to time with your family or a nice dinner or your favourite sports class.
  • +
  • You probably will never run out of work in the IT sector. So you will always be able to make a living.
  • +
  • Your IT job and life is actually pretty good (e.g. compared to a homeless person or a cleaner). You are probably part of the world's top 1% regarding salary and life standard.
  • +
+

Go slower even if you could go faster

+

When working in a team, you may feel that you could get done things faster when you just did everything by yourself. This can be a bit frustrating at times, as you might need to work late hours and also might need to explain things over and over again to others.

+

You work in a team

+

Security is a team sport. So slow down and make sure that everyone is on track with the goals. You can go full-speed with your very own subtasks, though. Not everyone knows how to use all the tools so well like a full-time DevOps person. As a DevOps person, you are not a security expert, though. Security experts are different people in your company, but DevOps will be the main tribe deploying mitigations (following the security recommendations) and management will be the main tribe coordinating all the efforts. So even if you think that you can do everything faster by your own, can you really?

+

(PS: When I mean DevOps, I also mean Site Reliability Engineers and Sysadmins. I believe SRE and DevOps are just new words for Sysadmins, in most cases).

+

Don't rush to prevent errors

+

Slowing down also helps to avoid errors. Don't rush it, even if the task you are working on is urgent. Try to be quick, but don't rush it. Maybe you are writing a script to mitigate a production issue. You could others peer review that script, for example. Their primary programming language may not be the same (e.g. Java vs Ruby), but they would understand the logic (Or let another DevOps person from your company with good scripting skills review your mitigation, but he then may lack the domain knowledge of the software you are patching.

+Read also "Defensive DevOps" about deploying mitigation scripts.
+

So relax, don't always expect immediate results right away. Set clear and reasonable expectations to the management about the mitigations. You are not a superhero who has to do everything by yourself. Sometimes, you will miss a deadline. But that will have a good reason. Don't rush to complete just to meet a deadline.

+

You are not a superhero

+

Always keep that in mind. You can't solve all problems by your own. Maybe you could, but that would be a lot of additional pressure and stress (and this will reflect to your personal life). Also, Superman and Wonder Woman receive probably much higher salaries than you do ;-).

+

I have been a superhero multiple times mitigating critical incidents, and I was proud about it. But actually, I should not have been proud, as for everything there should be other people around who should be able to resolve an incident. No company should rely on a single person, there must always be a substitute. You are not a superhero and as harsh as it sounds, everyone is replaceable. Every superhero can be replaced with another superhero. The only thing it takes is time to get to know the infrastructure and tools very well, paired with work dedication.

+

This doesn't mean, that you shouldn't try your best. But you don't need to try to be the superhero. Maybe someone else will be the superhero, but that's OK as long as it's not always the same person every time. Everyone can have a good day after all.

+

Give away some of your superpowers

+

If you are a superhero, try to give away some of your superpowers, so that you can relax in the evening knowing that others (e.g. the on-call engineer of your team) knows how to tackle things. Every member of the team needs to do DevOps (even the team managers, in my humble opinion). Some may be less experienced than others or have other expertises, but to counteract this you could document the recurring tasks so that they are easy to follow (which then later could be either fully fixed or automated away).

+

So you are not a superhero. Or, if you are a superhero, then all colleagues should be superheroes too.

+

Don't jump on all problems immediately

+

In order to distribute the troubleshooting skills across the team, you should not jump on every problem immediately. Leave some space for others to resolve the issue. This is where the best learning happens. Nobody will learn from you when you solve all problems. People might learn something after you explained what you did, but the takeaways will be minimal compared to when people try to resolve issues by themselves. Always be available for questions which will help your colleagues to steer into the right direction and if you think it helps, give them some tips resolving the issue, even if they didn't ask for it. Sometimes, engineers are too proud to ask.

+

There is an exception, though: If the issue is a very critical one, then you might better off trying to resolve it as fast as possible with your full powers in order to avoid any major damage to the company. Best, in a team-effort though, but that's not always the fastest way, unfortunately. So in this particular circumstance, the company may be better off being saved by a single superhero. Make sure that the problem will not occur again or, at least, that others can fix it the next time without Superman flying in.

+

Force breaks; and shutdown now

+

Be strict about your time off. Nowadays, tech workers check their messages also out of office hours and are reachable 24/7. This really should only the case when you are on-call, to be honest (or if you work for a startup). All other out-of-office time is owned by you and not your employer. You have signed an 40 hour/week and not 7 days/week contract. Of course, there will be always some sort of flexibility and exceptions. You might need to work over the weekend to get a migration done or a problem solved. But to balance it out, you should have other days off.

+

It's important to shut down your brain from work during your breaks (be strict with your breaks, leave your desk for lunch or for a walk early afternoon and if you aren't on-call also don't take your work-phone with you). You will be happier and also much more energized and productive in the afternoon. Also, when you are reachable 24/7, your colleagues will start to think that you don't have anything more important to do than work.

+

Block time every day for personal advance

+

It does not matter how many tasks are in your backlog or how many issues are to be resolved. *Always* find time for personal advance. At the end of the day, you will have a nice feeling that you have accomplished something meaningful. This can be an interesting project or learning a new technology you are interested in. Of course, there must be consensus with your manager.

+

If you are too busy at work and just can't block time, then maybe it's time to think about alternatives. But before you do that, probably there is something else you can do. Perhaps you just think you can't block time, but you would be surprised to hear from your manager that he will fully support you. Of course, he won't agree to you working full-time on your pet projects. But a certain portion of your time should be allocated for personal advance. After all, your employer also want's you to stay happy so that you don't look for alternatives. It's of everyone's interest that you like your job and stay motivated. The more you are motivated, the more productive you will be. The more productive you are, the more valuable you are for the company.

+

E-Mail me your thoughts at comments@mx.buetow.org!

+
+
+
Bash Golf Part 1 @@ -330,10 +414,10 @@ bash: 1: command not found...

For these kinds of expressions it's always better to use "let" though. And you should also use $((...expression...)) instead of the old (deprecated) way $[ ...expression... ] like this example demonstrates:

 ❯ declare j=0
-❯ let i=$((j + 1))
-❯ let i=$((j + 1))
-❯ let i=$((j + 1))
-❯ let i=$((j + 1))
+❯ let j=$((j + 1))
+❯ let j=$((j + 1))
+❯ let j=$((j + 1))
+❯ let j=$((j + 1))
 ❯ echo $j
 4
 
diff --git a/gemfeed/index.html b/gemfeed/index.html index 0155ddee..3292c868 100644 --- a/gemfeed/index.html +++ b/gemfeed/index.html @@ -4,74 +4,12 @@ buetow.org's Gemfeed - +

buetow.org's Gemfeed

Having fun with computers!

+2021-12-26 (1975 words) - How to stay sane as a DevOps person
2021-11-29 (1182 words) - Bash Golf Part 1
2021-10-22 (2276 words) - Defensive DevOps
2021-09-12 (1365 words) - Keep it simple and stupid
diff --git a/gemfeed/style.css b/gemfeed/style.css new file mode 100644 index 00000000..3eeced17 --- /dev/null +++ b/gemfeed/style.css @@ -0,0 +1,61 @@ +body { + margin: auto; + padding-left: 10px; + padding-right: 10px; + max-width: 900px; + font-family: "courier new"; + background-color: #ffffff; + color: #000000; +} + +h1,h2,h3 { + color: #55bc90; +} + +a { + color: #174f14; + text-decoration: none; +} + +a:hover { + color: #c0f; + text-decoration: none; +} + +li { + color: #174f14; +} + +img { + max-width: 600px; + max-height: 400px; + display: block; + margin: auto; +} + +pre { + display: block; + background-color: #111; + color: #66cdaa; + padding: 5px; + overflow-x: auto; +} + +a.textlink:before { + content: " ⇒ "; + padding-left: 2px; +} + +p.quote { + color: #174f14; +} + +p.quote:before { + content: " « "; + padding-left: 2px; +} + +p.quote:after { + content: " » "; + padding-right: 2px; +} diff --git a/index.html b/index.html index f33a5c27..29175d33 100644 --- a/index.html +++ b/index.html @@ -5,70 +5,7 @@ fprintf(stderr, 'Hello world '); - +

fprintf(stderr, "Hello world\n");

@@ -109,6 +46,7 @@ p.quote:after { Subscribe to this blog's Gemfeed

Posts

I have switched blog software multiple times. I might be backfilling some of the older articles here. So please don't wonder when suddenly old posts appear here.

+2021-12-26 - How to stay sane as a DevOps person
2021-11-29 - Bash Golf Part 1
2021-10-22 - Defensive DevOps
2021-09-12 - Keep it simple and stupid
diff --git a/other-resources.html b/other-resources.html index f2c05583..07435683 100644 --- a/other-resources.html +++ b/other-resources.html @@ -4,70 +4,7 @@ Other resources - +

Other resources

@@ -101,7 +38,7 @@ _-" . ' + . . ,//////0\ | /00HHHHHHHMMMMM
  • 2001 - Revelation Space (en) / Unendlichkeit (de) - Revelation Space Universe
  • 2003 - Chasm City - Revelation Space Universe
  • -
  • 2004 - Redemption Ark (en) / Die Arche (de) - Revelation Space Universe - Currently Reading
  • +
  • 2004 - Redemption Ark (en) / Die Arche (de) - Revelation Space Universe

Arthur C. Clarke

    @@ -134,12 +71,12 @@ _-" . ' + . . ,//////0\ | /00HHHHHHHMMMMM
    • 1949 - 1984, George Orwell, Audio book
    • 1979 - The Hitchhikers Guide to the Galaxy (en) / Per Anhalter durch die Galaxis (de), Adam Douglas - All books of the series
    • +
    • 1987 - Consider Pheblas (en) / Bedenke Pheblas (de), Ian Banks - Currently reading
    • 2009 - Quest, Andreas Eschbach
    • 2010 - The Icarus Hunt (en) / Jagt auf Ikarus (de), Timothy Zahn

    Unread books already in my shelf

      -
    • 1987 - Consider Pheblas (en) / Bedenke Pheblas (de), Ian Banks
    • 2004 - Absolution Gap (en) / Offenbarung (de) - Revelation Space Universe, Alastair Reynolds
    • 2019 - Eklipse (de), Andreas Brandhorst
    diff --git a/resources.html b/resources.html index 2f9a7e71..de438b5d 100644 --- a/resources.html +++ b/resources.html @@ -4,70 +4,7 @@ Resources - +

    Resources

    @@ -86,34 +23,35 @@ p.quote:after {

    Technical books

      -
    • Advanced Bash-Scripting Guide; Not an actual book, but could be
    • -
    • Data Science at the Command Line; Jeroen Janssens; O'Reilly
    • -
    • Higher Order Perl; Mark Dominus; Morgan Kaufmann
    • -
    • Effective awk programming; Arnold Robbins; O'Reilly
    • -
    • Systemprogrammierung in Go; Frank Müller; dpunkt
    • -
    • Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
    • -
    • Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
    • -
    • Java ist auch eine Insel; Christian Ullenboom;
    • -
    • Developing Games in Java; David Brackeen and others...; New Riders
    • -
    • 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
    • The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
    • +
    • Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
    • +
    • The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
    • +
    • Pro Git; Scott Chacon, Ben Straub; Apress
    • +
    • The Docker Book; James Turnbull; Kindle
    • Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
    • -
    • Pro Puppet; James Turnbull, Jeffrey McCune; Apress
    • -
    • Concurrency in Go; Katherine Cox-Buday; O'Reilly
    • -
    • The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional
    • +
    • Developing Games in Java; David Brackeen and others...; New Riders
    • Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
    • -
    • Modern Perl; Chromatic ; Onyx Neon Press
    • +
    • Java ist auch eine Insel; Christian Ullenboom;
    • +
    • Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
    • +
    • Pro Puppet; James Turnbull, Jeffrey McCune; Apress
    • +
    • Data Science at the Command Line; Jeroen Janssens; O'Reilly
    • Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
    • -
    • C++ Programming Language; Bjarne Stroustrup;
    • -
    • The Docker Book; James Turnbull; Kindle
    • -
    • The Pragmatic Programmer; David Thomas; Addison-Wesley
    • Site Reliability Engineering; How Google runs production systems; O'Reilly
    • -
    • DNS and BIND; Cricket Liu; O'Reilly
    • -
    • Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
    • +
    • Higher Order Perl; Mark Dominus; Morgan Kaufmann
    • +
    • Modern Perl; Chromatic ; Onyx Neon Press
    • Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
    • -
    • Pro Git; Scott Chacon, Ben Straub; Apress
    • +
    • Effective awk programming; Arnold Robbins; O'Reilly
    • +
    • The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional
    • +
    • Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
    • +
    • DNS and BIND; Cricket Liu; O'Reilly
    • +
    • Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
    • +
    • Concurrency in Go; Katherine Cox-Buday; O'Reilly
    • Funktionale Programmierung; Peter Pepper; Springer
    • -
    • Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
    • +
    • The Pragmatic Programmer; David Thomas; Addison-Wesley
    • +
    • C++ Programming Language; Bjarne Stroustrup;
    • +
    • Advanced Bash-Scripting Guide; Not an actual book, but could be
    • +
    • Systemprogrammierung in Go; Frank Müller; dpunkt
    • +
    • 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly

    Technical bibles

    I didn't read them from the beginning to the end, but I am using them to look up things.

    diff --git a/style.css b/style.css new file mode 100644 index 00000000..3eeced17 --- /dev/null +++ b/style.css @@ -0,0 +1,61 @@ +body { + margin: auto; + padding-left: 10px; + padding-right: 10px; + max-width: 900px; + font-family: "courier new"; + background-color: #ffffff; + color: #000000; +} + +h1,h2,h3 { + color: #55bc90; +} + +a { + color: #174f14; + text-decoration: none; +} + +a:hover { + color: #c0f; + text-decoration: none; +} + +li { + color: #174f14; +} + +img { + max-width: 600px; + max-height: 400px; + display: block; + margin: auto; +} + +pre { + display: block; + background-color: #111; + color: #66cdaa; + padding: 5px; + overflow-x: auto; +} + +a.textlink:before { + content: " ⇒ "; + padding-left: 2px; +} + +p.quote { + color: #174f14; +} + +p.quote:before { + content: " « "; + padding-left: 2px; +} + +p.quote:after { + content: " » "; + padding-right: 2px; +} -- cgit v1.2.3