2014 St. Louis Children’s Hospital Make Tracks for the Zoo 5K race

Again this year, I’m a bit late with posting the results and information about the 2014 St. Louis Children’s Hospital Make Tracks for the Zoo 5K, but alas, at least it’s coming now. The race was much like last year’s in that it was the same course, start time, et cetera. This year, though, it was much cooler outside. That made for an even better run!

There were fewer runners this year (slipping from 2133 to 1828 [a drop of 305[), but some great contenders! Though my time was improved by 16 seconds (down to 19’28” from my 19’44” last year), I slipped by one spot from 13th to 14th. That just tells me that there were more excellent runners this year even than last year. Below is a screen capture of the top 15 overall, but you can see the full results on ChronoTrack’s event site, which was managed by Big River Race Management.


Click to enlarge

Some of the most impressive times to me were:

Jacksen McNeal – 6-years-old – 31’41”
Joe Barzilai – 100-years-old – 37’49”

When I was 6-years-old, I wasn’t even thinking about running competitively, and I hope that I am still able to walk (let alone run) when I’m 100-years-old!

Again this year, this was an outstanding run, and I hope to break 19′ flat by the time of the race next year.

Keep running, and remember, you’re only in competition with yourself!

Cheers,
Zach

The Mask You Live In – Something terribly destructive that we demand of boys all the time

Gender development is one of my primary foci within the field of Child and Adolescent Psychology, and this video from The Representation Project vividly portrays one of the most destructive demands that we place on young boys—”Be a man!”


The Mask You Live In – Be a Man!

There are wonderful pieces of wisdom from Dr. William Pollack (who wrote an outstanding book [Real Boys] that I’ve ready many, many times), Dr. Judy Chu, and Dr. Niobe Way (who wrote another outstanding book about boys’ emotional interactions called Deep Secrets).

Not only does it automatically assume gender inequality, but it does so in the worst of ways. It puts down females by implicitly suggesting that men are better, stronger, more efficient, or what have you. Further, it contains a message that showing the perfectly normal (and necessary!) human emotions of pain, fear, and the umbrella of empathic concern weaken masculinity. Nothing could be further from the truth!

Abraham Lincoln said that “No man stands so tall as when he stoops to help a child.” That powerful quote is dually applicable in reference to this video. Firstly, it shows that true masculinity is characterised by helping others, and especially those who are unable or less able to help themselves. Secondly, it is a call to action for all of you reading this blog entry: help boys everywhere to grow into a healthy understanding of masculinity. Dispel this myth of masculinity. Teach them to help one another. Teach them to care, even if others laugh at them for doing so. Teach them that fear is equally as important as courage. Teach them that is okay to cry, even in front of others. Then they will truly know what it means to “Be a man.”

|:| Zach |:|

Linux – RHEL 6 / CentOS 6 two NICs in the same subnet, but secondary doesn’t ping

Recently I ran into a problem with RHEL 6 (and any derivatives, like CentOS 6 or Scientific Linux 6) where having two NICs (network interfaces) in the same subnet resulted in strange behaviour. In RHEL ≤5 (or CentOS ≤5), one could have two interfaces with IPs in the same subnet and there weren’t any problems (besides the obvious question of why one would set it up this way instead of just bonding the interfaces). However, in RHEL 6 (or CentOS 6), having two interfaces with IPs in the same subnet results in the primary one pinging but the secondary one not responding.

The cause of this problem is that the rp_filter settings changed between these kernels (2.6.18 in RHEL 5 and 2.6.32 in RHEL 6). In RHEL 5, the rp_filter setting was a boolean where 1 meant that source validation was done by reversed path (as in RFC1812), and 0 meant no source validation. However, in RHEL 6, this setting changed to an integer with the following settings:

*****
0 – No source validation

1 – Strict Reverse Path validation (RFC3704) – Packets are checked against the FIB (Forwarding Information Base), and only the best ones succeed

2 – Loose Reverse Path validation (RFC3704) – Packets are checked against the FIB, but only non-reachable BY ANY INTERFACE will fail
*****

So, though the default setting is still 1, it now has a different meaning. In order to get these two network interfaces with IPs in the same subnet to both respond, I needed to make two changes in /etc/sysctl.conf:

  • Change net.ipv4.conf.default.rp_filter from ‘1’ to ‘2’
  • Add the line net.ipv4.conf.all.rp_filter = 2

To better illustrate the changes, here are the differences:

DEFAULT SETTINGS:
# grep '.rp_filter' /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1

REQUIRED SETTINGS:
# grep '.rp_filter' /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2

====================
Update – 19 April 2017:
(Big thanks to Henry Butterworth for making me aware of this caveat)

In some distributions, changing the global settings for default and/or all is not sufficient. In those cases, you also need to specify the rp_filter setting for each ethernet interface individually. For example, if you have eth0 and eth1 to configure, you will need the following lines in your /etc/sysctl.conf:

net.ipv4.conf.eth0.rp_filter = 2
net.ipv4.conf.eth1.rp_filter = 2
====================

In order to make these changes effective immediately, you can reload the configuration with:

# sysctl -p

Ultimately, the new defaults make it so that the kernel discards packets when the route for outbound traffic differs from the route of incoming traffic. Changing these settings as mentioned above will make the kernel handle those packets like it did before 2.6.32. That way, having two or more interfaces with IPs in the same subnet will function as intended. Also, these changes aren’t limited to just RHEL 6 and derivatives, but also to any distribution with ≥kernel-2.6.32 in which the defaults were not changed.

Cheers,
Zach