Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
icehewk
Jul 7, 2003

Congratulations on not getting fit in 2011!

evol262 posted:

The RHC(SA|E) book arrived today and is huge. Maybe twice as large as the official training docs

A review says it isn't for beginners, so what would be a good book before that? Would utilizing training docs with the book be the way to go?

Adbot
ADBOT LOVES YOU

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

Tab8715 posted:

That's the 06' version and there is a newer one but it's interesting so I'll pick it up.
I bought this long before the third edition came out, so if you'd rather grab that directly from Ashgate, I'd be really interested in knowing the difference between that edition and the discussion summaries here.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

icehewk posted:

A review says it isn't for beginners, so what would be a good book before that? Would utilizing training docs with the book be the way to go?
A Practical Guide to Linux Commands, Editors, and Shell Programming

evol262
Nov 30, 2010
#!/usr/bin/perl

icehewk posted:

A review says it isn't for beginners, so what would be a good book before that? Would utilizing training docs with the book be the way to go?

The RHCSA is our beginner cert, but RH certs are practical. You need to be able to actually do it. LPIC training would be a good first step if you don't know Linux at all.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
I'm gonna pace these chapter summaries at about one per day. I'm posting these so it's easy to quote parts we want to discuss. It's a fairly short book, so if you haven't started yet, it should be pretty quick to catch up until I get towards the end.

Chapter 3: The Hindsight Bias
This chapter is an introduction to the next several chapters, which also deal with similar themes. Reactions to failure are retrospective, counterfactual, judgmental, and proximal. These features interfere with your understanding of failure. As an investigator, hindsight provides you with information that was not known to the people making decisions as the situation unfolded. This information includes outcomes, critical indicators that were overlooked, and actions that may have prevented the outcome. Hindsight makes it impossible to look objectively at historical scenarios because of cause-consequence equivalence, which says a bad outcome necessarily followed from a bad process. (This is a kind of survivor bias). As a result, we tend to automatically view the process as flawed. Dekker emphasizes that to people inside the situation, the outcome likely had an infinitesimally small probability, and many possible pathways based on the available information, not a linear process from initial condition to catastrophic failure. We hyper-aggressively couple effects to preceding causes without considering that these causal relationships are not as clear to people in the middle of the situation.

  • "The more you react, the less you understand."
  • "'Loss of situation awareness' is the difference between what you now know, and what other people knew back then."

Vulture Culture fucked around with this message at 07:30 on May 22, 2015

Migishu
Oct 22, 2005

I'll eat your fucking eyeballs if you're not careful

Grimey Drawer

Sheep posted:

Are we done with powershell already? I shelved it on day three for a variety of reasons.

I haven't even had a chance to start, thanks to some stupid things. I won't be able to get to it until mid-late June :(

Oh well, I'll catch up.

evol262
Nov 30, 2010
#!/usr/bin/perl
I just wanna comment and say that these chapter summaries are 5 star posts

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Since I didn't make it explicit in previous chapter summaries, anything in parentheses is my own original thought, and not a note from the original text.

Chapter 4: Put Data in Context
This chapter continues explaining the hindsight bias introduced in Chapter 3. Here, Dekker encourages us to put data in context by asking the following three questions:

  • How did the world look to them at the time?
  • How did the situation unfold around them; what cues did they get when?
  • What goals were they likely pursuing at the time (not knowing the outcome you now know about)?

We take data out of context by micro-matching, cherry-picking, and presenting a shopping bag full of missed indicators. When we micro-match, we search for deviations from protocol or best practice, and we look for missed cues that would have been critical in understanding the situation. However, pointing out that a mismatch existed between procedure and practice is merely a starting point, and explains neither why this mismatch happened, or why this is necessarily important, because deviations from procedure often are simply part of daily life when the procedure does not match the reality that operators face. Dekker distinguishes between data availability, the data that was physically present as a situation unfolded, and data observability, which considers human factors including the interface to that data, and the conflicting priorities individuals may have faced versus correctly looking at and interpreting it. When we cherry-pick, we take data out of context, group it together, and label fragments that support the narrative we wish to convey. In doing so, we miss critical details that do not support our presupposed interpretation of events, and we exclude other pieces of important information that sit chronologically between the data we have chosen to support our version of events. Lastly, when we sweep cues together into a shopping bag, we provide ourselves as investigators with an unlimited amount of pre-interpreted data that was not available to people immersed in the situation as it unfolded. We also cognitively group them in ways they were not grouped during the situation. Instead of following these biases, we should try to initially limit our understanding to the data that was available to each person at the time, and imagine ourselves bound by the same constraints and conflicting priorities.

Choice quotes:

  • "The mystery for understanding human error is not why people could have been so unmotivated or unwise not to pick up the things that you can decide were critical in hindsight., The mystery--and your job-- is to find out what was important to them, and why."

icehewk
Jul 7, 2003

Congratulations on not getting fit in 2011!

evol262 posted:

The RHCSA is our beginner cert, but RH certs are practical. You need to be able to actually do it. LPIC training would be a good first step if you don't know Linux at all.

Perfect, thanks.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

icehewk posted:

Perfect, thanks.

Yeah there's almost no way you can study up and pass the RHSCA cold. It suggested you have a couple years of Linux experience first. With out a job that specifically exposes you to Linux its a big challenging to build that up. I recommend you just try to get Centos or Fedora working as your daily driver laptop for six months. If you can manage that then you'll get a decent exposure to Linux and have enough familiarity to it to be able to handle the tests.

By a working daily driver I mean everything has to work, WiFi, sleep/hibernate/keyoard special keys, etc. Each of them is a huge hassle in Linux, so going through it will toughen you up.

Gucci Loafers
May 20, 2006

Ask yourself, do you really want to talk to pair of really nice gaudy shoes?


SIR FAT JONY IVES posted:

Yeah there's almost no way you can study up and pass the RHSCA cold. It suggested you have a couple years of Linux experience first. With out a job that specifically exposes you to Linux its a big challenging to build that up. I recommend you just try to get Centos or Fedora working as your daily driver laptop for six months. If you can manage that then you'll get a decent exposure to Linux and have enough familiarity to it to be able to handle the tests.

By a working daily driver I mean everything has to work, WiFi, sleep/hibernate/keyoard special keys, etc. Each of them is a huge hassle in Linux, so going through it will toughen you up.

Every industry certification recommends 1-3 years of professional experience and I'm awfully unsure how they've reached that conclusion. Plenty of technical schools have excellent teachers and with technology today it's incredibly easy to teach yourself nor do I understand how anyone remains an "IT Intern" for more than a year.

Granted, it's unique that Red Hat's certifications are practical tests with a live environment but I've heard of some people passing with a semester class or previous IT experience and self-study.

Or maybe I'll eat my words when I take the exams :suicide:

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Tab8715 posted:

Every industry certification recommends 1-3 years of professional experience and I'm awfully unsure how they've reached that conclusion. Plenty of technical schools have excellent teachers and with technology today it's incredibly easy to teach yourself nor do I understand how anyone remains an "IT Intern" for more than a year.

Granted, it's unique that Red Hat's certifications are practical tests with a live environment but I've heard of some people passing with a semester class or previous IT experience and self-study.

Or maybe I'll eat my words when I take the exams :suicide:

There's almost no way you can pass the RHCSA exam with out having at least some previous Linux experience. I've studied and passed a ton of certs, but really, it's quite a bit harder to get started if you have no experience. They sit you down in front of a RH desktop running KVM, with a couple VMs already setup, and there's a list of things you have to get working on them.

Item #1 is reset the root password and log into the VMs. If you have RH6 or under experience, this process is completely different on RHEL7. A few guys in my bosses test group didn't realize it was different, they had years of RH6 experience, and just ended up walking out of the test after a half hour because there's no way to figure it out with out knowing before hand. Of course you can read that from a book, but the rest of it is really specific, and requires you to know your way around grep, find, yum, repo management, installing packages, configuring shares, authentication, services. It's a lot to just study and memorize.

Roargasm
Oct 21, 2010

Hate to sound sleazy
But tease me
I don't want it if it's that easy
Just finished chapter 2 of Ghori's RHCSA. The book is definitely thick but there's a screendump or chart on almost every page so it goes quickly despite the content. I've been using Linux for about a year now, hosting a few Tomcat servers/nginx reverse proxies at work and then running bind + dhcpd at home. Not coming in fresh, but I never learned much about the kernel itself or how to use unix tools.

Here's my notes from ch 2 (chapter 1 has no exam content):

"ll" as a default alias for "ls -l" is cool and I'm putting that on all of my servers now.
Vim has even more key commands than I thought. [#]G and [#]D are indispensable. I don't know what view mode is supposed to do.
bzip2'd and gzip'd files do not get a .bz2 extension by default. That's going to gently caress me up constantly. When I was looking at yum's default repos for bzip2 I found a package that auto adds these extensions by default, which at least tells me I'm not in this alone.
Bolded Exam Tip: tar + compressing at the same time uses less disk space than tar + compressing afterwards
I hate manpages compared to powershell's help. I learn best with quick concrete examples, something PS does an incredible job at and manpages don't seem to do at all? I also couldn't find an info module that tabbed to anything besides a man page. Kind of confused when I'd ever use it, or use any of the built in documentation when I have Google.
A couple of the chapter review questions wanted to know what actual files that "who" and "last" referenced (/var/run/utmp and /var/log/wtmp). I did not pay attention to this at all during the chapter as it just didn't seem like practical info. Will the RHCSA ask similar questions to this?

Roargasm fucked around with this message at 18:46 on May 23, 2015

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Roargasm posted:

Just finished chapter 2 of Ghori's RHCSA. The book is definitely thick but there's a screendump or chart on almost every page so it goes quickly despite the content. I've been using Linux for about a year now, hosting a few Tomcat servers/nginx reverse proxies at work and then running bind + dhcpd at home. Not coming in fresh, but I never learned much about the kernel itself or how to use unix tools.

Here's my notes from ch 2 (chapter 1 has no exam content):

"ll" as a default alias for "ls -l" is cool and I'm putting that on all of my servers now.
Vim has even more key commands than I thought. [#]G and [#]D are indispensable. I don't know what view mode is supposed to do.
bzip2'd and gzip'd files do not get a .bz2 extension by default. That's going to gently caress me up constantly. When I was looking at yum's default repos for bzip2 I found a package that auto adds these extensions by default, which at least tells me I'm not in this alone.
Bolded Exam Tip: tar + compressing at the same time uses less disk space than tar + compressing afterwards
I hate manpages compared to powershell's help. I learn best with quick concrete examples, something PS does an incredible job at and manpages don't seem to do at all? I also couldn't find an info module that tabbed to anything besides a man page. Kind of confused when I'd ever use it, or use any of the built in documentation when I have Google.
A couple of the chapter review questions wanted to know what actual files that "who" and "last" referenced (/var/run/utmp and /var/log/wtmp). I did not pay attention to this at all during the chapter as it just didn't seem like practical info. Will the RHCSA ask similar questions to this?

The RHCSA I took didn't ask about that specifically. There are no actual questions. Its just a list of practical tasks you have to do in sequence since they slightly overlap and some depend on each other.

Understanding how to use man pages will really help. You know know how to find what help you need with out google. Learning how to search packages through Yum is also essential since it asks you to install some commands but doesn't reference what specific package you need.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Chapter 5: "They Should Have ..."
Another short chapter dealing with a specific aspect of the hindsight bias, this one focuses on avoidance of "they should have" thinking. (As you'll recall from previous chapters, this is not a valuable way of approaching human factors because it encourages us to focus on the missed cues that immediately preceded an accident, rather than why people made decisions that seem, in retrospect, like poor judgment.) Dekker refers to these "they should have" suppositions as counterfactuals, because they are literally "counter the facts" because they talk about a supposed reality that did not happen. The goal of an investigator is to understand why people's behavior made sense to them at the time. Even knowing the outcome puts investigators at a disadvantage when attempting to model the situation from the points of view of its participants. This counterfactual reasoning may be useful for recommending countermeasures to prevent similar failures in the future, but should not be used as a starting point for the investigation.

When we attempt to discover the causes of failure, we inherently look first for other causes of failure. As a result, we end up with a narrative of events that is "one incremental slide into bad judgment," comprising a series of poor assessments, miscommunications, and bad decisions. Instead, we should work the other way, working forward rather than backwards, retracing the incident from the inside rather than the outside. This helps us to avoid the temptation of hindsight. Dekker also recommends the use of the word "failure" when framing your understanding of an issue, because it inherently passes a value judgment on people's understanding of the situation, rather than seeking to understand why those people made the decisions they made.

Critical point: you cannot ever correctly judge the quality of a decision someone made by working backwards from the outcome.

Choice quotes:
  • "What (you think) should've happened cannot explain people's behavior"
  • "Counterfactuals are not opportunities missed by the people you are investigating. Counterfactuals are products of your hindsight."

Vulture Culture fucked around with this message at 05:48 on May 25, 2015

Vintimus Prime
Apr 24, 2008

DERRRRRPPP what are picture threads for????

Picked up the powershell book so hoping that's still on the list!

Gucci Loafers
May 20, 2006

Ask yourself, do you really want to talk to pair of really nice gaudy shoes?


RHCSA & RHCE Redhat Enterprise Linux 7 - Preface and Chapter 1

The author is an experienced Linux,Unix professional and even wrote a few books about HP-UX. Stunningly, his email is provided through Yahoo. The book is designed as a reference or self-study to pass both certifications. The test structure is reviewed it's a live, practical test with no internet access and he recommends installing GNOME in order to speed things along while I'm under the impression with the RHEL7 exam we aren't allowed access to any GUI Tools.

The book is split between RHCSA and RHCE content with the first 13 chapters for the former with it taking up 2/3 of the book. It's a lot of content. First chapter discusses how Linux was born out of Unix. Richard Stallman wanted to free create software (not in the text but in the 80s all computers were strictly proprietary) and created a group called GNU to do so but didn't have a kernel. Linus Torvalds came around had programmed a kernel. The two groups eventually merged and became GNU/Linux or just Linux.

I'm a little perplexed as to why Stallman came up with the name GNU or "GNU Not Unix"? Apparently, it's easy to pronounce or sing. :confused: Either way, Linux was released in 1991 and since then has been tremendously successful. Red Hat was established in 1993 and created the Fedora project and is a test bed for Red Hat Linux. Fedora is free and RHEL is paid and runs on everything from standard desktops to IBM Power.

CentOS and Scientific Linux are mentioned as RHEL Alternatives or re-builds. It isn't explicitly mentioned in the text but I've asked a few cert holders and they have told me CentOS is acceptable for training and some haven't even touched RHEL before the exam but I did see that anyone can apply for a 30-day RHEL evaluation. In Jang's RHEL Guide he does say CentOS is an acceptable alternative but I'm not sure if it's that good of an idea never touch RHEL prior to spending $400. I'm also dumbfounded you have Fedora (free) then RHEL(paid) then CentOS(free) and looking at Linux in general why are there so many distributions - wouldn't there be some kind of consolidation?

Installation types are discussed - CLI, GUI (called Anaconda) and Kickstart (Network) along with hardware requirements which are self-explanatory plus installation screens and logs. The lab setup is only two VMs but the will eventually include multiple network adapters and disks which gets a little :aaa: but it's something I need to get comfortable with. One thing of particular note, is the author recommends Virtual Box, VMware but I've been recommended to use KVM as the live exam runs on it which is sort of annoying unless you have existing hardware lying around. I'll probably just use Nested Virt with VMware Workstation.

Gucci Loafers fucked around with this message at 05:39 on May 25, 2015

evol262
Nov 30, 2010
#!/usr/bin/perl
I have a few nitpicks already (at the end of chapter 2), but I'll probably write a consolidated post about them tomorrow or Tuesday.

Fedora also runs on everything RHEL is supported on (and then some). CentOS and SL are fine. They're perfectly appropriate to use instead of RHEL in many cases, especially testing stuff like this.

You can also get self-support RHEL subscriptions for $100 if you want to use it cheaper. Or a trial. You can use RHEL as long as you want for nothing, you just don't get updates. You can plausibly add the centos repos to RHEL, though not supported.

I'm guessing he suggests vbox because it's free and readers are likely to be running Windows. Why not VMware player, though?

Teaming/bonding/iscsi multipathing are important exam goals, though

Docjowles
Apr 9, 2009

Thanks for the write up, Tab. Appreciated :)

Also if you are completely perplexed by Stallman that just means your brain is working as intended. RMS is... something else. Dude has made irreplaceable contributions to the software world. But he is also crazy as gently caress.

Edit: also yeah, CentOS is literally RHEL in all ways that matter. Do not bother paying for a license just to get the cert. Open Source software at work.

Docjowles fucked around with this message at 06:04 on May 25, 2015

evol262
Nov 30, 2010
#!/usr/bin/perl
Met RMS. Smells like he looks.

Kazinsal
Dec 13, 2011



Re: installing GNOME -- it's probably faster and more efficient to run GPM as a daemon (should be able to just background it) and use that to copy/paste between virtual consoles.

evol262 posted:

Met RMS. Smells like he looks.

...ew.

Mo_Steel
Mar 7, 2008

Let's Clock Into The Sunset Together

Fun Shoe

Vulture Culture posted:

Chapter 5: "They Should Have ..."
Another short chapter dealing with a specific aspect of the hindsight bias, this one focuses on avoidance of "they should have" thinking. (As you'll recall from previous chapters, this is not a valuable way of approaching human factors because it encourages us to focus on the missed cues that immediately preceded an accident, rather than why people made decisions that seem, in retrospect, like poor judgment.) Dekker refers to these "they should have" suppositions as counterfactuals, because they are literally "counter the facts" because they talk about a supposed reality that did not happen. The goal of an investigator is to understand why people's behavior made sense to them at the time. Even knowing the outcome puts investigators at a disadvantage when attempting to model the situation from the points of view of its participants. This counterfactual reasoning may be useful for recommending countermeasures to prevent similar failures in the future, but should not be used as a starting point for the investigation.

When we attempt to discover the causes of failure, we inherently look first for other causes of failure. As a result, we end up with a narrative of events that is "one incremental slide into bad judgment," comprising a series of poor assessments, miscommunications, and bad decisions. Instead, we should work the other way, working forward rather than backwards, retracing the incident from the inside rather than the outside. This helps us to avoid the temptation of hindsight. Dekker also recommends the use of the word "failure" when framing your understanding of an issue, because it inherently passes a value judgment on people's understanding of the situation, rather than seeking to understand why those people made the decisions they made.

Critical point: you cannot ever correctly judge the quality of a decision someone made by working backwards from the outcome.

Choice quotes:
  • "What (you think) should've happened cannot explain people's behavior"
  • "Counterfactuals are not opportunities missed by the people you are investigating. Counterfactuals are products of your hindsight."

I felt this one closely recently when we ran into an issue with some data being loaded into a database incorrectly; two immediate causes were responsible: the new guy was checking the log files daily but didn't interpret the error messages correctly, and the batch file that was responsible for the error ran an order of operations that allowed the issue to occur by failing a previous check. Trouble is, the error messages are really similar to one we routinely get about a network connection issue; it's easy to think "stupid new guy, he should've done 'X' when the error message popped up" but the reality is the actions he took made sense because he thought the error message meant something else, and the reason he thought that was because the error messages are not descriptive enough to distinguish to someone not experienced with the system. In hindsight he himself probably thinks "I should've recognized these errors were different" when the better question is "how can we improve the descriptions of our errors so someone who is new can differentiate between them easily" (and also "why is the batch file ordered the way it is to allow the secondary failure to occur, and can we restructure it to change that behavior".

-----

Powershell-wise I'm up to Chapter 5; the end of chapter "quizzes" are actually really good primers for what I've been doing at work as I put together a script to read, compare and modify CSV files.

MrMoo
Sep 14, 2000

For an alternative RHEL spinoff go for Oracle Linux, you are more likely to get updates than CentOS and the repo is public.

evol262
Nov 30, 2010
#!/usr/bin/perl

MrMoo posted:

For an alternative RHEL spinoff go for Oracle Linux, you are more likely to get updates than CentOS and the repo is public.

CentOS is public. CentOS is now run directly by Red Hat, and they're building on the same infrastructure. Oracle is faster with major updates (historically). That should no longer be the case.

All EL rebuilds (OEL, CentOS, SL, maybe Red Star) are pretty equal. Don't overcomplicate it. Also, Oracle is a terrible company

Dr. Arbitrary
Mar 15, 2006

Bleak Gremlin

evol262 posted:

All EL rebuilds (OEL, CentOS, SL, maybe Red Star) are pretty equal.

Unless I'm thinking of a different Red Star, one of these things is not like the other.

Unless: :thejoke:

evol262
Nov 30, 2010
#!/usr/bin/perl
Ah, I meant Red Flag, the other official communist party Linux.

General comments:

  • Chapter 1, USB installing: You don't need to use liveusb creator. You can (and should) just just dd it to a flash drive, especially since this works somewhat better with EFI (which has a different part of a joliet image)
  • Chapter 2, ,Accessing from Another Linux System: universally recommending "ssh -X" instead of "ssh -Y" can cause problems with some applications, notably remoting into a system and trying vncviewer with a password -- the prompt will always fail. If you expect a password dialog to pop up, use -Y not -X. Also, xauth is required to be on the host, but no other parts of X.
  • Chapter 3, File System Tree: it's misleading to say that "/boot may be expanded as part of the preparation to update the kernel". /boot is almost always at the beginning of the disk with no room to expand, and kernel %pre/%post scripts aren't trying to expand it. Far later down the line, preupgrade may require a larger filesystem than 500MB to do major (7->8, say) RHEL upgrades but this isn't a kernel upgrade. The installer will complain if you try to size it less than 500mb, probably, but nothing automatically expands it.
  • Chapter 3, Filesystems (opt-ish): it's also misleading to say that "/opt holds additional software installed on the system" or that "/var/opt storages log/status/etc". This is regurgitating the FHS, but the vast majority of vendors dump their poo poo in /opt (all of it) and dump their logs in /var/log. In a perfect world, I guess this /var/opt stuff would happen, but not in reality. Also, "additional software installed on the system" means "that tarball for Oracle or Tivoli or whatever", not "stuff you install from yum or optional RHEL components (except Ceph, which I think is still in opt)"
  • Chapter 3, "more and less": always use less. more is a nightmare, especially with huge logs that can trigger the OOM killer
I have issues with the way `find` is presented, with {} and \; as "part of the syntax". They are, but {} is a stand-in for the path, and "\;" is used to signify that it's the last value, though you can chain it through with "find . -name *.foo -exec ls {} \; -or -name *.bar -exec ls {} \;".

But in general, the {} should be placed wherever you expect a filename to go. It's not a magic thing, and it's not always at the end. I hope he'll go through it a bit more in the next chapter, because `find` is extremely useful, but clarifying in case he doesn't.

Swink
Apr 18, 2006
Left Side <--- Many Whelps

evol262 posted:

I just wanna comment and say that these chapter summaries are 5 star posts

I'm returning to this thread specifically for them.


For book suggestion I'd be interested in anything that helps turn me from "self taught ugly scripter" to "guy who can write good code". Language doesnt matter.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
I missed a day this weekend because I wasn't reading, and you shouldn't have been either. Moving right along:

Chapter 6: Trade Indignation for Explanation
Much of this chapter comprises excellent examples of aeronautical case study. Dekker reiterates that as a failure investigator, you must choose between actually understanding the situation or passing judgment on the people involved; you cannot do both. This is because it is fundamentally impossible to make sense of people's actions when you already do not view those actions as sensible to them. The local rationality principle says that what people do makes sense to them at the time given their goals, knowledge, and focus of attention. To help realize when we are being judgmental, and hindering our ability to understand the situation, we should avoid counterfactual language like "should have" or "if only." We must also avoid what Dekker calls "ugly" language, consisting of words like "illogical," "disbelief," and "dumbfounding," which contribute nothing to understanding actual contributors to failure.

Choice quotes:
  • "You have to assume that people did not come to work to do a bad job (otherwise, don't turn to human factors as a field of explanation).
  • "Bad language ... implicitly puts up a standard of what is 'good' practice and then judges the observed performance deficient by that standard."

Gucci Loafers
May 20, 2006

Ask yourself, do you really want to talk to pair of really nice gaudy shoes?


Docjowles posted:

Thanks for the write up, Tab. Appreciated :)

Thank for you kind words, very much appreciated. I still want to do the first lab despite messing around with plenty of Linux VMs prior but this week at work is going be vicious and I've got another certification I also need to study for and I hope I don't fall too far behind.

evol262
Nov 30, 2010
#!/usr/bin/perl

Swink posted:

For book suggestion I'd be interested in anything that helps turn me from "self taught ugly scripter" to "guy who can write good code". Language doesnt matter.

There are no real suggestions here. The Practical Programmer, Design Patterns, and others can be really helpful, but your best bet is to subscribe to the subreddit for the language you like, the CoC thread for it, read hackernews if it's a trendy language, the stackoverflow tag for it, and buy " $language Cookbook" if O'Reilly has it

But learn best practices and code a lot. There's no other real way. Write a lot of code and read a lot of code by good developers.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

evol262 posted:

There are no real suggestions here. The Practical Programmer, Design Patterns, and others can be really helpful, but your best bet is to subscribe to the subreddit for the language you like, the CoC thread for it, read hackernews if it's a trendy language, the stackoverflow tag for it, and buy " $language Cookbook" if O'Reilly has it

But learn best practices and code a lot. There's no other real way. Write a lot of code and read a lot of code by good developers.
I'll also toss in Clean Code. And though it's very C++-centric and very dated (last edition was 2004), Steve McConnell's Code Complete was such an important book on the topic that I'm going to still recommend it if you can borrow a copy from a salt-and-pepper-haired coworker.

Agreed on reading good code from other developers -- my developer interviews heavily focus on reasoning about other people's code more than the candidate writing their own -- but books on thinking around clean abstractions are really helpful at understanding why some developers are doing what they do as you read their code.

Smrtz
May 26, 2015
I really like this idea!

I'll throw in Applied Cryptography for fun, but I get that not everyone will be interested in that. I'll also recommend anything on Coding Horrors Required Reading.

evol262
Nov 30, 2010
#!/usr/bin/perl
Applied cryptography looks pretty fun. I've always been interested in the math, but never curious enough to really bear down on it.

Continuing the RHCSA/E deconstruction:

Please let me know if this is too nitpicky, or confusing for new users. I'm trying to expound on errors and bad generalizations, though it may get a little more technical than is necessary.

Chapter 4: This chapter sucks
  • Starting off, "$ as the sign for regular users and # as the sign for the root user" is actually a prompt variable called \$. This is potentially confusing when dealing with the variable interpolation he uses for PS1 later. $ and # are not at all fixed, and setting PS1 without \$ means this won't be present
  • I find the entire "this introduces the concept of subshells" bit on the first page misleading, because it doesn't actually introduce the concept of subshells at all. A subshell happens when another instance of the shell is invoked inside yours. You could do it by directly calling "bash", but the most common case is running a script which starts with #!/bin/bash
  • The bits of "export PS1" look like magic, and are double confusing with the \$ variable above. So let's be clear. $LOGNAME will never change. It's evaluated once and only once, when PS1 is set. Because "\$PWD" is escaped, it's evaluated every time the prompt is redrawn. Change this to "$PWD" to watch it never change. Surround it with single quotes instead of double quotes, and that '\$' is suddenly interpreted as the prompt special character '\$' above, and it'll become '$PWD" if you're not root and "#PWD' if you are. This substitution section should be after his bit on escapes and quoting later. Come back and play with it after you read that, because this "export PS1..." bit is a good example of how learn escaping.
  • 2> /dev/null works because bash opens file descriptors 1 and 2 for stdout and stderr by default. You can override this if you want, or open new descriptors. I'm only commenting to make this seem less magic. 2 is not magic for "STDERR".
  • Regular expressions -- just to clarify, bash itself does not recognize regular expressions (for Linux people, I'm ignoring =~ in scripts here). It's grep and sed and other utilities which do, but "grep ^root /etc/passwd" doesn't match ^ as a function of bash. That's grep doing it. I'm clarifying so you don't try to use this with ls or other utilities. You can however....
  • Metacharacters (and globbing) -- He says "we covered ^ and $ earlier". Which we did. But didn't. They're very different things, and they do different things (^ is used inside brackets to invert a match, $ will go do variable interpolation). Please read this and this. Really.
  • "Listing processes by User and Group ownership": if it's not obvious (and he doesn't explain), a question mark under the "TTY" column in "ps" means it's not attached to a tty (which your shell is, and other login prompts are -- physical logons are tty, ssh is pty, in general).
  • "Zombie" -- "it's retained until the parent process permits it to die". Well, no. It hangs around until the parent reads the exit code, then it gets "reaped" by init (the process gets terminated). The parent "permits it to die" by reading the exit code. It's just hanging around as a zombie to say "hey, I exited with 255" or whatever. "echo $?" to view the exit code from your last command. Success is 0. Not success is not. "ls abcdefg" will be 2, for example.
  • Process states: this is also another bad generalization. Most daemons implement a signal handler that tells it to re-load its configuration on SIGHUP. But if you write a program (or a bash script, or whatever), you can write your own signal handler which ignores SIGINT. And SIGHUP, SIGUSR, and all the rest won't do anything unless you specifically handle them. You cannot handle SIGKILL or SIGSTOP without doing it in the kernel, but any application may do whatever it wants (or nothing) on many of these signals.

Chapter 5:
  • Packages are certified? I don't even know what that's supposed to mean. Hardware is certified. Vendors certify their applications to run on RHEL. Our packages aren't really "certified" in any real way. Signing is part of the release process, and that's our "certification" that it's good enough
  • RHSM and SAM: why bother even talking about these? I work for Red Hat and I've never had to look at SAM, and he goes into a very confusing paragraph then says he's not gonna talk about it. The RHSM part could have been useful if he added screenshots.
  • Querying packages: possibly the most important part got missed, which is that all of these can be combined. If you read the manpage for rpm, you'll see a whole list of stuff you can do when it's in "query" mode. You can combine them in almost any combination. You can do "rpm -qpl /path/to/somepackage" to list what files are in an RPM you haven't installed. I'd also say that "--filesbypkg" is somewhat nicer than "-ql"
  • "rpm -U" makes a backup of files with ".rpmsave". yum does better by saving the files it would replace as ".rpmnew" You should use "yum localinstall" instead of "rpm -U" most of the time.
  • The output on the top of page 145 is hilariously wrong. He says he's gonna install ypbind, actually tries to install system-config-keyboard, and the output says it updates zsh. Editor!
  • Along with yum history, rpm keeps a history. "rpm -q --last somepackage" shows you the last time it was updated or installed.
  • gnome-packagekit is going away and isn't even part of a base Fedora workstation install anymore. Learn yum. Love yum. Almost all of it will transfer to dnf later.
  • Chapter summary: did I miss something in this chapter? Why is it asking about rhn_register and rhnsd? It didn't talk about those at all, and you should be using subscription-manager instead of rhn_register. Missed questions from a RHEL6 book?
  • Also, yum does have a limit to the number of commands it can install. It's academic for yum, but there is a definite limit to MAX_ARG_PAGES that the shell is limited to. Every so often you'll see a shell expansion (like "rm *") spit out "argument list too long" (since * actually evaluates to "the name of every file" when it passes in -- try "echo *"). Good luck typing that many packages in, though.

kujeger
Feb 19, 2004

OH YES HA HA
I've ordered that RHCSA/E book and plan to read it, and this kind of nitpicking is exactly what I want. So please go hog wild!

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Wow, I've been too busy to do keep up with these recently. I've got a lot of catching up to do!

Chapter 7: Sharp or Blunt End?
A few great longer quotes from Dekker in this chapter.

When we analyze failures, we tend to put the focus on the operators, who are the people closest to the incident. However, this is short-sighted. Instead, we should view the system in which those people worked as something like a surgical scalpel: it has a sharp end, which does the cutting, and it has a blunt end, a grip, which allows that sharp end to be manipulated in service of some goal. In this analogy, the operators are the sharp end, who are directly involved in safety-critical processes. The blunt end is responsible for steering: this is the organization, which gives the sharp end resources to accomplish what it needs, but also adds its own pressures and constraints which can divert attention away from the task at hand and introduce potential for error. When we focus on the sharp end, we focus on the scalpel blade and ignore the surgeon. When investigating failure, organizations often focus on what Dekker calls "local miscreants," or the people nearest to the incident. When this happens, whether intentionally or not, the investigators are de facto "yes men," unwilling to or incapable of presenting views that implicate the status quo of the organization in the incident. Productive change toward system safety cannot occur while this mindset prevails.

Choice quotes:
  • Looking for sources of failure far away from people at the sharp end is counterintuitive. And it can be difficult. If you find that sources of failure lie really at the blunt end, this may call into question beliefs about the safety of the entire system. It challenges previous views. Perhaps things are not as well-organized or well-designed as people had hoped. Perhaps this could have happened any time. Or worse, perhaps it could happen again."
  • "People and organizations often want the surprise in the failure to go away, and with it the challenge to their views and beliefs. The easiest way to do this is to see the failure as something local, as something that is merely the problem of a few individuals who behaved in uncharacteristic, erratic or unrepresentative (indeed, locally 'surprising') ways."
  • "Faced with a bad, surprising event, we change the event or the players in it, rather than our beliefs about the system that made the event possible. Instead of modifying our views in the light of the event, we re-shape, re-tell and re-inscribe the event until it fits the traditional and non-threatening view of the system. As far as organizational learning is concerned, the mishap might as well not have happened."

Vulture Culture fucked around with this message at 07:25 on Jun 4, 2015

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Chapter 8: You Can't Count Errors
Faced with the task of explaining and reducing human errors, managers often fall prey to the trap of trying to quantify them. There exists a common myth which states that 70 percent of mishaps are due to human error. This is a falsehood: safety is not something that inherently exists in a system until some human comes along to screw it all up. Safety in a complex system is something that is continuously created by people working in that system, who tailor their tasks to their own strengths, creating their own "buffers, routines, heuristics, double-checks, memory aids." Furthermore, we don't really know what errors even are except in hindsight; they are often indistinguishable from real work, especially because many "errors" are deliberate deviations from procedure as part of some problem-management strategy unknown to the people who oversee and count errors. Quantitative-only attempts to document errors without context will always fall short, and we should endeavor to consult with the people observed to ensure that our observed "errors" are, in fact, errors.

When we count and categorize errors, we invariably lean towards oversimplified explanations like "human error." As Dekker reiterates, errors are not explanations of failure: they are starting points for investigation that themselves require explanation. Often, investigators fall into the trap of blaming either what Dekker refers to as "the head" (of the operator) or "the world." Instead of compartmentalizing in this way, we should begin by reconstructing and understanding the situation, and drawing connections between that situation and individual behavior. We must recognize that people change the situation, but the situation also changes people's behavior. Because of this, we cannot begin by trying to understand an operator's thought process independent of their situation. (More importantly -- and oddly ignored completely by Dekker -- compartmentalizing in this manner ignores one of the most important places to look: the interface between that operator and the broader system context in which they operate.)

Choice quotes:
  • "The occasional human contribution to failure occurs because complex systems need an overwhelming human contribution for their safety. Human error is the inevitable by-product of the pursuit of success in an imperfect, unstable, resource-constrained world."
  • "The reconstruction of mindset begins not with the mind. It begins with the circumstances in which the mind found itself."

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Last one for tonight. This is a really short chapter.

Chapter 9: Cause is Something You Construct
When we search for the "root cause" or primary cause of an issue, we fundamentally deny that there are many systemic factors that play into an incident's occurrence. This chapter begins by looking at one false dichotomy that's very relevant to technology: mechanical failure versus human error. Dekker points out that this dichotomy reflects a variant of the bad apple theory: the idea that a system is basically safe, except for a handful of unreliable components. However, there are complicated relationships between the mechanical and human components of the system, and "human error" is often introduced by humans attempting to juggle the limitations of a nominally-functioning mechanical system with the real-world need to perform a task. Dekker proposes that cause is something you construct (like a story), not something you find while sifting through data of the incident. Keeping in mind the local rationality principle -- that people inherently try to do a good job and what they did probably made sense to them at the time -- a lot needs to go wrong for an accident to occur in a well-defended system (which most mature systems are). We call those things contributory factors. When we use the word "cause," we make a judgment that this event or circumstance is sufficient as the only thing that needed to occur for the accident to happen. This is rarely the case. Instead, it is more helpful to think in explanations than causes, and these explanations will typically detail how many contributory factors were necessary and only jointly sufficient to cause the accident.

Choice quotes:
  • "Cause is not something you find. Cause is something you construct."
  • "This is how practitioners create safety: they invest in their understanding of how systems can break down, and then device strategies that help forestall failure."
  • "What you call 'root cause' is simply the place where you stop looking any further."
  • "Some investigators get so frustrated with the need to present a 'probable cause' that they simply pick the last technical event that, if removed, could have prevented the mishap from occurring.

Related reading:
John Allspaw - "Each Necessary but Only Jointly Sufficient"

Vulture Culture fucked around with this message at 08:24 on Jun 4, 2015

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Chapter 10: What is Your Accident Model?
There are more or less three models for accidents. The first is the sequence-of-events model, which views the situation as a series of events with a cause-effect relationship that lead up to an eventual failure. In this model, accidents may be prevented by removing one link from the chain or by inserting a barrier between any two dominoes. This can be useful for modeling clear technical cause-effect relationships and explaining how failures cascade. This perspective is, however, too linear and too narrow in focus to capture organizational contributions. Additionally, the starting point is often completely arbitrary, since earlier events can always be added. Dekker reminds us that it is critical to understand the ways that entire parts of a system can contribute to system failure in different circumstances.

The second is the epidemiological model, which views accidents as being related to latent failures which hide in every aspect of the system. This is often an improvement over the sequence-of-events model, because it provides opportunities to explain how organizational pressure factored into an accident. This is also a problematic model, because after the fact, nearly everything within the organization can be viewed as a latent failure (consider corporate post-mortems in which everyone is pointing fingers at one another). Compartmentalizing these factors into linear layers of defense, as in the "swiss cheese" analogy, may not produce an accurate model of what makes a system risky or safe.

The third is the systemic model which sees accidents as coming from interactions between components and processes, rather than within them. We cannot use failures to explain failure (turtles all the way down); we must instead understand why those decisions were viewed as normal or acceptable at the time. Systems models build on two ideas: that safety is emergent, and is not something inherent to its constituent parts, and that control over processes and designs is based on past (often incorrect, in retrospect) ideas over how these parts interact. System accidents occur not because of failures in these constituent parts, but because during development, design, and operation, there is insufficient control over the constraints which build upon each other to keep these systems safe. These controls must be dynamic in order to be effective in circumstances that are constantly evolving.

Choice quotes:
  • "The problem with the linear thinking behind sequence-of-events models is that it is easily outrun by the real complexity of real systems."
  • "...Looking for causes in a sequence of events is a bit like a drunk outside in the night, looking for his housekeys. He looks for the keys not where he lost them, but in the light of the streetlamp. That is, after all, where the light is better."
  • "The challenge is to explain why people gradually come to see deviant behavior or system performance as normal or acceptable, not judge it deviant from the outside and hindsight."
  • "Systemic models see accidents as a by-product of the normal functioning of the system, not the result of something breaking down or failing inside of that system."

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Chapter 11: Human Factors Data
This is a really short, really dense chapter. Where previous chapters have excessively focused on unlearning bad habits -- in other words, teaching how not to conduct failure analysis -- at this point the book starts to dive pretty deep into things you should be doing to get at the data and information you need to inform yourself on contributing factors to the accidents you're studying. Human factors is about "how features of people's tools and tasks and working environment systematically influence human performance." In this chapter, Dekker looks at two sources of this data: debriefings of participants and recordings of performance parameters. (As technologists, we're intimately familiar with the latter; typically, not so much with the former.)

The goals of a debriefing are to reconstruct the situation that each person found themselves in and to obtain their points of view. However, human memory is imperfect. Memories are not photographic and cannot be recalled in perfect chronological order. Counterintuitively, it also tends to order and structure events more than they were (see the sequence of events model from last chapter). These memories are a tangled web that influence the recall of each other, so a person may not be able to separate back what they did or didn't know or notice at a certain point in the situation. To avoid distortions, Dekker posts a debriefing order, paraphrased from researcher Gary Klein, and re-paraphrased by me:

  1. Have participants tell the story from their point of view, but do not provide them with any outside information which might lead their memory and impact the way they recall the situation
  2. Tell the story back to them to ensure you understood it the same way the participant understood it
  3. With participants, identify what you and they consider to be critical moments in the story
  4. Rebuild the situation to them, and attempt to fill the gaps, possibly by showing replays or data that does not fit their description of events

At each of the critical moments, try to determine which cues they noticed, what knowledge was used as they dealt with the situation (especially of past experiences in similar situations), what they expected to happen, what options they felt they had, and how outside forces impacted their understanding or decision-making in the situation. As an investigator, you should expect the accounts to be inconsistent, even multiple accounts from the same person given at multiple times. These inconsistencies and disagreements should be noted in your incident report. Make explicit which ones you chose to incorporate as canon and why. These disagreements are not impairments, but additional human factors data that may point to differing priorities of people inside the situation.

We always want more data. However, our ability to make sense of this data is limited. While the data is objective (as long as it's correct), people's behavior in these settings is always more complex and nuanced than the corresponding data. We must combine the data with understandings of people's actions to properly grasp the situation. Much of people's work involves interacting with systems which automate away many manual or repetitive processes. Because many errors begin at the interface between human and machine, this is one of the most crucial places to record data on what those interactions were. This is often not adequately done. As a result, we must interpolate the different forms of information available to us.

Adbot
ADBOT LOVES YOU

Smrtz
May 26, 2015
The current book is too expensive for me. How much is left of it before a new book is started?

  • Locked thread