Bike Party and the Stupidity of Crowds
Tonight, I had the pleasure of attending the 90s Dance Party Ride, the February ride organized by East Bay Bike Party. This is the first Bike Party ride I've attended since I moved to Oakland, and, to be honest, I wasn't a frequent rider at its South Bay sister, though South Bay Bike Party did sponsor a number of events that were incredibly helpful to my training in 2009.
There's so much I want to like about the Bike Party concept. Large, visible rides...even those that slightly inconvenience automobile traffic...are a critical aspect of bicycle awareness. Bike Party achieves these rides without resorting to the aggressive "biketivism" that has become associated with Critical Mass. Rather than being out to change the world, Bike Party is out to have a party. I think there's a great demonstration made in a bunch of cyclists (who have a right to the road) getting out, going on a ride like they belong there, and using various public and semi-public places to stage short parties. I think it not only emboldens cyclists to take the road and to remember that public spaces belong to them, it also sends a message to those who watch Bike Party that you don't need permission to organize, move, and assemble. These are noble goals in social consciousness and they center around promoting a mode of transport that more people should adopt.
So, why am I not out there every month? Well, it's because somehow Bike Party attracts a kind of stupidity that I can only consider to be a little dangerous, and it always leaves me feeling a bit ambivalent. Every Bike Party ride I've ever attended has seen some good contenders for a Darwin Award. On one occasion, it was someone showing off his bike's suspension by seeing how long he could ride in the middle of the Caltrain tracks (answer-- 30 yards before flipping). On another, it was someone trying to grab a lost bike chain off the ground...while in motion...while turning left...in a busy intersection. On another, it was a fixie rider blowing through a stop sign. Tonight was a particularly spectacular case because it involved bad ideas from multiple parties.
The first player in this ballet of bad ideas was actually a duo. Someone had rigged a long-base trailer to his bike, but instead of hauling cargo on it, he was hauling a passenger. I actually thought it was kinda clever at first...seeing some guy sitting down backwards on a bike trailer. I hadn't considered that being physically unprotected only inches from the road might be a bad idea. Like a chemical reaction screaming for a catalyst, the bike and passenger were themselves perfectly fine and safe on their own. But, of course, this is Bike Party. Ask, and you shall receive...
And, in fact, someone came tearing down the oncoming traffic lane on his BMX bike, attempted to pull a tight turn into the moving pack of bikes, and crashed sideways into the bike right at its trailer hitch. The riders of both bikes took nasty spills, as did the trailer passenger. The trailer's frame cracked apart from the stress of the impact. The instigator of the crash (the guy on the BMX bike) was trying to play this off as "shit happens," and the guy on the trailer bike was having none of that. Things were close to coming to blows. I helped the trailer passenger to the side of the road and tried to find out his condition, but he was strangely slow and confused in his responses. I don't suspect a head injury, because I'd yelled to him several times while he was on the bike and was also not responsive. So, honestly, I suspect he was either very drunk or very high. I also suspect the BMX rider might not have been wholly sober, but I base that only on reckless behavior and the tendency of many Bike Party riders to have a beer before they hit the road.
This makes me really wonder about the effect of a crowd and a seemingly liberated environment on people. Part of the group ride experience is the sense that you're in a pack of bikes large enough that you can feel safe and even feel empowered on the streets. One bike has to dodge cars. Twenty bikes is something for the car to deal with instead. And so, despite the fact that Bike Party posts, and desperately tries to enforce, rules for a safe ride, I see them casually broken. Bikes filling all the lanes. Bikes in oncoming lanes. Bikes running through lights. Texting while riding. Drinking while riding. Riding drunk. Riding high. Riding dangerous or with dangerous equipment. Pulling tricks in traffic or crowds. I've seen all these things, and I've been at a total of four Bike Party rides. The power of festival is that it suspends the rules temporarily, letting people explore an environment from a new, and sometimes forbidden, perspective. But some of those rules exist so that you don't break your ribs, and sadly, in these leaderless or semi-leaderless festival spaces, the poor choices of some end up injuring others or breaking property.
Worse than the sense of safety and liberation is likely the "he did it first" mentality. You see this sort of thing often at red lights. Rather than wait through a red light, someone plows through it and safely crosses. This causes some others to try, and since they're now in the intersection, several more people will believe they're "running blocking" for them and also go. Soon, an entire pack is crossing against the light because it becomes less safe to stop in the middle of the pack than to cross against the light. In this way, bad thinking spreads until a much larger group is now doing it.
What's unfortunate is that there is no effective solution to this problem. The "leaders" of a Bike Party can't really sanction anyone. They desperately encourage others to be responsible and follow the rules of the road, but they aren't listened to. This isn't a formal group...it's just a spontaneous gathering of people...and so there's no way that anyone can do anything about bad behavior other than to take matters in their own hands. This property of spontaneously arising rather than being organized is simultaneously the group's biggest strength and its biggest weakness.
And, indeed, this is a metaphor that can be applied to groups with roughly similar structures. This includes Anonymous and Occupy Oakland.
Let Me Tell You About Oakland
Oakland. This is my city. Really. I own a home here. I pay my property taxes here. I have come to see the parts of my life spent in Tampa and South Florida as just "training wheels" for this city. In a lot of ways, it's where I've been practicing to live. It is, culturally, my city. There's no doubt about it. In the East Bay, people just do everything harder. If Detroit and San Francisco had a lovechild, it'd come out like Oakland, and it'd be every bit the angry, ignored punk that Oakland is.
We have, of course, recently made news over our Occupy Oakland commune, which I have gladly supported for a mixture of reasons. The latest headline is the shooting which happened near a BART station entrance just outside the camp. The police investigation will, ultimately, get to the how and why of it, and hopefully it will yield a suspect. I'm not interested in having the speculative back-and-forth about Occupy Oakland's role in the shooting. It wouldn't surprise me if both the shooter and the victim had spent a few nights in the camp, though. More on that in a second.
What I really want to impress, however, is how this is the sad normalcy for Oakland. The shooting was homicide #101 for the year. If you do the math, that's nearly 10 homicides per month (we've fallen behind the average in November). I had hoped to use a Crimespotting map to show you the year's homicides, but it looks like their system has a hard time mapping a whole year. Instead, I'd like to show you the map of homicides, aggravated assaults, and narcotics arrests for September 2011. I added narcotics not because I have a moral objection to drugs but because, like it or not, the illicit drug trade does tend to provide a geographic anchor for other forms of crime, both as a function of the trade "defending its turf" and as a function of the desperation and out-of-control behavior that drug abuse and addiction bring with them. Just for the heck of it, I cooked up this map for San Francisco for the same month. Kindly note that I actually had to add violent robberies to the map just to put enough red dots on the map to show the geographic overlap easy. The difference in violence between Oakland and San Francisco is enough that I added more crimes to San Francisco's map just to help show the point.
You might also rightly note that violent crime in Oakland seems to not geographically cluster in Oakland like it does in San Francisco. You'd be right. Note that narcotics in Oakland don't really geographically cluster, either. Rather, drug crime and violent crime in Oakland are basically kept in check in the Temescal district, the Rockridge district and various affluent areas in the hills outlying. The rest of Oakland, however, has been, essentially, ceded. It's a nice, even distribution of dope and violence, mostly in the slightly denser regions of the city. East and West Oakland get it worst, but essentially, outside of Temescal, Rockridge and the hills, it's everywhere. This is very, very different from San Francisco, where there's a hub of trouble...the typical "bad part of town."
This underscores the experience of most Oaklanders I know. For the record, I live in the San Pablo/Golden Gate district, not quite in "Oakland proper" but not quite in Rockridge or Temescal. You might consider it a "frontier" zone into the more peaceful and affluent areas. Since moving here in March, there have been three reported shootings in my immediate neighborhood, including one brutal homicide. The neighborhood association email list is frequently used for discussion of local gunfire. Every week, one of us directly sees a violent crime of some form. Extended conversations have taken place regarding how to take action on our rash of burglary, which the Oakland Police Department are powerless to handle. We all know which parts of which blocks are the rough ones, and 50 yards is often all that separates your peaceful home from a violent one. We've even considered trying to pay for private security patrols. There is a single emotional current that underscores the mix of paranoia and dejection I see in my neighbors -- deep down, we all sincerely believe that nobody is capable of keeping our streets safe.
Keep in mind that I am describing the experiences of people living in a residential neighborhood in a relatively peaceful part of the city. I'm not describing life in the more universally working class areas of West and East Oakland. I'm also getting to enjoy this reportage from the vantage point of being pretty white and pretty privileged. I recently heard, at a City Council meeting, that young African American men in Oakland have chance of meeting a violent death comparable to a US soldier on tour in Afghanistan. Any conversation about race in Oakland can't fit inside a blog post, but I still want to acknowledge the reality and drive home the point that I am, in fact, speaking from a much nicer position than a lot of people in Oakland.
This brings around my ultimate feelings about the recent shooting. That someone was shot and killed in downtown draws no shock from me. It's tragic. They're all tragic. There was a homicide in East Oakland that same week, and that was tragic, too. The only thing that seems to make it feel noteworthy is that it didn't happen a little closer to the 19th St BART station, because that's a bit more of a hotspot for dealing and violence. And, at that, only a bit.
If the victim and shooter were both found to have made use of the facilities at the Occupy Oakland camp, I also wouldn't be surprised. Why? My experience, having visited the camp several times, is that a strong nucleus of the camp's community is comprised of the city's homeless. Occupy Oakland is offering them something better than the lives they were living...there's hot food, a bit of a home for yourself, and a chance to participate in a democracy. So, they cling to it rather than to ongoing homelessness or the city's taxed shelter system. With the homeless come the social problems surrounding homelessness, and drug abuse and violence are definitely on that list. The camp is a permeable community...people come and go from it all the time. The question of violence among the city's marginalized, particularly when there's no strong geographic trends in our violent crime, was just one of time.
At best, you can call this a result of Occupy Oakland and not the fault of Occupy Oakland. The fact is that this crime would have been considered second-rate news otherwise. Like I said...few can name the other murder victim from that week. How about the 100 who died already this year? But, finally, the background noise of crime in Oakland is happening somewhere where we all have to talk about it.
This, ultimately, is why I continue my support for Occupy Oakland. I have no illusions that the commune in downtown will somehow cause an important national revolution. I am not even sure the Occupy movement is a vehicle for action, though it is certainly a vehicle for bringing light to grievances. I don't really even know that anything can be done at the city level to address the core complaints of the Occupy movement. I'm no longer an earnest twenty-something, and I am not going to quickly buy big ideas about changing the world.
Occupy Oakland is doing something important in Oakland anyway. It's being a powerful irritant. Oakland is a city with very long-lived and deep-seated social problems. We have a city government with no good ideas about how to improve the city, so they instead turn to the old saw of courting industry to move in and "make jobs" (which hostages them to private interests). We have a mayor who, like many mayors before, can't pick a direction and take it. Our redevelopment efforts drank the mid-2000s Kool-Aid and promptly died in the financial crash, making our downtown eerily empty and filled with a background static of crime and homelessness. We have a police department who have so thoroughly alienated the public that they are seen a necessary evil...like a bully you bribe for protection. Worst of all, though, is that Oakland carries with it a spirit of desperation...of wanting to hold on and hope...that creates a culture of deferring our real problems. As long as the homelessness and crime stays scattered enough that it can be put out-of-mind for another day/week/year, then maybe, this time, business as usual will work.
This is where Occupy Oakland has created the biggest irritation. They have, simply by existing, forced a public conversation about Oakland's problems, including the institutional tendency to kick the can down the road. Because of the homeless population in the camp, attempts at dispersing it, unless completely brutal, will only be a temporary measure that will, at best, move the camp to some nearby location. Occupy Oakland has likewise demonstrated its ability to execute a significant public action if it wants to and thus shows the risks of angering the Oakland public. This makes brutal police tactics a very costly thing, and I believe this makes the camp incredibly difficult to move. Because the city chose to lead with a violent police action, Occupy Oakland no longer trusts the city (and why should they), making any potential negotiation nearly impossible.
This, ultimately, makes it difficult to just sweep everything on the rug and get back to business as usual. I have no doubt that the camp is hurting the incomes of a number of businesses downtown, which is pushing them to demand the city council take action against the camp. The city council has a genie that's very difficult to put back in its bottle, and while this plays out, everyone in Oakland, from those who blame the camp to those who support the came, has something to complain about. What they're all complaining about is, essentially, the same thing-- that our city is too weak to deal with the problems that make Occupy Oakland manifest in the first place, and nobody knows how to fix it. As long as the camps exist, they require that we, as a city, address our real problems.
Ultimately, this is why I have supported Occupy Oakland, mostly through material donations and through volunteering a little bit of my time. It's not to advance broad economic justice (though that's important to me). It's because I live in Oakland, I see the problems with Oakland, and I demand that they be considered as real problems and not just something to defer while the city council lures in some jobs with a tax break. We can't just consider our unemployment, homelessness, and crime to be things that are fixed by some gentrification downtown (even if this has been the pet project of multiple administrations). Oakland has a 16% unemployment rate. Bringing in some commercial real estate deals doesn't fix that. It also doesn't fix the police's estrangement from the community, the crime problem, or the racial animosities that simmer beneath the surface.
And, for the record, I don't personally have amazing solutions to this problem. I live in a representative democracy, where we hire people to solve the problems. What I want is that my hired officials actually admit the real problem and lead the public process to addressing it. Occupy Oakland's existence keeps the chips on the table. That's why I want it there.
Police beatdown or peaceful community growth, nobody does it like the East Bay. All in.
On Creativity
I have a confession to make. For most of my life, I have really not identified as being a creative person. This might seem like a funny idea if you know me, because I do tend to generate some rather off-the-wall notions, but I generally haven't really seen myself as someone who creates new, novel, and beautiful things. I barely even identify as being inventive, since I feel like I still haven't really generated the sort of amazing ideas that I might be proud to pitch for a start-up. In a practical sense, I do make tactical solutions to problems, but I generally haven't been the sort to solve problems people don't yet know they have.
What's particularly funny about this is that I do get praise for things like my cooking. I do have a distinctive style when I cook and it continues to evolve as I gain more life experience, but I've never really considered my cooking a creative process. Some of this, I suspect has to do with the fact that I've been cooking for myself since I was old enough to pull a step stool up to the stove, and so I regard cooking the way I regard reading or programming a computer-- I have to strain to find a memory in my life where I didn't already have these skills. When you don't know that you're applying a skill, it's hard to appreciate that you're doing it.
But there's actually a broader reason why I haven't identified as creative, and that reason is because I have, for most of my life, bought into a series of cultural myths about what creativity is. These have actually been heavily reinforced by the artistic skills which I was formally taught. These are ideas about creativity which pervade modern American culture, which are reinforced by our telling of history, which are at odds with much historical fact, and which most people (myself included) unwittingly reinforce on a daily basis. I'd like to go over a couple of these.
"Creativity is the process of generating some immaterial inspiration and translating it into a physical artifact which is wholly unique from all others." This has got to be the biggest and the most culturally destructive. I think that this myth is repeated above all others in no small part because it pleases the artists most when they say it. It also is partially true. Someone well seasoned in an artistic skill will, once in a while, have some great vision and charge forth on it. It's happened to me-- I once cooked a multi-course feast because the smell of a lemon gave me a vision of a feast on the coast of Northern Morocco. Moments like these are incredible "flow" experiences, and so they become cherished and repeated. But to say that this is the backbone of the creative process is like saying that earning hat tricks is the backbone of playing hockey. Most athletes get their cherished peak moments on nights when all their lifelong-honed skills converge with a little good luck. Most artists, I now realize, are the same way. The difference is that people see the grind of the athletes because they play in public; an artist's grind is more concealed, found only in archives of their notebooks and home recordings (if ever).
The second part of the myth is the notion of originality. This is actually the part everyone repeats, and I daresay it enforces the first part of the myth. Basically, this argues that anything which is a copy is wrong. In some respects, I think this may be an outgrowth of our cultural feelings about plagiarism, but it is, at some level, overgrown and selective. If I were, for example, to write a song which heavily borrows riffs from Iron and Wine, someone would tell me I was unoriginal. If I prepared a dinner that borrowed significantly from Jacques Pepin, I will be praised for presenting a meal that is "faithful to the classics." So, of course, I have more cultural room to develop as a chef than I do as a songwriter, because faithfully copying a master is not criticized in cooking.
Copying, however, is essential to all learning, including in one's artistic skills. This is why the early and late phases of many artists' careers look so different. Consider, for example, The Beatles, whose early career sounded completely indistinguishable from much of the other early rock music. Great painters like Picasso began within an established artistic milieu and slowly developed outward over time. Even great inventors didn't invent in a vacuum; many times they were part of a community that were all collectively attempting to invent a now-famous artifact. The insistence on complete originality is purely a post facto rationalization generated by an artist or that artist's representative. It builds legends, gratifies egos, and enforces some space of the medium as someone's "turf." It also happens to be a very expedient lie.
The lie happens to be a destructive one, too, because it discourages others from getting started. Remember...when you get started, you basically have to copy. If you're learning an artistic skill, and you don't think you're copying someone or something else, it's only because what your copying has been declared by our culture to be part of the "artistic commons." Whether it's drawing a sphere with shading, sculpting a basic human form, knitting in two colors, or making duck confit, odds are you're copying a technique someone developed long before you, but nobody makes you feel guilty for this because nobody is claiming ownership of the technique and shaming others for using it. Yet the charge to "be original" is strong. It is, perhaps, strongest with those who've been the greatest aficionados of a medium. Music fans become musicians; art fans become artists.
And so, the enforcers of the myth now face the challenge of giving up that myth when it runs into the reality that creativity relies on a foundation of mimicking one's role models. It's only after a massive backlog of works that the budding creative builds up the ability to start recombining those influences into something different. Yet the talented aficionado is a talented critic. As Ira Glass would say, you get into creative pursuits because you have good taste. Skilled criticism and "good taste," however, is the creative pursuit of mythologizing artists and their works; they, sadly, serve as a hindrance to becoming an artist, because it's only after a lot of mimicry and "being derivative" that you have a vocabulary with which to build something different.
This leads to another part of that big myth, which is something I've been encountering since my childhood training in music-- the idea that the creative process seamlessly moves from inspiration to execution. You hear all these stories about famous composers writing music despite being deaf or great painters or artists sitting down to make a masterpiece in one go. The process of developing the techniques that went into these creations, however, was a fluid and improvisational one. Often, they come about while trying to recover from a mistake. This is, in fact, at the core of the creative process, and it's possibly the most relevant to a budding creative-- making a lot of pieces and screwing up a lot until your brain builds a back catalog of techniques for coping with your mistakes. Giving up the goal of technical precision at all steps leaves room for the result to stop being a function of constrained ideas and become something that arises in the moment.
This is not to say that technical precision isn't desirable; on the contrary, it is an ultimate goal. You cannot make something to order without technical precision. You can't get started on a creative improvisation without a basis of technical precision, either. Any artist you think of as "great" has a fairly high degree of technical precision and mastery of tools and techniques. But technical prowess should not be confused with creativity. In fact, it is a sort of tool in the creative process, which lets you slide in and out of improvisation...
Technical skill is one of the consolations of the artist, just as grammar and syntax are the writer's consolation. It requires no imaginative powers, no creativity; it is just the right way of doing things. It can provide a formidable rest, allowing one legitimately to postpone or disengage from the uncertain encounter with creative forces. --Roger Lipsey
It's the fusion between a growing technical skill base and a willingness to engage with mistakes and odd turns in the production process, that ultimately leads to discovery. This is a realization I only recently came to while working on my glass blowing. I was attempting to stretch out a glass bubble for a bottle, only to end up making a holy mess of things. In doing so, though, I challenged myself to find a way to some kind of completed work, and I ultimately ended up making an amazing ornament for my efforts. Along the way, I learned a lot about making glass ornament caps in larger sizes and developed sculptural techniques I'd put off.
Don't keep score based on your masterpieces; keep score based on your successful "saves."
The cult of technical prowess is something I was taught at an early age when I took up the flute. Most children are taught an instrument through classical training, which emphasizes the ability to read sheet music and perform under the direction of a conductor. This is perfectly understandable, because classical training fits into a school classroom well and gets the kids playing together as a group. It does, however, leave huge gaps in one's musical skill base (which are often not filled in until college, if ever). More importantly, if my informal chit-chat with other former band geeks is reliable, it leaves a significant deficit in understanding the creative process of music. Specifically, years of being subservient to a conductor and composer creates the impression that being a creator of music will happen when you're sufficiently good at your instrument, creating a "I'm not good enough to create" trap. On the contrary, writing music isn't about being a good instrumentalist...it's an orthogonal set of skills and requires that you accept that pieces must be fiddled with until they happen, which playing completed works will never explain.
I was, at one point, getting disillusioned with my glass work because I was starting to develop technical competence but wasn't "finding my voice," and this is a direct result of thinking that creativity is just technical skill on overdrive. I actually considered quitting, since I'd found yet another medium where I couldn't create. Since I've realized the source of my confusion, though, I've put aside time each week to have one piece where I do something absolutely crazy and new and then work to make it come together without breaking. In so doing, I've come into the challenge of putting new skills and tricks into my arsenal, which I end up recombining into new things, and I've started to see my pieces get more and more interesting over time.
So, if you're like me, your "inner critic" isn't reciting that old saw about not being good enough to be creative. No, it's repeating concepts you've been using your whole life to mythologize the artists that you love. While I do believe that a little mythologizing is great for one's role models, it's important to realize that these myths also aren't the whole truth. Creativity is not a function of being possessed of genius, rather it is an endless process of remixing from things you think are cool and worth copying combined with a willingness to improvise as you go along and see where things end up.
Creativity, ultimately, is process rather than product. Products just fall out along the way, documenting the history of the process.
ArcanOS PRE-MAGUS: frame allocator rudiments
It's been entirely too long coming, but as of ArcanOS commit e1a75edd4b0a, the rudiments of the frame allocator are available. Those who've followed the project will note that the memory manager was disabled and still hasn't come back, but this will be coming along very soon. Really, "memory manager" was a misnomer anyway, as the real goal was to have a basic malloc( )function. Being able to summon up a pointer to an arbitrary chunk of memory could be considered "handy" for early development. So, the original allocator is what I've been calling a "scratch pad allocator." Basically, it just assumes there's a spare megabyte of RAM located just beyond the kernel's load location and it uses this area for serving memory requests. This actually was a pretty neat thing to have on hand in the early days of ArcanOS, before we were using paging and when it was more important to me to have a robust kernel debug log than it was to do anything else. Of course, this had to be retired when ArcanOS switched over to paging, because the 1MB "scratch pad" shouldn't be assumed to be mapped in. No...the malloc( )function should necessarily rely on the paging system.
There are some distinct phases to go through in making a mechanism for allocating out the available RAM:
- Identify the physical addresses of all the RAM in system.
- Create a tracking system to know what RAM is free and which is used.
- Create a mechanism for mapping unused RAM into the address space of the process requesting it.
Step (1) was nicely done for us already by GRUB and the map is passed in as part of the multiboot info struct when GRUB dispatches to the kernel's entry point. To know where all the free RAM is in the system, you need only parse the struct. Of course, to make use of the information in the struct, it's handy to also tackle step (2), so that you have somewhere to record this information about available memory. Since I think it's probably the most minimal data structure possible (and, therefore, the easiest to read, learn, and explain...and thus in line with a goal of ArcanOS), I have opted for the ever-humble bitmap. ArcanOS has an intentional design decision to target a very generic 32-bit x86 architecture and thus limits its address space to 4GB. This is broken down into page-size chunks and each one gets a bit in the bitmap. A 1 in the bitmap denotes free RAM, otherwise it should not be touched.
I set up the bitmap in memmgr.c in multiple passes. In the first pass, I set the bitmap so that all the page frames are invalidated:
void frame_allocator_init(multiboot_info_t* mbi, uint32_t kernel_base, uint32_t kernel_end) {
int i;
int frames_allocated = 0;
for(i=0; i<(PHYS_MEM_MAP_SIZE); i++) {
phys_mem_map[i] = 0;
}
Next, I iterate through the memory map given by GRUB and mark all the full and available 4KB frames as being available:
multiboot_memory_map_t* mmap;
for (mmap = (multiboot_memory_map_t *) (mbi->mmap_addr);
(unsigned long) mmap < (mbi->mmap_addr) + mbi->mmap_length;
mmap = (multiboot_memory_map_t *) ((unsigned long) mmap
+ mmap->size + sizeof (mmap->size)))
{
//_kern_print(" size = 0x%x, base_addr = 0x%x%x,"
// " length = 0x%x%x, type = 0x%x\n",
// (unsigned) mmap->size,
// mmap->addr_high,
// mmap->addr_low,
// mmap->len_high,
// mmap->len_low,
// (unsigned) mmap->type);
if (mmap->type == MULTIBOOT_MEMORY_AVAILABLE) {
//Kindly note here that we will *NOT* be making use of the "high"
//fields here. The memory manager is current capped at 4GB, so
//we will deal only with the lower 32-bits of addresses.
//The goal here is to flip on the bits for available RAM. After
//that, we will flip OFF the bits for the areas where the kernel
//was loaded and where the initial page tables sit.
//The frame allocator is very happy to fail to mark partial
//frames as "not available." This is a good, safe starting point
//as it means that the only physical memory allocated out will
//"really be there."
uint32_t base = mmap->addr_low;
uint32_t len = mmap->len_low;
//First, advance up to the next page frame boundary.
if ((base % PAGE_SIZE) != 0) {
base = base + (PAGE_SIZE - (base % PAGE_SIZE));
len = len - (PAGE_SIZE - (base % PAGE_SIZE));
}
//As long as there is another frame to allocate, allocate it.
while (!(len<PAGE_SIZE)) {
mark_frame(base, FRAME_STATUS_FREE);
++frames_allocated;
base += PAGE_SIZE;
len -= PAGE_SIZE;
}
}
}
And then finally I make sure that the space taken up by the kernel and the initial page directory and page tables is marked as unavailable. This is important to remember to do...the space you've used before turning on your memory manager is, by definition, not available to use. Otherwise, you'll accidentally write over your page tables and other stuff you've so laboriously set up:
//Now, time to make sure the page directory and any existing page
//tables are never again re-allocated.
mark_frame(INITIAL_PDE, FRAME_STATUS_USED);
uint32_t* page_entry = (uint32_t*)INITIAL_PDE;
for (i=0; i<1024; i++) {
uint32_t pde_entry = page_entry[i];
pde_entry &= 0xFFFFF000; //Page table address is in the upper 20 bits
if (pde_entry != 0) {
_kern_print("Located existing page at 0x%x and will mark it as used\n", pde_entry);
mark_frame(pde_entry, FRAME_STATUS_USED);
}
}
//Finally, mark off the area where the kernel is loaded
kernel_base &= 0xFFFFF000; //Find the nearest page (rounding down)
while(kernel_base < kernel_end) {
mark_frame(kernel_base, FRAME_STATUS_USED);
kernel_base += PAGE_SIZE;
}
}
And, presto. It's a bitmap of memory. The process of feeding free frames of memory back into the allocator is now a process of finding a 1 in the bitmap, calculating its physical address, and then updating the page directory and tables appropriately. When I write that code, I'll break it down on here. I want to add that there are some obvious drawbacks to the use of a bitmap in this fashion. The first is that the bitmap is going to be pretty sparse, meaning that space is dedicating to bits that will never actually be used. The bitmap is also very minimal in what it can do-- it's a map of available RAM, but if a frame is marked as 0, there's no way to tell why. I also suspect that the process of returning frames to available RAM is not going to be as simple as it could be, and I further suspect that requesting large data extents (such as 4KB for making a new page table) may not go in a perfectly optimal fashion. All of these, however, are hits I'm willing to take in exchange for the fact that it's a simple, easy to code, and easy to explain data structure. This shows how to take the information in a GRUB multiboot info struct and use it to build a map of the available page frames in memory, and being able to show this in a single blog post isn't so bad.
So, the next step is to get the allocator allocating, which is to say the next step is to take frames out of the bitmap and map their physical addresses to available addresses in the kernel's address space.
Foot Injury
I haven't said too much about my athletics on here yet, and this seems like as good a place as any to start, even if it is on a somewhat sad note.
For the most part, I've had two major activities driving my athletics-- cycling and running. Cycling is my "bread and butter" event. I'm better at it and I like it more. It's also been a very practical activity, in that I can bike to get where I'm going and I get a workout, too. In fact, most of my training has come in the form of commuting. But, as my cardiovascular endurance grew, I took up running as a secondary activity. I wouldn't say that I'm a great runner, but I've done pretty good with it for what's ultimately been a "back-burner activity." Going out and getting a good 6 miles on foot, seeing an area from that point of view...well, it's just fun. It's great to run up the hills of Richmond and look out over the San Francisco Bay. It's great to run the back trails around hilltop castles in Cornwall. And during times when cycling has come to feel like a daily chore, running became a way to keep my joy of exercise alive.
And, I should note, almost all the running I've done has been barefoot running. I've been using some form of Vibram Five Fingers for years now. It's made all the difference to me, because I used to get pretty frustrating back pain from running, but barefoot running, and the associated changes in gait, took care of this problem. Barefoot, I've run all over Florida, California, and Cornwall. I was barefoot in my first 5k, and then my first 10k, and then my first Bay to Breakers, and finally in my first half marathon. I seriously doubt I'd have ever made it this far if I hadn't made the switch to barefoot.
I mention this not just to shill for barefoot running but because I want to make it clear that I'm no rookie. I've been running barefoot for years and I've even turned in some respectable times in my races. But, now, it seems that my running may need to stop for an extended period of time, and I suspect that I've actually been a victim of my own success. See, when I moved up to the East Bay, I saw the opportunity to use our train system for my commute, but I would need to still travel about 7.5 miles every day in order to cover the distances to and from the train stations. Due to various reasons, a bike was out of the question, so I decided I'd try strapping on a backpack and running. This seemed a pretty straightforward thing to do. The contents of my backpack are only a couple of pounds (a tablet computer, wallet, and clothes, essentially), and running 7 miles is well within my reach, especially when each 7.5 mile day is actually 4 different runs. And I'd be doing this 4 days a week, since I needed my car on Tuesdays. Seemed like a great way to become a better runner, and I started to really look forward to the improvements in my times.
And this actually did work out pretty well for a couple of months. I am beginning to suspect, however, that there were some odd aches and pains that I let slide which I shouldn't have. About six weeks ago, I finished my run to work experiencing some difficult pain in the bottom of my heel. It was an intense but dull ache. I ran home on it anyway, and then made it worse, and since then, I've had to stop running and heal. After two weeks of being pain-free, I decided to try the daily runs again. It only took one day of running to produce injury yet again. Today, I'm limping around the office as the bottom of my foot aches with a strained/sprained sensation that runs all the way up to the base of my calf muscle. I'm not 100% certain what I've done, but plantar fasciitis is my best guess. I don't believe that it's been caused by a single acute episode but instead is the result of ongoing stress on my plantar fascia. A likely story is that I may run with my heels a bit high and that this, coupled with a little extra weight from the backpack, has excessively stretched my plantar fascia. No individual run caused the damage, but instead it's been death by a thousand cuts as it's crept up on me over time.
This is very frustrating, though, since it looks like I will have to back out of the Big Gay 10k, which is one of my favorite runs. I also am going to have to seriously consider that I won't be able to run in the San Jose Rock and Roll Half Marathon, either. Normally, I'd make up the slack in exercise with cycling, but my trusty road bike, Thumper, was stolen a few weeks ago and the only cardio equipment in my home gym is an elliptical machine, which still involves a bit of foot flexing. High intensity interval squats may be in my future for a few weeks. This is probably a good excuse to surf more and to buy a new bike.
What's not clear to me, though, is what to do to heal sooner and prevent this in the future. I should see a doctor, but I'm too busy (and you'll find out why soon enough), so I'm just trying to take it easy. It's likely this was a chronic problem so healing may take a very long time. I'm also not sure if I'll be able to return to barefoot running without running another injury risk. If I can't, then it quite likely could be the end of my running "career," because I find no pleasure in running in shoes. I ran barefoot as a child, and I take too much direct pleasure in feeling the ground beneath my feet. I should consider, however, that it is constant barefoot running that led to this. I have no arches in my feet, and that much engagement with my forefoot might have stretched some ligaments more than they can endure.
The Long, Hard Road out of Segmentation
As of last night's Pre-MAGUS check-in, ArcanOS now uses paging rather than segmentation. Of course, this is a pretty critical step in the MAGUS goals. Segmentation is really just a legacy aspect of x86 these days, and there are really no meaningful examples of its use in modern OS development. So, why did I ever use segmentation in the first place? Well, the biggest reason is that I inherited it. Remember that ArcanOS began life as an early coursework lab for a teaching operating system called JOS, and very specifically an early introductory form of it that focused on the boot loader. ArcanOS, like JOS, and like a lot of other operating systems, is designed to be a "higher half" kernel, which means that it is linked to 0xC00000, but it's actually loaded at a much lower address (right at 1MB, for those playing along at home). If you really want to split hairs, ArcanOS is linked at 0xC0100000 (which will change soon, possibly in the next check-in). In order to really "run" ArcanOS, the x86 processor has to be set so that address 0xC0100000 is mapped to 0x00100000.
This was originally done with something the hobby OS community generally calls "the GDT trick". In order to run in 32-bit mode, an x86 requires you set up a GDT, and this will set the values of the segment registers. These registers will be added to every address to get a final result that goes out onto the memory bus. It turns out that, in this addition process, overflowing 32 bits will just cause a wrap-around. So, you can exploit this to get your kernel's link addresses to refer to its actual load addresses (0xC0000000 + 0x4000000 = 0x00000000 after wrap-around). It's good for getting things up and running, but you can't really stake much on it after that. Segmentation is inflexible and you can't do any swapping with it. On top of that, there are all sorts of memory addresses that correspond to physical hardware, and you have to remember to adjust those addresses to compensate for your segmentation trick. Even more so, though, it seems that the GDT trick isn't universally supported. ArcanOS uses Bochs as its reference platform, but it would appear that VirtualBox doesn't support the GDT trick. Long story short-- getting onto paging is pretty important.
So, this left me with some questions about how I wanted to get onto paging. My first thought was to employ the GDT trick to jump into my proper kernel code, then set up paging and reload the GDT with segment descriptors that used a base of 0x00000000 (effectively turning off segmentation). The more I considered this, though, the less I liked it. Part of the reason ArcanOS started out using the GDT trick was because it also started out with its own boot loader and you have to set up a GDT to get into 32-bit mode in the first place. ArcanOS now uses GRUB for its boot loader, though, and GRUB already sets up 32-bit mode and installs a GDT to support a flat memory model. Why was I going to change the GDT only end up setting it back the way it was before? No, this was a good opportunity to separate ArcanOS from its roots by just going straight to paging.
Setting up paging, it turns out, is a little bit easier than I thought. You need about 12KB of memory to establish some initial page tables, and if you're loading the kernel at 1MB, there's usually plenty of room just under the kernel to use for those purposes. After that, it's really just zeroing-out the memory and stuffing some values in the tables. Info on the layout of the tables, with reference for making a higher half kernel, is in an article on the OSDev Wiki. The sticky wicket, in my mind, was that I would really just rather not write it in assembly. I don't mind writing in assembly, but for anything non-trivial (especially in a hobby project where my free time is at a premium), I trust a compiler more. But...if I wanted to do this in C, wouldn't I have to write it in the kernel proper, thus requiring I rely on the GDT trick? As it turns out, the answer is "no." What I realized is that the code would be location-independent as long as all I did was write some simple loops and not refer to any memory except the page tables which I was trying to fill. All of the control flow would be PC-relative (based on adding offsets to the current code location), so it would never care where it was really located as long as I called into it correctly. The result is the init_paging( ) function in kernel/memmgr.c. All I have to do to call the function is to store its address in a register, adjust its link address to its load address, and then call the function from the register. I call this function, let it do its thing, and then I finish up setting paging in assembly.
Originally, I paged the first megabyte to itself and paged 0x00100000 to 0xC0100000. This makes the hardware exposed in low memory easy to access, ensures my first page tables are mapped in, etc, and it ensures the symbols in the kernel were all mapped in. And, then I set up paging and....crash. Why? Well, because I'm already running my code at 0x00100000...which is in the second megabyte. The address of the current instruction was not mapped to anything! So, once paging was turned on, my own code became inaccessible. In the end, I ended up deciding to map the first four megabytes to themselves. I'll want to clean that out eventually, but for initialization, it's something I can live with. So, this was enough to get me into the ArcanOS kernel proper, but then...crash. What was it this time? Well...GRUB put the multiboot info struct below 0xC0100000, so that wasn't mapped in. Again, just to keep the bases covered, I mapped the first four megabytes to the address space starting at 0xC0000000. This does mean there are currently two ways to access the same 4MB of memory, but it gets ArcanOS up and booting, and there should be some easy ways to clean this up.
Technically, with this view of memory, ArcanOS would have run just like the GDT trick was still being used, but I still did due diligence and I went through and stopped referring to addresses as being relative to KERNBASE. My word of advice to any OS hobbyist who's starting out-- I really encourage you to consider doing rudimentary paging right from the start. If you don't, you're going to get married to an address management scheme you're likely to throw away later, and if you've been using it for a while, then it'll take a harder portage effort to get off of it. Just page your memory in from the get go. If you're using GRUB, even more to the point, because GRUB already set up the GDT for you to use paging with a flat memory model. The biggest concern I had with setting up paging was that it looked hard at a time when I just wanted to get a kernel booting and doing some interesting things. In reality, I was able to sling together a C function which would set up the page tables, and this made things very easy indeed. Don't get into using segmentation. If you do, it'll be a long, hard road getting back out.
So, from here, what I really need to do is clean up the paging a little bit. Once I'm jumped into the kernel, I can stop identity-paging the first 4MB. I also want to map only enough pages to hold the kernel. Also, I don't see a good reason to link the kernel at 0xC01000000 any more, since doing that was mostly to make the GDT trick a little bit simpler. I have a good map of physical memory thanks to GRUB and I can make and manipulate pages, so this is everything the memory manager needs to be pretty full-featured.
Perry v Schwarzenegger (Prop 8 Trial) Motion to Vacate Denied
I have been waiting all day to type that headline. I deleted it and then typed it again. It felt good both times.
Here's a link to the order. It contains a lot references you can follow if you want to go into the case law behind what's written here.
In reality, we're talking about a fairly small tributary of the long river that is the Perry v Schwarzenegger case, which is fairly commonly called the "Prop 8 case." The case is in a bit of a holding pattern as it waits in appeal in the 9th Circuit. The 9th Circuit has certified a question to the California Supreme Court to determine if the intervening defendants in the case, broadly called "the Prop 8 proponents," actually have standing. I'm actually not going to go too much into that aspect of things today, though it would come as a surprise to nobody that I have opinions on the subject. I just mention the state of affairs to set the stage a little. Look for something interesting on that front in (hopefully) early autumn.
No. Today we're talking about an extra motion that was filed while everyone waits to wrestle with the question of standing. The judge which presided over the case, Vaughn Walker, made a public statement this past April stating that he has been in a same-sex relationship for the past decade. Proponents of Prop 8 subsequently filed a motion to vacate Walker's judgment. As the name implies, it's a request to throw out the judgment. The basis for this motion was that Walker, being in a same-sex relationship, had an obligation to disclose his relationship and, ultimately, recuse himself from the case. I'm fairly sure that most people who've followed the case considered this motion to be fairly frivolous, but I still want to dig into it a little bit because I think it helps to clarify some things about judicial impartiality and the integrity of the judiciary.
It's important to understand that the starting point, and indeed the default state, is the impartial nature of a judge. Impartiality is part of the oath of a judge, and it's affirmed repeatedly through case law. In fact, impartiality is an essential component of maintaining a nation of laws in the first place, and if no officer can be found who stands by the law first and foremost, then the whole system falls apart. Therefore, it's important that judges be treated as impartial and that rules be established that allow the transparent testing for partiality in the minority of cases where a judge genuinely cannot be trusted to act in an impartial fashion. To that end, we have something commonly known as Section 455 which lays out criteria on which a judge may be disqualified. This motion to vacate focuses on two aspects of Section 455, which I'll include here:
(a) Any justice, judge, or magistrate judge of the United States shall disqualify himself in any proceeding in which his impartiality might reasonably be questioned.
[...](b) He shall also disqualify himself in the following circumstances:
[...](4) He knows that he, individually or as a fiduciary, or his spouse or minor child residing in his household, has a financial interest in the subject matter in controversy or in a party to the proceeding, or any other interest that could be substantially affected by the outcome of the proceeding[.]
The proponents of Prop 8 challenged Walker's impartiality based on the fact that he announced he was in a long-term same-sex relationship, citing violations of Section 455(a) and Section 455 (b)(4). Let's look at each of these in turn.
Section 455(b)(4) disqualifies a judge based on his or her potential to have a financial interest in a case, and that form of conflict of interest is undoubtedly the sort of thing that you try to avoid in an orderly and fair judicial system. For example, if a judge (or the judge's family) owns stock in a company involved in a case, then there's a clear conflict of interest. Other interesting cases that have come up in the past include things like the judge's family possibly being in the class of a class-action suit. Of the options available for disqualifying a judge, this is one of the more objective ones that can be put forward.
In the live blog of the oral arguments, you'll see the attempt at pinning Walker's relationship status to Section 455(b)(4). Essentially, it goes like this: Walker's in a ten-year relationship, which means he wants to get marries, which means that he wants to enjoy the financial benefits of marriage, which means he has a conflict of interests. To put it another way, Walker isn't capable of being impartial in a trial about gay marriage because marriage is financially advantageous and he could, if Prop 8 were ruled against, marry his partner. Of course, this breaks down on a number of fronts. There's no evidence of intent to marry, for example, and there's no reliable way to test it. There's the fact that marriage requires two people who want to marry and not just one, so you'd also have to test Walker's partner. There's the fact that people change their minds quite a bit. The fact that the Prop 8 proponents took the intent to marry as given ultimately broke their chain of logic. See pages 9-10 for what I consider the more bash-it-with-a-hammer part of the order. I'd quote it, but really...just read the whole thing.
So, this leaves Section 455(a). The language for this rule requires a little bit of clarification. It does not leave the door open to personal speculation, even if it seems "reasonable" for the party doing the speculation. Instead, there is a test known as the "reasonable person" test that helps to make concrete the concept of Section 455(a) and to provide a test. I'll quote from the order:
In this context,the “reasonable person” is not someone who is “hypersensitive or unduly suspicious,” but rather a“well-informed, thoughtful observer” who “understand[s] all the relevant facts” and “has examined the record and law.” United States v. Holland, 519 F.3d 909, 914 (9th Cir. 2008) (citations omitted).15 This standard does not mandate recusal upon the mere “unsubstantiated suspicion of personal bias or prejudice.” Id. (citation omitted). [...] In addition, the Court recognizes that a fact is not necessarily a basis for questioning a judge’s impartiality merely because that fact might lead a segment of the public to question the judge’s impartiality. Reasonableness is not determined on the basis of what a particular group of individuals may think, nor even on the basis of what a majority of individuals in a group believe to be the case.
This is something you see in law from time to time. In order to provide a test of a concept, a sort of hypothetical person, with certain qualities, is conjured up and a discussion is held about what this person would conclude or know. These constructed people are a method of trying to project the concepts of law into a hypothetical third party whose thoughts the parties in the case may discuss.
Very similar reasons were given for why Walker should have been dismissed under Section 455(a): he's in a long-term same-sex relationship, which means his impartiality is in question. To really reach this point, it would have to be demonstrated that his personal desire to marry his partner would have to be sufficient that he could not preside over the case in a professional and impartial fashion. Again, however, there is no fact that can be pointed to in this instance, since the Prop 8 proponents are again basing this conclusion on the fact that he is in a long-term partnership. If you review the live blog (linked above) at the 10:39 timestamp (and the ones slightly earlier), there is a distinct pattern where it is concluded that having a long-term partnership immediately implies a powerful desire to marry. Walker never said one way or the other, though, and his silence, absent of any other evidence, can't be construed as proof of partiality. In the court's order denying the motion to vacate, it exposes the crux of the issue:
A well-informed,thoughtful observer would recognize that the mere fact that a judge is in a relationship with anotherperson–whether of the same or the opposite sex–does not ipso facto imply that the judge must be sointerested in marrying that person that he would be unable to exhibit the impartiality which, it is presumed, all federal judges maintain.
Things might have been different if Walker had issued remarks in the public record about an obsession with marriage, with how the case was the only thing standing between him and being married, etc. It'd show a massive emotional investiture in a major outcome. He didn't. Furthermore, there is a lingering suspicion on the part of the proponents of Prop 8 that all same-sex couples must be practically obsessed with their ability to marry, to the point that Prop 8 is the only thing stopping them. I'm pleased to see sexual orientation invoked in the "reasonable observer" test, because one can point to many unmarried long-term opposite-sex couples. Why would a same-sex couple be any different? People choose to marry for their own reasons in their own time.
That really seals it, but there are some extra parts with respect to the argument that Walker's failure to disclose creates reasonable doubts about his impartiality. Such an argument is, effectively, flipping the script. It makes the assumption that, should you find out something about a judge you consider a threat to impartiality, the judge must have already known this, too, and decided to remain silent on the subject. Silence, however, does not imply motive. You can easily make an alternative motive the the one presented-- the judge considered everything and concluded that s/he didn't have any threats to being impartial. Silence cannot be considered automatic evasion, and to accept this argument basically means that it's possible to accuse a judge of being impartial whenever one of the parties finds something that s/he doesn't like. This completely subverts the system of presuming judges can take their oaths seriously and creating rules for challenging that assumption. To adopt such a stance would be damaging to the integrity of the judiciary:
Contrary to the intent of Section 455, which was designed to preserve judicial integrity through practices of transparency, it is clear that fostering the practice of commencing a judicial proceeding with an extensive exploration into the history and psyche of the presiding judge would produce the spurious appearance that irrelevant personal information could impact the judge’s decision-making, which would be harmful to the integrity of the courts.
And that pretty much sews it up. I see this not only as a positive result for marriage equality but a major re-affirmation of judicial integrity and impartiality in light of questions about sexual orientation, which itself is somewhat novel and relevant. In addition, and this could just be my own armchair quarterbacking here, I think that the motion to vacate was an intentional tactic on the part of the Prop 8 proponents. It's been many months since I read Walker's judgment, but I seem to recall it having a large number of findings of fact that leave the proponents' case significantly wanting. Under a de novo standard of review, the 9th Circuit would be able to provide an independent conclusion regarding questions of the law in the ruling but they would be working with the lower court's records and findings of fact. While I found Walker's application of law in the case fascinating and damning, I could envision debate about it. By comparison, the findings of fact will be the basis for review, and the Prop 8 proponents don't want that. Their only hope is to vacate the judgment and get a new trial and better facts. That tack failed.
I do believe this is good all around. Aside from any further motions, the next battleground will be regarding standing. I'll, hopefully, be back in autumn on that.
ArcanOS PRE-MAGUS Update
With most of the "fun" of buying a house and moving to a new part of the Bay behind me, I've finally had some leisure time to turn my attention to something I've really missed doing...namely, developing ArcanOS. What have I been up to on that front?
Well, after having been off the project for several months due to the whole "becoming a homeowner" thing, I took a not-so-long look at the project and concluded that I needed to be more realistic about the boot loader situation. When we last left our hero, he was intending to continue development on his boot loader until such time as it could produce a working memory map, at which point ArcanOS would be ported to the Multiboot Specification so that it could be booted by GRUB. While I still think it would have been a lot of fun to do that, I ultimately had to be realistic about what I was getting myself into. I'd be building multiple boot loader stages, making a new build process to support them, and enjoying the hair-pulling process of chain loading and making sure I hold onto the memory map in the process. That would have been a good learning experience, but it would take a lot of time to do and I already lost a lot of momentum over the past few months. Doing a lot of work only to throw it away and do a portage effort just didn't look as appetizing.
So, as of a recent commit, ArcanOS now boots via GRUB. The current commit will generate a disk image file for Bochs which contains the GRUB stage1 and stage2 boot loaders already. As of tonight's commit, ArcanOS now receives an accurate memory map from GRUB and this will give me the material I need to make a frame allocator and then work on enabling paging.
Part of me is tempted to take a side trip and include some bells and whistles to make the boot process easier. I'm getting tired of typing in the block list of the kernel on every test boot. I'm fairly sure that much of that sort of thing, though, requires a file system GRUB understands, and if I leap onto a canonical file system, I might never get out. I should also note that my build process needs some tweaking...right now I have to regenerate the file in boot/post_pad every time the kernel size changes!
Since I'm back to proper feature development for the MAGUS goals, I've changed the version name to PRE-MAGUS.
Yes, Virginia, I am an atheist Pagan
This is, with some hope, the first of a few posts I'm going to write on this topic. I say that because I've started to write various posts about atheism in Paganism. They've all had various reasons that they've come up short in my eyes...one seems like it needs another post to come first and provide context...another became too bogged down in the history of atheism in various world religions...etc. None of them really seemed to get down to the crux of the matter.
I'm an atheist. I'm also Pagan. It's actually not that hard to reconcile.
At the very beginning, it's worth making something quite clear -- there is really no rulebook for what makes a Pagan. It's a term that seems to encompass a rather wide and diverse set of people. Generally speaking, Thelemites and Wiccans and heathens all seemingly share a common set of social concerns and social infrastructure even if they don't share cosmology or practices. The reasons for hanging together under this umbrella term aren't within the scope of the article, nor is the history of the term. I'm not out to speak about how we got to this point. The fact of the matter is that we're here. And what is Paganism? It is, effectively, a culture that provides a web of common reference and language for a bunch of different people with different beliefs and practices to hang together. Paganism, therefore, has no particular theological or religious test.
I actually feel like I could rest the defense there, but I won't. It'd make for a really empty blog post, and outside of that, I've looked on the web and seen a lot of static about Pagan atheism. Some of it comes from atheists that, in my opinion, needlessly deride atheist Pagans for what they consider to be unacceptable levels of religiosity; most of it, however, comes from Pagans who consider belief in the existence of at least one deity to be a necessary quality of a Pagan.
But let's break some things down. Theism is generally accepted to be typified by making a claim of the existence of at least one deity. There are a series of statements invoked in the statement "At least one deity exists." For example, it requires a founding definition of "deity." It also, however, requires a founding definition of "existence." Sitting around and indulging in a discussion about what it means to exist would, honestly, turn into a series of blog posts that would end up rehashing ontology in general. I'm not going to attempt an iron-clad definition of "existence." Generally speaking, though, one of my rules for saying that something exists involves my ability to demonstrate that existence to others in convincing ways, particularly when those "others" may hold views that wouldn't be biased towards accepting that the object in question exists. This actually flows forth not from some serious position of modernism but from the pretty practical meat-and-potatoes way that I, and many other humans, handle experiencing strange new phenomenon. If I see something strange, I draw others' attention to it to see if they see it and what they make of it.
Of course, over a lifetime of taking this practical attitude to things, including an admission, upon first encountering something unusual, that I could be hallucinating or seriously confused, I've developed certain rules-of-thumb to help speed up my conclusions. For example, I've found that most things which exist can have machines built which demonstrate and exploit that existence. For example, there was a time when HIV's role in AIDS was not as well-accepted as it is today, and the development of drugs which directly assault HIV, and which significantly extend the lives of HIV+ people, has been a major nail in that coffin. Another guideline is observing the biases of those who claim a certain thing exists. There are a bunch of these other sorts of guidelines, and a lot of people who are simply being sensible use them all the time.
And, putting a few of these together, I do come to the conclusion that no deity exists. Now, we can make some fuzzy definitions of "deity," and there are a few that I might semi-comfortably consider interesting and useful, but I don't grant them the status of, as Feynman once put it, "really, really there." They're not beings in this universe. They're not beings in another universe. They're not on another "dimension" or "plane" or "level" or "realm of ideals," and the existence of those things is also something I do not accept. If I list the properties of deities, existence isn't among them. That alone is enough to qualify me as an atheist, but I will, for good measure, mention some other things that I don't think exist. I don't recognize the existence of vital life-force, or chi, or ki, or "energy," or any of the other myriad terms used in new age and Pagan circles. I don't recognize the existence of spirits, of demons, or of angels. I have no reason to conclude that I have a soul that will continue on after my death, which is to say that I also don't believe in an afterlife. There are a lot of things common to the lives of Pagans that I don't recognize in the ontological pseudo-class of being, as Feynman once put it, "really, really there."
And yet, if you find yourself blanching at this, or you're ready to fire off a comment and tell me I'm not a "real" Pagan, at least let me tell you my response up front. Stop. You're being obsessed with ontology.
A really wise friend of mine has this great shtick he does about how he'll never tell a child Santa Claus isn't real. It's really a brilliant bit, and I actually love hearing him do it at dinners and parties. Essentially, it goes like this...Santa Claus is more recognizable by more people than your average real person, people know who he is and what he does, people get gifts from him all the time, etc, etc. In fact, if you walked down the street in a red suit giving out gifts, everyone would call you Santa Claus. So, of course Santa is real. He might be more real than most people!
And, of course, this is delivered with a little bit of humor...the sort that says "Ha ha...only serious!" He, of course, does leave out some really important details that throw spanners in the works for Santa Claus. For example, we've never found his workshop nor evidence of purchasing the raw materials for toys. His employees are elves, and nobody's found those (seriously...not even one crazy whistleblower). The FAA has never received a request for an air traffic corridor radioed in from a flying sleigh. Possibly most tragically of all...there are lots of good girls and boys that Santa somehow misses. Most people would agree that this compounds together with lots of other information to suggest that, at a minimum, Santa has yet to be found and his existence would be highly contradictory.
But the whole Santa thing is still a really apt way for explaining how I deal with things like deities and the other ooky-spooky subjects we lump together into Paganism. See...I remember being 13 years old and, because I didn't feel I had any popularity to defend, I played Santa Claus when my Boy Scout troop sang Christmas carols down at the old folks home. I had a really freaking good time putting on the red suit and going "Ho ho ho!" and giving out candy canes and hugs. Most of the people at that nursing home were beyond delighted to see me. I mean, they were delighted that a bunch of fresh-faced Boy Scouts came to sing for them, but if I'd been passing out candy canes wearing my uniform, it wouldn't have been half as much fun for me or for them. I do suspect that there may have been one or two of them may have been suffering from dementia and possibly really thought I was Santa, but I have no doubt that most of them called me "Santa" because it was fun to do so. And it was fun for me. Everything was more fun for having the living symbol of generosity and happy childhood memories there. Yep. Santa isn't real, but I was once Santa for a night, and it made the night meaningful.
And that's why I honestly feel that, even if I'm the atheist, it's everyone else who's being really philosophically uptight. I might not think that Hermes is "real", but that doesn't mean that I can't aspire to be like Hermes, make art that represents Hermes, talk about Hermes, do things and claim Hermes did them, dress like Hermes, act like Hermes, get other people to call me Hermes, or be Hermes...for myself or others...for a time. Just because something isn't real doesn't mean that you can't experience it. If things that didn't really exist had no power, I sincerely doubt that people would go to see Batman or Iron Man movies. People love connecting with those complex symbols of heroism. People just also know that you can't shine a bat-shaped searchlight when you're getting mugged and that you can't trade in Stark Industries on the NYSE. Flynn does not live. Flynn Lives still means at least another $15 from millions of people.
This is generally the place where someone will invoke a sort of fall-back cosmology popular within the Pagan community: the Jungian concept of archetypes and the collective unconscious. I've never really been a fan of seeing things that way, either. To be honest, it feels like another attempt at making the gods (or magickal energy, or other such stuff) "real." Hermes no longer lives atop Mt. Olympus but now lives inside the collective unconscious. The problem is that both Mt. Olympus and the collective unconscious are artifacts of a mythology. This shifts the mythological location, but it doesn't really structurally change things. The other problem I have is that, while we have physical science for discussing phenomena which exist in the world, there is no "science of archetypes." Archetypes are, in a sense, their own mythology...albeit an interesting and compelling one and one that may be a little less supernatural, but as a mythology goes, I don't reach for it often. I also must confess that I don't experience gods or other mystic concepts as being part of my psyche, nor do I use the modality of ritual in such a heavy psychological fashion.
Of course, archetypes are handy descriptors. I will give them that. It's hard to not think about any character without bringing archetypes in. I prefer to see my psyche as mine, full of its own funny idiosyncratic quirks, and to simply explore, as freely as possible, what a deity or a concept or a character means to me. I don't need to hang that on an external framework to do so...at least most of the time.
All of this is to say that I find the question of the gods being "real," and indeed discussions of their ontological nature in general, somewhat silly. It doesn't matter if they're "real" if they're meaningful. So, yes, I am an atheist because I don't believe in the existence of a deity. I'm also, however, a Pagan, because I have a personal relationship to the same things that Pagans have relationships to. Once you get past the word games of ontology, being an atheist Pagan isn't so silly after all.
The McCollum Response
As has been reported in The Wild Hunt, Patrick McCollum has responded to the ruling of the 9th Circuit. I, first off, want to make sure that it is unambiguously clear that I support McCollum's work. I absolutely understand what a profoundly uphill push he has had and continues to have. I also want to make it as clear as possible that my goals in my writing on the subject were not intended to suggest that he nor the inmates named as plaintiffs don't have a case. I absolutely believe they do, and I would love nothing more than to see the case get tried on its real merits.
When 9th Circuit released its opinion, there was a great deal of chatter in the community, much of it based on an assumption that the summary ruling in the lawsuit and the subsequent affirming of the ruling in the 9th Court had come after having considered the case in full. Rather than have several different conversations about standing, I opted to instead to expand one conversation I'd been having into a blog post, with the hope of putting some information into what I saw, at the time, as a void. Given the response which I've received to the post, I do feel it's at least helped to bring the conversation more into focus.
After reading McCollum's response and having a few discussions with some of my fellow Pagan legal wonks, there are some corrections and clarifications which I want to make.
- The "separate cases" concept which I listed was, honestly, slightly inaccurate. This was brought to my attention by Alley V. (Alley, if you want better attribution, please step forward.) My goal in discussing things in that fashion was to show independent sets of claims and I went so far as to call them "two cases." The claims are all still being stated in a common context, so there really isn't an advantage to considering them separate cases. I, ultimately, used a poor metaphor here, and I should have reached for a different one.
- After some conversations with some other Pagan legal wonks (a lawyer and a law student), and especially after reading McCollum's response, I have to take back my prior opinion about the exemption to Title VII and I also disagree with my prior agreement with the 9th Circuit that McCollum's right to employment is derivative of the inmates' rights of free practice. I was, in fact, uncritically applying an exemption which is mostly for private religious institutions and not for a state chaplaincy program such as is discussed in this case. Also, McCollum notes that the court mistakenly believed his claims related to Title VII were on appeal to summary judgment. I haven't checked, but I'll assume McCollum is correct, in which case the 9th Circuit did make a mistake In fact, the more I think about it, the less I like it.
With regard to what McCollum says about the administrative tactics of the CDCR, I have absolutely no doubt. To call the deck stacked is to make a serious understatement, and I have no doubt that demonstrating that the exhaustion of administrative channels is beyond difficult. Frankly, I don't know how McCollum has had the energy to persevere under these conditions, because I don't know that I would. My point from the beginning was to show that this is a series of setbacks based on legal procedure and not on the merits of the case. That's a setback, but not utter defeat.
And I want to make clear, again, my support. As I stated previously, I'm not a lawyer. I, in fact, hoped that making a blog post explaining the issues of procedure would help others to understand what the 9th Circuit's ruling was and was not about. I'd even hoped that it might spur further analysis and discussion of the case (though it hasn't fully). All the direct fire I know to provide in the ongoing struggle are those that are available to us all...writing letters, contributing to the ongoing effort, and remaining hopeful about the future.





