Identifying Uncertainty

Uncertainty is often extraordinarily difficult to grapple with. Is your crush requited? Are you going to get the job? Will you catch the bus? Not having answers to these questions can be utterly terrifying, paralyzing you against taking action and undermining your self confidence. In fact, not knowing is usually much worse than being sure of the worst outcome. He doesn’t like me back? OK, you can move on. Not getting the job? Alright, time to shift your attention to your other applications. Going to miss the bus? Well, maybe shoot a quick email to your boss and try to get some work done from home before the next one.

I find this to be especially apparent in certain kinds of scary movies and TV shows. A mysterious, unseen big evil is often much more chilling than a really big scary monster. The impact of The First in Buffy was significantly lessened when the red-eyed horned form was revealed. The Beast in Doctor Who had my blood pumping until his big red demon form was finally shown. And I think the general conceit of the bad guy hiding in the shadows is popular in part because it leaves us uncertain of just what he’s about.

In my experience, the difficulty seems to stem from lack of causal factors to leverage your choices around. When I know how something actually is/works, even if that actual nature is detrimental, I can use those specifics in how I act. When I don’t, though, I don’t know how to plan, how to react, because I don’t know what I’m reacting to, so I get all of the fear/anxiety/whatever without any of the confidence or acceptance of knowing what I will do. And my current general comfort with uncertainty stems in large part from my response to it, which is to identify it, not just in the sense of noting “I am uncertain” but in the sense of giving my uncertainty a specific identity, a specific shape.

One way I do this is to imagine the possible outcomes. Don’t know if I should go to a party when I’m overwhelmed with things I need to get done? Well, if I stay home, I’ll miss out on the fun things that happen and be less socially fulfilled than I’d like, but I can get some work done and get good sleep. If I go, I might feel guilty and have a lot to do over the weekend, but I’ll see all the people I like and have a blast. Faced with those specific alternatives, it’s easy for me to see what I might do in each situation and what I might do to mitigate some of the problems and a lot easier to figure out what it is I want.

Sometimes, though, the uncertainty is at a level where envisioning the outcomes is difficult or impossible (known unknown unknowns, if you will). In these cases, I find it really helpful to focus on the fact that at some point the uncertainty will become resolved. I may not know what specifically to plan for, but I do know that I have good skills for dealing with a wide variety of situations and have reason to consider myself adaptable. I may be uncertain about X, but I’m not uncertain about uncertainty: I know what causes it, how it affects me, and how it can change. And knowing that, I can feel confident that I will be able to make good choices when it becomes important to (especially since uncertain things tend to become clearer just when they become important!).

These approaches have been extraordinarily helpful to me in dealing with not knowing what I might want to know. What has worked for you?

Developing Aesthetic Fluency

Over recent month’s, I’ve been increasingly dissatisfied with my relationship to artistic and aesthetic concerns. I read fiction, watch TV and movies, listen to music, and occasionally take time to appreciate photography, painting, theatre, and dance, and I consider those things important parts of my life. But I think for the most part (with partial exceptions for literature and cinematography) I lack a sophisticated understanding of how the art I consume functions, what is good or bad about it, what it is trying to do, etc. I do have preferences, but I often can’t describe or predict them, and I suspect much of what I don’t like is largely due to lack of understanding and that a more involved and nuanced approach would enrich my experiences across the board.

When we were in school at the University of Rochester, Alyssa and I were both taking voice lessons for credit at the Eastman School of Music. One of the requirements was to attend a certain number of performances/events and do a brief write-up on them. I don’t remember many of the specific details, but we decided to go to a master’s thesis presentation on some classical composer together. The presentation started out by grounding us in the composer’s historical context and went on to describing what he was trying to do with a specific piece in particular, with a lot of references both to specific technical aspects and to overall structure and context in his larger body of work. I had never really appreciated classical music, but with the framing provided by the lecture the piece he ultimately played was simply breathtaking. The intellectual understanding significantly enriched and added to the emotional and sensational aspects of the experience, and I can’t remember ever feeling anything like it.

I think the first step I want to take toward making experiences like that more a part of my life is to start gaining an understanding of how it is people talk about and conceptualize various forms of art. I want to know the words for little technical details, understand the kinds of structures possible and what they’re trying to achieve, be able to describe various components of a work of art and how they come together in language that is clear to me. One possible operationalization of this goal is to be able to read a professional critique of work in a particular field and understand what they’re saying and how it follows, even if I don’t agree or am unable to recreate that level of analysis myself.

So, dear readers: Do you have any recommended resources (books, articles, videos, sequences thereof, whatever) for gaining a kind of “conceptual competency” in an aesthetic domain you’re especially interested in? I’m not particular at this point, really any domain will do to start out. Please do let me know!

Toward Post-Salbianism

OK, since this is my first post since Spelunk 04!1, let me be clear that we will be respecting GlassWave’s request to abstain from public speculation here. Whatever really happened there, GlassWave’s always been a decent dude and he’s promised us a writeup, so we’ll wait.

So before I get into this, I should explain why I have the link I’m about to share and comment on in the first place. Though I’m one of the few who came upon CC as an adult, I first binged the whole series years ago. It never occurred to me that there might be a community built around it, though, until I offhandedly mentioned I was starting a re-read in a thread on the RPGamer forums (yep, I’m one of those too). A friend of mine there, Nostalgebraist, asked if I was a member of the Cafe, and well I’ve spent basically all my free time there since. I didn’t know this until recently, but it turns out Nost knew about the Cafe because he’s good friends with GlassWave, and in addition to being an awesome guy he’s a really good writer, so GlassWave has been asking him for help editing his writeup as a sort of completely disinterested third party eye.

Everyone reading this already knows that I have this intense love-hate relationship going on with CC2 and the Cafe. On the one hand, it’s always been clear to me that LS’s moral framework is on to something big and important here, but he gets close enough that where he’s off the mark it’s much more dissonant than it would have been if he were just plain wrong. You’ll all be completely surprised, I’m sure, to learn that I’ve never needed CC to talk on and on about my ethical ideas, and Nost has been good enough to listen to my spiels on more than one occasion. So when GlassWave showed him this Salby journal entry, he knew I’d be dying to see it.

Now, stop here and read this. Seriously, none of this is going to make any sense without it.

Done? Trippy, right? Now, I have no idea what GlassWave meant with that cryptic “we’re all Salbians now, anti-Salbianism is obsolete” comment (and I’m not going to guess), but this entry is the last piece I needed to crystallize my own understanding of what Salby was going for, how the other Cafe patrons have been engaging with his canon, and where I think we should be going. And in this sense, GlassWave is absolutely right: there’s nothing left for anti-Salbianism, because Salby was right. But we’re not stuck with Salbianism either, because Salby didn’t go far enough. And thus the title of this post.

Let’s be clear: Mundum’s responsibilities are never ending, can’t be overridden by God nor man, and there is no heaven or other reward outside of Mundum itself. But if that’s true of our responsibilities, of right and wrong, shouldn’t it also be true of our approach toward them? As the cherub and Sally look down on the low men with their laughing unconcern for DEFINITE WRONGNESS, mightn’t we also look down on their pure seriousness? After all, if Mundum is all there is and all there ever could be, then we should not face that inevitability grimly, we should embrace it wholeheartedly. Keep the unending vigil, have care for the consequences of your actions however far-reaching, but do so with joy, not because you may gain some higher plane or fix the world, but because in doing so you thereby inherit Mundum, which of course is where you live.

To address the obvious objection, I’m not falling into the trap of reducing responsibility to mere desire. Heeding Mundum is not always pleasurable and rarely easy, and frankly more often looks like Sally and Charles having to leave Tom behind in Regained than like the simple cleanup in ATT. I don’t object to the nature of the requirements LS put on our beloved heroes (which is why I’ve just never been able to get on board with any of the “the gang takes a break and has fun” fic), just to their outlook on them.

I have no idea what else will be uncovered in the coming days and weeks, and so can’t make any predictions until GlassWave is done and the gory details are all laid out. But if I’m right, we at the Cafe still have work to do, and I hope this post can be a first step on that new path.

1: If you’ve been stuck in the plains lately, this is my favorite writeup of what’s known about Spelunk 04! so far.
2: I’ve never read TNC, which I now really regret and will remedy as soon as the Spelunk 04! stuff clears up. I burned myself once, ignoring all the warnings against the Buffy the Vampire Slayer movie and thinking it couldn’t be that bad, so when I heard the repeated cry of DGITC I heeded it.

Use-after-free bug in Maged M. Michael and Michael L. Scott’s non-blocking concurrent queue algorithm

Note: I’ve gotten a response from one of the authors of the post.

Google results for lock-free queue algorithms frequently point to Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms (pdf), whose pseudocode is available online. When I read the algorithm, I was surprised to discover a use-after-free bug not mentioned anywhere I could find!

Essentially, the problem is that Tail.ptr can’t be dereferenced without first loading Tail, and dequeue frees Head.ptr. If the the queue is empty at line E5, then tail == Head since when the queue is empty Tail == Head. If, on other threads, a single enqueue followed by a single dequeue occurs before line E6, then tail.ptr will be freed because dequeue frees head.ptr, head == Head, and tail == Head. Then line E6 will proceed to dereference it.

I wanted to be sure I was reading this right, so I implemented the algorithm with one modification to enqueue: After loading Tail into tail at line E5, if a thread is marked as “slow” it first notifies a condition variable that it has loaded tail and then blocks on that condition variable. Using that modified implementation, the program consists of two threads. The first thread waits for a notification that the second has loaded tail, then proceeds to enqueue and dequeue an item, then notifies the second that it can continue, then joins with the second thread an exits. The second thread marks itself slow and enqueues a single item and exits.

Here’s the whole program in C++11, with comments for anything deviating from a straightforward translation of the pseudocode. Lines which correspond to numbered lines in the pseudocode are also marked:

#include <condition_variable>
#include <mutex>
#include <atomic>
#include <thread>

// Am I the slow thread?
thread_local auto is_slow_thread = bool{false};

// Is the slow thread waiting yet?
auto slow_thread_waiting = bool{false};

// Has the node been freed yet?
auto node_freed = bool{false};

// Used for inter-thread signalling
std::condition_variable cond{};
// Mutex for cond
std::mutex cond_mutex{};

// Implementation of the Michael-Scott algorithm
template <typename T> class queue_t {
	struct node_t;
	// Explicitly aligned due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65147: gcc should automatically align std::atomic<pointer_t> on 16-byte boundary but doesn't (until 5.1)
	struct alignas(16) pointer_t {
		node_t* ptr;
		unsigned int count;
		// A zero-initialized pointer_t
		// I'm pretty sure we don't actually need to initialize count to 0 here given how these are used, but it can't hurt.
		pointer_t() noexcept : ptr{nullptr}, count{0} {}
		// A pointer_t pointing to a specific node
		pointer_t(node_t* ptr) : ptr{ptr}, count{0} {}
		// A pointer_t pointing to a specific node with a specific count
		pointer_t(node_t* ptr, unsigned int count) : ptr{ptr}, count{count} {}
		// bitwise-compare two pointer_ts
		bool operator ==(const pointer_t & other) const {
			return ptr == other.ptr && count == other.count;
		}
	};
	struct node_t {
		T value;
		// We're going to do atomic ops on next
		std::atomic<pointer_t> next;
		// A dummy node, next is initialized with a zero-initialized ptr
		node_t() : next{pointer_t{}} {}
		// A node filled with a given value, next is initialized with a zero-initialized ptr
		node_t(T value) : value(value), next{pointer_t{}} {}
	};

	// We're going to do atomic ops on Head
	std::atomic<pointer_t> Head;
	// We're going to do atomic ops on Tail
	std::atomic<pointer_t> Tail;

public:
	queue_t() : Head{new node_t{}}, Tail{Head.load().ptr} {}

	void enqueue(T value) {
		// Node is initialized in ctor, so three lines in one
		auto node = new node_t{value}; // E1, E2, E3
		decltype(Tail.load()) tail;
		while (true) { // E4
			tail = Tail.load(); // E5
			// If we're the slow thread, we wait until the node we just loaded is freed.
			if (is_slow_thread) {
				{
					std::lock_guard<std::mutex> lock{cond_mutex};
					slow_thread_waiting = true;
				}
				// Let the main thread know we're waiting
				cond.notify_one();
				auto lock = std::unique_lock<std::mutex>{cond_mutex};
				// Wait until the main thread tells us the node is freed.
				cond.wait(lock, []{ return node_freed; });
			}
			// Use-after-free here in slow thread!
			auto next = tail.ptr->next.load(); // E6
			if (tail == Tail.load()) { // E7
				if (!next.ptr) { // E8
					if (tail.ptr->next.compare_exchange_weak(next, pointer_t{node, next.count + 1})) { // E9
						break; // E10
					} // E11
				} else { // E12
					Tail.compare_exchange_weak(tail, pointer_t{next.ptr, tail.count + 1}); // E13
				} // E14
			} // E15
		} // E16

		Tail.compare_exchange_weak(tail, pointer_t{node, tail.count + 1}); // E17
	}

	bool dequeue(T* pvalue) {
		decltype(Head.load()) head;
		while (true) { // D1
			head = Head.load(); // D2
			auto tail = Tail.load(); // D3
			auto next = head.ptr->next.load(); // D4
			if (head == Head.load()) { // D5
				if (head.ptr == tail.ptr) { // D6
					if (!next.ptr) { // D7
						return false; // D8
					} // D9
					Tail.compare_exchange_weak(tail, pointer_t{next.ptr, tail.count + 1}); // D10
				} else { // D11
					*pvalue = next.ptr->value; // D12
					if (Head.compare_exchange_weak(head, pointer_t{next.ptr, head.count + 1})) { // D13
						break; // D14
					} // D15
				} // D16
			} // D17
		} // D18
		delete head.ptr; // D19
		return true; // D20
	}
};

// Empty struct to fill our queue with
struct empty {};

// Our queue
queue_t<empty> queue{};

// The slow thread
void slow_thread() {
	// Set that we're the slow thread
	is_slow_thread = true;
	// Enqueue something
	queue.enqueue(empty{});
};

// The main thread
int main() {
	// Launch the slow thread
	auto slow = std::thread{slow_thread};
	{
		auto lock = std::unique_lock<std::mutex>{cond_mutex};
		// Wait until the slow thread is waiting
		cond.wait(lock, []{ return slow_thread_waiting; });
	}
	// Enqueue something
	queue.enqueue(empty{});
	empty ref;
	// Dequeue something
	queue.dequeue(&ref);
	{
		std::lock_guard<std::mutex> lock{cond_mutex};
		node_freed = true;
	}
	// Tell the slow thread we've freed the node
	cond.notify_one();
	// Wait for the slow thread to finish
	slow.join();
	return 0;
}

I compiled this with gcc 4.8.4, using the following command line (the -mcx16 is needed to do atomic ops on the >1 word pointer_t):

g++ -std=c++11 michael-scott.cc -o michael-scott -mcx16 -lpthread -ggdb -O0

Finally, using valgrind 3.10.1 (note the Address 0x5c0b058 is 24 bytes inside a block of size 32 free’d):


$ valgrind ./michael-scott
==12588== Memcheck, a memory error detector
==12588== Copyright (C) 2002-2013, and GNU GPL’d, by Julian Seward et al.
==12588== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==12588== Command: ./michael-scott
==12588==
==12588== Thread 2:
==12588== Invalid read of size 8
==12588== at 0x401CEE: std::atomic::pointer_t>::load(std::memory_order) const (atomic:209)
==12588== by 0x4017B4: queue_t::enqueue(empty) (michael-scott.cc:76)
==12588== by 0x4011BB: slow_thread() (michael-scott.cc:127)
==12588== by 0x402EB8: void std::_Bind_simple::_M_invoke<>(std::_Index_tuple<>) (functional:1732)
==12588== by 0x402E12: std::_Bind_simple::operator()() (functional:1720)
==12588== by 0x402DAB: std::thread::_Impl >::_M_run() (thread:115)
==12588== by 0x50FF7AF: ??? (in /nix/store/6vz6baw7wc26bp2c2i2lpip1z9yvcw0c-gcc-4.8.4/lib/libstdc++.so.6.0.19)
==12588== by 0x4E3A483: start_thread (in /nix/store/6k9z1sfl7kghmagwd205k3i81pbcw57s-glibc-2.21/lib/libpthread-2.21.so)
==12588== by 0x595204C: clone (in /nix/store/6k9z1sfl7kghmagwd205k3i81pbcw57s-glibc-2.21/lib/libc-2.21.so)
==12588== Address 0x5c0b058 is 24 bytes inside a block of size 32 free’d
==12588== at 0x4C290B1: operator delete(void*) (in /nix/store/rgxnhg1wpqzvjslyzk47z3www5clfc0l-valgrind-3.10.1/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12588== by 0x401BE6: queue_t::dequeue(empty*) (michael-scott.cc:111)
==12588== by 0x40123A: main (michael-scott.cc:143)
==12588==
==12588==
==12588== HEAP SUMMARY:
==12588== in use at exit: 64 bytes in 2 blocks
==12588== total heap usage: 5 allocs, 3 frees, 456 bytes allocated
==12588==
==12588== LEAK SUMMARY:
==12588== definitely lost: 0 bytes in 0 blocks
==12588== indirectly lost: 0 bytes in 0 blocks
==12588== possibly lost: 0 bytes in 0 blocks
==12588== still reachable: 64 bytes in 2 blocks
==12588== suppressed: 0 bytes in 0 blocks
==12588== Rerun with –leak-check=full to see details of leaked memory
==12588==
==12588== For counts of detected and suppressed errors, rerun with: -v
==12588== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 1 from 1)

So, there you have it: Don’t use an unmodified Michael-Scott queue when doing manual memory management!

Update 1

I heard back from one of the authors of the paper. At the time of the paper, it was acknowledged that releasing memory for general use/back to the OS was still an open problem. The free in the algorithm is meant to represent a function putting the node back on to a locally-maintained special-use free list and not the partner to malloc. This is mentioned briefly in the paper (“We use Treiber’s simple and efficient non-blocking stack algorithm to implement a non-blocking free list.”), but I didn’t realize that implied the memory wouldn’t be used for anything else. So under those circumstances, this algorithm works.

He also pointed me to his more recent paper on hazard pointers (pdf), which provides a general means of truly releasing memory for general use in lock-free or even wait-free algorithms, and shows a modification of the Michael-Scott queue that’s safe to use with general use memory allocation/deallocation.

A Small Step with Big Implications

I have a post planned where I go into detail about the work I’ve put in over the past 5 years (especially in therapy) to build better habits and attitudes around productive work. For now, though, I just want to share a small victory that I feel exemplifies the progress I’ve made and what I hope, based on the past year or so, will be my new normal.

Several ATLOSCons ago, I gave two talks that I didn’t prepare for, and they were frankly terrible. I knew it at the time, and after getting feedback on the talk I decided I wouldn’t propose another one unless I had already written up a full outline for the talk. I just submitted my first class proposal, and will hopefully be leading a discussion group this May about being an Objectivist in open source software communities.

On the surface, this doesn’t seem like all that big of a deal. After all, in all that time I’ve been building a good life for myself, achieving a lot of planned goals and doing a lot of useful productive work, much of which was much harder than preparing this talk. So why is this special?

  • Proposing this class was not directly necessary for any of my longer term goals. It didn’t help me advance in my career, build my home, etc. I wanted to do it, and I think presenting will add to my life, but I could have easily decided not to with no direct consequences or even a feeling of having let myself down.
  • I had to break up the task into chunks worked on over time, with individual chunks not being trivial or busywork. I did not save it all until the last minute, I did not scramble, I did not half-ass any step.
  • My personal standards were higher than my requirements, and I still met them. I didn’t have to do any brainstorming or research, and certainly didn’t have to write up an outline, just to submit the proposal. I could have easily skipped those steps and told myself I’d finish them before the talk (and I might have been right), but I kept to my own goals.
  • I didn’t happen to naturally fall into a place of intense focus or productivity for any of the work. I made a plan and decided when I wanted to work on each part, and when the time came I had to overcome inertia and a desire to put things off. I did so, and did so without making myself miserable, finding a way to value the work in the moment.
  • I’ve had a lot going on since deciding to give the proposal a shot, including traveling for a funeral and two weeks on an overnight shift. I could have very easily decided not to do it this year, and have been perfectly reasonable to do so. And I didn’t let it add to my stress and overall it made my month better

And the best thing about all that? It’s about how I reasonably expected things to go, based on the progress I’ve made. I wasn’t certain, but I would have been more surprised if I hadn’t gotten everything finished than if I had. So, yeah, it seems small, and in the scheme of things it is, but I really feel like I will be able to look back on this little achievement as a sign of a new phase in this area of my life.

Planning a Social Transition

For nearly a decade now, a huge proportion of my social energy has been directed toward constantly-connected online social networks. On a few occasions in that stretch I’ve taken breaks as part of an attempt to ameliorate my procrastination, but they have always been temporary from the start. Now, though, I’m going to try to make a permanent shift toward much more intentional and intimate forms of social interaction.

First, a bit about the virtues of social networks. Outside of family, there are about three people I consider important in my life that I didn’t meet through some sort of online group or other. I’ve had innumerable valuable experiences wholly on social networks, and would not at all be the person I am today without them. By lessening my time there, I am sure I will miss out on awesome ideas, people, and experiences. And, while this doesn’t apply very much to me, social networks are an excellent way for people who dislike or struggle with traditional social interaction to still be social overall. Given where I am in my life now, though, I think it’s time for me to try something else.

My time online is all-encompassing and automatic: My phone is always connected to google and facebook chats. I get notifications from tumblr and facebook on my phone. When I’m at my computer I always have a tumblr and facebook tab open and regularly refresh them, and I often am engrossed in the phone apps when I’m out. The end result is that I am constantly interacting whether I actually want to or not, my time is spent more on people who are regular posters at the expense of people who would provide more quality discussion, and I am constantly distracted when I want to be focusing.

Moreover, for me online multi-recipient broadcast communication is missing a level of richness and intimacy that I’ve really come to value in relationships. When I post something on tumblr or facebook, I have no idea if anyone will read it or care, and I end up shaping my communication for a more general audience. If I have an unplanned gchat convo while working, it is usually shallow, distracted, and ephemeral. And I have always felt like something vital was missing when I can’t see, touch, or most importantly go out and do things with people I’m interacting with.

And the last bit, that finally pushed me over the edge, is fairly peculiar to me but is still vital. I have a strong preference for intellectual relationships, where discussion of ideas plays a central role in the interactions. For whatever reason, the people I meet online who might meet this criterion tend to be associated with Online Intellectual Movements that seem to all share some core awful characteristics with each other. So far I’ve interacted with the online Objectivist movement, a portion of the online feminist movement, and two or three portions of the online rationalist/Less Wrong movement (two of which I affectionately refer to in my head as ‘weird twitter’ and ‘bonobo rationalist tumblr’, respectively). Though I’ve met some of my closest friends in these online groups, and though I think many of the ideas they’re centered around are extremely important and true, they’ve all tended toward an overabundance of 101-level discussion, a pervasive ingroup/outgroup mentality invading most discussions, and an implicit (or sometimes explicit) sense that having the right ideas on certain core issues makes you automatically moral and always right (and conversely if you have the wrong ones). This is extremely frustrating, both because many of those behaviors are explicitly opposed the core ideas the movements are centered around, and because it either doesn’t happen or is much more avoidable in person (even when it’s the same people involved!). Online intellectualism so far only beats out in-person intellectualism in quantity, and I expect once I make serious efforts to strengthen my existing relationships and form new ones locally even that will disappear.

So in practical terms, my plans are:

  • Log on to chat programs only when I have a pre-planned chat, or if I have something specific and delimited to share with someone (text messaging treated similarly, though I can’t log out)
  • Scale back to checking facebook and tumblr once a day, reevaluating after a few weeks
  • Aggregate some of my favorite long-form writers as well as some generic news sources into my feed reader, again checked once a day
  • Continue using this blog for long-form posts
  • Continue treating email as I have (always respond, ideally within a day or two)
  • Continue treating phone calls as I have (answered whenever reasonable, voicemails responded to ASAP)
  • Work harder to cultivate one-on-one relationships, both with long-distance friends I already have and with new local friends I haven’t yet found

If you want to still talk, I’m sure I’d love to! Just shoot me an email (domain shealevy.com, username shea) and we can figure out a way to keep in contact. I know this will probably mean a lot of my relationships will fade, and I’m sorry about that, but I think on net this will be much better for me.

RESPECT THE NATURAL ORDER

Among the rationalist-types I follow on tumblr, there is a regularly expressed sentiment that is best exemplified by the common slogan “FUCK THE NATURAL ORDER“. If I understand correctly, a mild form of the sentiment can be stated explicitly as something like:

The world as it currently is (or especially as it was “before the use of technology”, if such a time can be said to exist) is not inherently worth preserving in its current state. There are many events that can be considered “natural” that can and should be reduced or eliminated by the use of technology, with sickness and death being primary examples. Any argument that we should value something just because it is “natural” should be rejected out of hand, as should any argument that technological solutions to a given problem should discarded just because they are technological.

I understand the sentiment and why it’s valuable, I agree with most of the underlying premises, and I certainly don’t fault anyone for holding or expressing it. But it really doesn’t work for me1.

In gut-feeling terms, my objection to “FUCK THE NATURAL ORDER” is: “but I live there!”. A bit more seriously, I think it comes down to two interrelated ideas:

  • There is no solution to problems caused by the natural state of affairs that can come from outside of the natural state of affairs.
  • There is no agency underlying those problems, they just are. There is no Moloch trying to corrupt me into a multi-polar trap, no hooded skeleton waiting to take me away at the end of my days (or causing them).

Now, I don’t think that people really believe otherwise2. But framing things in contradiction to those ideas for rhetorical effect gets in the way of me processing/addressing events in the way I’d like. When a loved one dies, I want to be sad at the loss of the value they provided, not thinking about how terrible death is for existing. When I want to help solve a problem stemming from “the natural order”, I want to focus on solutions available to me given my current real context, not on a vague idea of overthrowing the natural order of affairs or slaying some evil demon (In this context, the slogan “nature, to be commanded, must be obeyed”3 fits me better). And thinking of unconscious natural forces as agentic makes me want to give them moral consideration and to understand their value hierarchy to leverage it to the outcome I want4. And I don’t want to ever reach an emotional state of ruthless joy in the destruction of an agent, no matter how positive the consequences of that destruction, whereas I think that attitude is exactly appropriate toward reshaping natural affairs to our needs.

Ultimately, I’m posting this just to get it out there, both to point out to my friends that there’s another way of looking at things and to reinforce to myself the validity and distinction of my chosen perspective. I certainly don’t expect anyone to change how they look at things, nor do I want to make this out to be a bigger deal than it is (which is to say, just a minor annoyance of having to switch perspectives).

1: I want to stress this point: This post is about my personal relationship with the sentiment, why it doesn’t work for me given my personality and perspective on the world, and is not in any way meant to be commentary on anyone else or their relationship to the sentiment.
2: That being said, I do think some people act like they mostly believe otherwise, often in a way that starts out as an obviously self-aware “this is false but useful/funny/ironic to act like it’s true” but morphs into a sort of alief over time.
3: Yes, Bacon’s dictum does imply a sort of agency to Nature. I have no idea why this doesn’t bother me.
4: I wonder if part of the difference between rationalists and myself is not that they treat unconscious natural events as if they were agents, but that they treat agents as if they were unconscious natural events.

Justice as a Personal Virtue

Your wedding photographer is friendly and conscientious. On the day of the ceremony, they capture all of the important moments without being at all intrusive, they make the formals efficient and painless, and they manage your difficult family members without breaking a sweat. The delivered photos are amazing, they’ve really brought out the best in everyone there. You give them a generous tip, recommend them to all of your friends, and look them up again when it’s time for your first newborn photo shoot.

Or…

Your wedding photographer is friendly and conscientious. On the day of the ceremony, they capture all of the important moments without being at all intrusive, they make the formals efficient and painless, and they manage your difficult family members without breaking a sweat. The delivered photos are amazing, they’ve really brought out the best in everyone there. You don’t tip, and you forget all about them once you’ve received your photos.

Or…

Your wedding photographer is abrasive and forgetful. On the day of the ceremony, they arrive late, they cut off half of the guests’ views of the ceremony, they take an hour and a half to get through your formals (leaving your other guests waiting at the reception), and they snap rudely at your obnoxious uncle. The delivered photos are grainy and poorly lit, and somehow made your spouse look disheveled and sick despite you knowing they were glamorous the day of. You give them a generous tip, recommend them to all of your friends, and look them up again when it’s time for your first newborn photo shoot.

Or…

Your wedding photographer is abrasive and forgetful. On the day of the ceremony, they arrive late, they cut off half of the guests’ views of the ceremony, they take an hour and a half to get through your formals (leaving your other guests waiting at the reception), and they snap rudely at your obnoxious uncle. The delivered photos are grainy and poorly lit, and somehow made your spouse look disheveled and sick despite you knowing they were glamorous the day of. You don’t tip, and you forget all about them once you’ve received your photos.

What consequences do you expect, for yourself, your loved ones, and the photographer, in these scenarios?

You’re all on your own in a new town, and you meet someone at the local PPASSCCATAG meetup. You find out you have several hobbies in common. You mesh well together, feeling like you’ve known them your whole life. They text you regularly, and invite you along to all sorts of fun excursions. When your cat catches triskaidekaphobia, they stand by your side the whole time and make sure you don’t have anything to worry about while you focus on getting the cat better. You let slip about your history of skittle abuse, and they are supportive and nonjudgmental and you’re confident would definitely never out you. You reach out to them regularly, keep them up to date on the latest in your life, invite them to important events, introduce them to your friends from home, and support them in their goals.

Or…

You’re all on your own in a new town, and you meet someone at the local PPASSCCATAG meetup. You find out you have several hobbies in common. You mesh well together, feeling like you’ve known them your whole life. They text you regularly, and invite you along to all sorts of fun excursions. When your cat catches triskaidekaphobia, they stand by your side the whole time and make sure you don’t have anything to worry about while you focus on getting the cat better. You let slip about your history of skittle abuse, and they are supportive and nonjudgmental and you’re confident would definitely never out you. You taper off your response to their messages, stop asking them to do things, choose to spend time with other friends over them, and when they lean on you heavily for some support you kindly let them know that you’re not sure the friendship is at that point and that you’d like some space.

Or…

You’re all on your own in a new town, and you meet someone at the local PPASSCCATAG meetup. You don’t have much in common, but you meet up a few times anyways. You’re constantly frustrated by their attitude and feel like they are speaking a different language half the time. They almost never respond to your texts, and often throw parties without inviting you. When your cat catches triskaidekaphobia, they laugh at you and earnestly suggest you have it put down. You let slip about your history of skittle abuse, and they lecture you about willpower and “accidentally” mention it in front of the parents of the kid you babysit for. You reach out to them regularly, keep them up to date on the latest in your life, invite them to important events, introduce them to your friends from home, and support them in their goals.

Or…

You’re all on your own in a new town, and you meet someone at the local PPASSCCATAG meetup. You don’t have much in common, but you meet up a few times anyways. You’re constantly frustrated by their attitude and feel like they are speaking a different language half the time. They almost never respond to your texts, and often throw parties without inviting you. When your cat catches triskaidekaphobia, they laugh at you and earnestly suggest you have it put down. You let slip about your history of skittle abuse, and they lecture you about willpower and “accidentally” mention it in front of the parents of the kid you babysit for. You taper off your response to their messages, stop asking them to do things, choose to spend time with other friends over them, and when they lean on you heavily for some support you kindly let them know that you’re not sure the friendship is at that point and that you’d like some space.

What consequences do you expect for yourself and your new friend in these scenarios?

Since the main audience of this post is not necessarily familiar with Objectivism, before I go further I want to briefly introduce my (heavily Objectivism-influenced) moral philosophy. In essence, the purpose of morality for me is to be a high-level guide to my choices in order to have a long, flourishing life. As such, while I do think much of what I try to follow would be beneficial for others to follow too, I’m primarily concerned with what I should be doing. Similarly, my primary concern is on the consequences of my actions for my life, with the effect on others’ lives only mattering to the extent they are or are not a value to me. Slightly more concretely, most of my high-level moral principles come in the form of virtues (largely in the Aristotelian sense) that are some perspective on the general idea “pursue the truth about your context and act on it in accordance with your values”. Principles, because they allow me to leverage past experience, avoid repeating cognitive work, and make reliable predictions. Virtues, because I am most reliable when acting on a desirable habit, and because they are how I enact principle. “Pursue the truth and act on it”, because that seems to be the fundamental locus of control I have over my flourishing. I do think this general approach is the best way for most other people to flourish, but I am not as certain about the universalizability of this exact perspective as Rand was.

With that perspective in mind, back to the eight scenarios:

If you recognize (in thought and action) the value the photographer provided you, you and those you care about will be able to enjoy their services again and they will be encouraged and better off as well. If you fail to recognize (in thought or action) the value the photographer provided you, you and your loved ones will miss out on the opportunity to benefit from them again, and they will miss the opportunity to be encouraged for providing it.

If you fail to recognize (in thought or action) the disvalue the photographer provided you, you and your loved ones will have to endure the experience again and they will be encouraged in their choices. If you recognize (in thought and action) the disvalue the photographer provided you, you and your loved ones can cut their losses and they may be less likely to continue in the same vein.

If you recognize (in thought and action) the value your friend offers you, you, your loved ones, and they will be able to benefit from the continued relationship. If you fail to recognize (in thought or action) the value your friend offers you, you will miss out on the opportunity to benefit from them further.

If you fail to recognize (in thought or action) the disvalue your friend offers you, you and your loved ones will continue to be subjected to the problems of the relationship. If you recognize (in thought and action) the disvalue your friend offers you, you can separate them out from your life and avoid the drain they cause.

In general, I think recognizing the value (or lack thereof) provided by others (or yourself) in various contexts and acting accordingly is an extremely important virtue to inculcate, and I think the right name for it is “justice”. In the above, I’ve consciously avoided any mention of law enforcement, which is of course a common referent of “justice”. I do think that a properly run law enforcement system does involve justice in the sense I’ve laid out here, but I don’t think it’s the only or even primary purpose of the system and I definitely think the modern American law enforcement system actively subverts justice and other values, wholesale.

Stop the vaccination false dichotomy

As far as I can tell, discussions about vaccination online are divided firmly into two strictly opposing camps. On the one side, we have the anti-vaxxers, who oppose all vaccination (and often modern medicine all together) on the basis of conspiracy theories, junk “science”, or hysteria about autism. On the other, we have the pro-vaxxers, who extol the unmitigated virtue of vaccines and think we should all automatically follow the recommended vaccination schedules, based on a general respect for science, the positive impact vaccines have had on our culture, and a general sense of interpersonal responsibility. Both sides regularly ridicule, mock, and straw man each other, and any deviation from one side is seen as full-blown commitment to the other.

I have a strong respect for the scientific process and for the huge boons brought by modern medicine. I find the lives saved by, for example, polio eradication nigh miraculous. I have not seen any reason to believe vaccines cause autism, and think the idea of a conscious conspiracy spread across the entire medical community is ridiculous enough to be dismissed out of hand. Yet I also believe that medical decisions are best made with the full context of the patient’s life and values taken into consideration, that the modern medical establishment occasionally falls into one-size-fits-all solutions that are not well-tailored to the individual, and that it’s important to be an informed self-advocate to get the best standard of care. I know that often standard practice reflects only one side of a legitimate scientific debate, and that seeking out second opinions and evaluating the literature first-hand can make all the difference in outcomes. For all medical decisions for myself or my future children, I want to be well-informed and to evaluate the decision based on the full context, including the risks and alternatives, and see no reason why vaccines should be treated any differently.

Where is there room for me in vaccine discussions? Where can I talk about evaluating the side-effects of vaccines without being tarred as an anti-vaxxer who has bought into ableist anti-autism propaganda? Where can I talk about the amazing achievements made possible by vaccinations without being accused of being a brainwashed sheep or a shill? Why must we treat all vaccines as a package deal, to be loved or hated as a whole? Please, make a space for people like me. If you are pro-vaccination, surely you expect a reasonable investigation will find that the benefits vastly outweigh the potential costs and that we will end up vaccinating our children by the normal schedule, right? If you are anti-vaccination, surely you expect we will uncover the enormous risks we are exposing our kids to and avoid vaccines when possible, right?

Coming out, I guess?

Today I tweeted:


This wasn’t meant to be anything significant, but when my dad texted me “Curious to learn more about your latest tweet” I realized some people might not know I’m bisexual1. It’s never been a secret or anything, but it’s only been true2 for a few years and I guess it hasn’t come up with my parents, seeing as I was engaged and am now married3. This isn’t a big deal for me but I realize it might be for some, so I guess this is me letting everyone know.

 

 

 

1: More precisely, pansexual
2: Seriously, there was a specific point two years ago before which I wasn’t attracted to guys and after which I was
3: Happily, I might add. This change had no significant effect on our relationship

Next Page »