<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://merdemicrobes.org/feed.xml" rel="self" type="application/atom+xml" /><link href="https://merdemicrobes.org/" rel="alternate" type="text/html" /><updated>2026-04-12T08:13:01+00:00</updated><id>https://merdemicrobes.org/feed.xml</id><title type="html">merdemicrobes</title><subtitle>We are all in a sea of microbes, for better or for worse</subtitle><author><name>Ryan McMinds</name><email>r.mcminds@merdemicrobes.org</email></author><entry><title type="html">Ooh, Shiny!</title><link href="https://merdemicrobes.org/general/2024/08/23/ooh-shiny.html" rel="alternate" type="text/html" title="Ooh, Shiny!" /><published>2024-08-23T00:00:00+00:00</published><updated>2024-08-23T00:00:00+00:00</updated><id>https://merdemicrobes.org/general/2024/08/23/ooh-shiny</id><content type="html" xml:base="https://merdemicrobes.org/general/2024/08/23/ooh-shiny.html"><![CDATA[<p>I finally returned to <a href="https://thecnidaegritty.org">The Cnidae Gritty</a> because I found a groove with Shiny app development again!</p>

<p>Since my postdoc in France, I’ve been wanting to improve a barebones photo annotation script that I created there.<!--more--> At the time, I needed a quick solution, and a colleague mentioned how easy it was to make such a thing with MATLAB. I had never worked with MATLAB before, but I was able to hack something together in just a couple days by piecing together a few code snippets that I found via Googling. It served its purpose, but it was uuug-ly. I also just never liked that I had to do it in MATLAB - I was familiar with R, and R is free! So I always imagined it would be nice to translate the program.</p>

<p>The obvious solution in R is to use the Shiny ecosystem. Shiny is an interface between R, HTML, and Javascript, which enables you to use all the data management, stats, and plotting functions in R, and then wrap them up in a user interface within a web browser. It’s a little more complicated than the direct interactivity baked into MATLAB, but there are benefits to putting up with the learning curve. Long story short - not only was I able to translate and improve my old MATLAB workflow, it occurred to me during the process that it wouldn’t be hard to add my new app to my website, making it far more accessible for potential users.</p>

<p>So that’s how the <a href="https://thecnidaegritty.org/photo_annotator/">Photo Annotator</a> over at my other site, The Cnidae Gritty, came to be.</p>

<p>The key thing that I wanted when developing this workflow was a very strict and controlled process of annotation that would ensure consistency across photos. When I first made it, the options that existed had a number of things that I didn’t like. Though I try to automate as many of my analyses with code as possible, photo annotation inherently lends itself to some kind of graphical user inferface, or GUI. And the GUIs that I found were very flexible. But there were a number of problems that I wanted to address:</p>

<ol>
  <li>I wanted a simple data matrix as an output - each photo has a row, each annotation has a column.</li>
  <li>Each annotation should use controlled vocabulary - if the question is ‘Are there corals?’, I don’t want a messy column of data that contains <code class="language-plaintext highlighter-rouge">yes</code>, <code class="language-plaintext highlighter-rouge">Yes</code>, <code class="language-plaintext highlighter-rouge">yes </code> (there’s a space in there), <code class="language-plaintext highlighter-rouge">TRUE</code>, <code class="language-plaintext highlighter-rouge">true</code>, <code class="language-plaintext highlighter-rouge">Porites</code>, <code class="language-plaintext highlighter-rouge">maybe</code>, <code class="language-plaintext highlighter-rouge">5</code>, etc. The possibilities should be restricted upfront - it’s much easier to have the annotator choose directly among ‘yes’, ‘no’, ‘maybe’, and ‘not_applicable’ than it is to let them type arbitrary text and then later struggle to interpret how edge cases should fit into those categories.</li>
  <li>For a given project stage, each photo should be <em>fully</em> annotated before you move on to the next. A GUI that has 30 annotation buttons on the side has the potential to lose a user. When annotating 3,000 photos over the course of months, we don’t want to start by choosing some annotations, accidentally skip some for some photos, and get into a different groove by the end. And the output dataset shouldn’t have any ambiguous missing values - a cell either has an annotation, or is explicitly marked as not applicable or impossible to determine.</li>
  <li>Annotation order should be randomized. Despite the strict workflow, annotators will have biases associated with the time of annotation. If you annotate photos from one reef one day, you might learn that the reef has a lot of sponges, and by the end of the day you will be more confidently annotating pixelated smears in the corner as definitely sponges. But another day annotating a different reef, you could be faced with an identical pixelated smear, but because you haven’t seen many sponges in the photos that day, you’re not so sure, and don’t mark it as such. Don’t get me going on how important randomization is for science.</li>
</ol>

<p>So for my original script, I had a workflow hard-coded such that a single annotation was asked for at a time, and the whole set had to be completed before you moved onto the next photo. If there were questions like ‘draw a box around the coral’, the workflow was smart enough to skip it if the user had previously specified that there were no corals. The annotation would be automatically marked as <code class="language-plaintext highlighter-rouge">not applicable</code>, greatly speeding up the process of annotation without missing values.</p>

<p>During my R/Shiny translation, the greatest improvement is that I now have implemented some logic that generalizes the script for <em>any</em> workflow and set of questions. You simply create a tab-delimited text file that has one row for each desired annotation. This row contains:</p>

<ol>
  <li>The annotation key (e.g. <code class="language-plaintext highlighter-rouge">has_corals</code>)</li>
  <li>The controlled vocabulary or annotation type (e.g. ‘<code class="language-plaintext highlighter-rouge">yes</code>, <code class="language-plaintext highlighter-rouge">no</code>, <code class="language-plaintext highlighter-rouge">indiscernable</code>’, or ‘<code class="language-plaintext highlighter-rouge">bounding_box_coordinates</code>’)</li>
  <li>The annotation prompt presented to the user (e.g. <code class="language-plaintext highlighter-rouge">Are there any corals?</code>)</li>
  <li>A list of dependencies (see below)</li>
</ol>

<p>I’m not gonna lie, I used ChatGPT to help me figure out the logic for implementing the dependencies. And it just, gave me something that worked! With a few tweaks, of course. Without going into details, the idea is that a given annotation shouldn’t be prompted unless it is relevant according to previous answers. So the prompt asking for bounding box annotations for individual corals has a value of <code class="language-plaintext highlighter-rouge">has_corals:yes</code> in the dependencies column. If the previous annotation doesn’t have a matching value, the corresponding prompt is skipped. I was actually <strong>really</strong> excited about this feature.</p>

<p>The other neat discovery I made this time was <code class="language-plaintext highlighter-rouge">shinylive</code>. Since my site is hosted on GitHub Pages, it is a ‘static’ site. That means, when you visit it, your browser is accessing files on the server, and the server is not going to run any code. To have any interactivity on such a site, there are two options: host an app on a different server, and embed it in a static page (this is what I did with <a href="https://thecnidaegritty.org/iNatle/">iNatle</a>), or write the app in Javascript, which your browser essentially downloads and runs on <em>your</em> computer. The weird scrolling and scaling issues that are currently a little frustrating with iNatle are complications resulting from hosting it at shinyapps.io and embedding it here. And having to separately maintain the app with an account at shinyapps.io is also a little annoying. shinylive basically just packages a Shiny app for a static site. Very convenient!!</p>

<p>Of course, there are many highly experienced photo annotators out there who could probably tell me that making my own app was unnecessary. I had put in quite a bit of effort during my postdoc to find such a thing, and ultimately gave up. In the intervening years, a quick Google search does suggest that there are new tools out there that might work better. But I can’t help being a wheel inventor. It was easier, more fun, and more of a learning experience for me to work on this code than to find a pre-baked workflow that worked for me.</p>

<p>And it reminded me of the <a href="https://thecnidaegritty.org/iNatle/">iNatle</a> Shiny app that I already had over at The Cnidae Gritty. That, too, was a fun project that I did last year during paternity leave. It broke shortly after I added it, and honestly wasn’t as fun as I was hoping, at first. But I was inspired to work on that, too, this last week…</p>

<p>(Tune in next time!)</p>]]></content><author><name>Ryan McMinds</name><email>r.mcminds@merdemicrobes.org</email></author><category term="general" /><category term="photography" /><category term="photo-annotation" /><category term="ecology" /><category term="code" /><category term="web-development" /><category term="data-management" /><summary type="html"><![CDATA[I finally returned to The Cnidae Gritty because I found a groove with Shiny app development again! Since my postdoc in France, I’ve been wanting to improve a barebones photo annotation script that I created there.]]></summary></entry><entry><title type="html">Trust Science!</title><link href="https://merdemicrobes.org/personal-philosophy/2024/04/25/trust-the-science.html" rel="alternate" type="text/html" title="Trust Science!" /><published>2024-04-25T00:00:00+00:00</published><updated>2024-04-25T00:00:00+00:00</updated><id>https://merdemicrobes.org/personal-philosophy/2024/04/25/trust-the-science</id><content type="html" xml:base="https://merdemicrobes.org/personal-philosophy/2024/04/25/trust-the-science.html"><![CDATA[<p>Trust <em>the</em> science?</p>

<p>Trust the scien<em>tists</em>?</p>

<p>Trust {the |}scien{ce|tists}!</p>

<p>Ahh. That’s safe.</p>

<p>Wait, what science? Or which scientists?<!--more--></p>

<p>The majority? Who did the counting? How do I trust the people who tell me what the majority is? Does the majority include scientists who are experts in the wrong topic?</p>

<p>What if everything the biologists say is true - but they’re not experts in how their field interacts with economics, social science, law, or policy?</p>

<p>It’s very frustrating to have knowledge that could make an impact on the world, yet not be listened to.</p>

<p>Yet, at the same time, we experts need to recognize the difficulties faced by others in determining who to trust. If you yourself are not an expert, how do you know who the experts are? Having a degree is not a perfect sign - that requires trust in the institution that granted the degree. Agreeing with the majority of others who have a degree isn’t enough - that requires faith that there is no systematic bias in our institutions.</p>

<p>It doesn’t help to call people anti-science because they don’t trust your personal scientific interpretations. Their skepticism is potentially very scientific - their personal experiences of the world lead them to question what they’re told to blindly believe, and they want evidence!</p>

<p>If we’re frustrated at the fact that people don’t trust us, we have only ourselves to blame. We need to make individual connections with people. We need to be out in the community earning trust for ourselves, not relying on our associations with institutions.</p>

<p>I haven’t done a good job with this at all, for a while. Some day, I will have the energy to begin again.</p>]]></content><author><name>Ryan McMinds</name><email>r.mcminds@merdemicrobes.org</email></author><category term="personal-philosophy" /><category term="vegetarianism" /><category term="climate-change" /><category term="culture" /><category term="coral-reefs" /><category term="coral-bleaching" /><category term="conservation" /><category term="policy" /><category term="personal-philosophy" /><category term="academia" /><category term="leadership" /><category term="activism" /><category term="language" /><category term="communication" /><summary type="html"><![CDATA[Trust the science? Trust the scientists? Trust {the |}scien{ce|tists}! Ahh. That’s safe. Wait, what science? Or which scientists?]]></summary></entry><entry><title type="html">Pseudoquasivegetarianism</title><link href="https://merdemicrobes.org/personal-philosophy/2023/07/17/pseudoquasivegetarianism.html" rel="alternate" type="text/html" title="Pseudoquasivegetarianism" /><published>2023-07-17T00:00:00+00:00</published><updated>2023-07-17T00:00:00+00:00</updated><id>https://merdemicrobes.org/personal-philosophy/2023/07/17/pseudoquasivegetarianism</id><content type="html" xml:base="https://merdemicrobes.org/personal-philosophy/2023/07/17/pseudoquasivegetarianism.html"><![CDATA[<p>2016 was a pivotal year for me.</p>

<p>For the past four years, I  had been traveling the world and studying coral reefs from every region. I was becoming an expert on their evolution and their interactions with various microbes. I knew these ecosystems had been in decline for decades, that climate change was a major threat, and that some people had claimed that eating meat and flying in airplanes were major contributors to climate change.<!--more--> But I also knew there were other threats — other reasons corals had been in decline, like infectious diseases and overdevelopment. I also knew that my individual choice to scale back on meat or flying would have zero impact on the survival of even a single coral colony. As I flew back and forth across the globe, I made no effort to change the meat-centric diet that formed a large part of my cultural inheritance. I felt like my personal physiology was acclimated to meat in every meal, and that I could better direct my conservation efforts toward my science.</p>

<p>And then there was 2016.</p>

<p>Unusual heat spread across the globe. Starting in the Southern Hemisphere, corals began to bleach on a massive scale. In many places, they didn’t die from prolonged bleaching, but from acute heat stress — something that was previously unheard of at the scale we were witnessing. I began to hear first-hand reports of devastation from places like Lizard Island, Australia, whose reefs I had become intimately familiar with in 2014. My friends and colleagues were watching as entire reef communities died in real-time. This was unprecedented in recorded history, and many of the most impacted reefs were remote — far from the influence of all the other threats we had been studying. Climate change was suddently causing unimaginable destruction over the span of just months — not decades. Although other threats were (are) still a major problem, their magnitude paled in comparison to that of rising temperatures.</p>

<p>If we didn’t solve climate change ASAP, nothing else would matter for coral reefs.</p>

<p>I think it was a message to the coral scientist list-serve, Coral List, that nudged me to reconsider vegetarianism. Among the carnage of that year, people in the field were looking for ways to <strong>do</strong> something. I decided that one thing I could do was reduce my meat consumption. And now, <span id="veggie-years"></span><noscript>8</noscript> years later (and counting), avoiding meat is still something that I feel is important. Many other changes to my lifestyle and philosophy were set in motion that year, but those may be for another blog post.</p>

<p>For this one, I’ll go over the details of my plant-based philosophy. I hope to edit this as my views change over time and as I find resources that influence my thinking or help to explain it. I don’t plan to hide anything - any change that I don’t highlight explicitly will be available by checking the blog post’s source on GitHub (<a href="https://github.com/rmcminds/merdemicrobes/commits/main/_posts/2023-07-17-pseudoquasivegetarianism.md">here’s</a> the whole history and <a href="https://github.com/rmcminds/merdemicrobes/compare/08a5e531fb0bdd4a29d7b987c8b86d7565c37b81...main#diff-e1231061ed59440567949516d828248f44ac94e429729bb7393fa2aacc5263ca">here’s</a> an example url comparing the first version to the latest).</p>

<h3 id="why-dont-you-just-keep-this-to-yourself">Why don’t you just keep this to yourself?</h3>

<p>I’m trying to explain my philosophy because I think most people tend to jump to conclusions when, in a practical interaction, I say something like “Oh, I’m actually mostly vegetarian, no thanks!” or “hm, not a lot of veggies options; can we find somewhere else?”. And I imagine the assumptions are even worse if they later find me breaking what they assumed was some kind of strict rule that I had previously claimed (e.g. I didn’t want to go to a steakhouse that one time, but I ordered something with meat in it at someone’s fancy event). I understand that restricting my own diet beyond the cultural norm is sometimes inconvenient for other people, and that it may seem rude or hypocritical to violate those expectations later. But my reasoning might not be what you expect, so here I am, putting my actual thoughts in writing, so it’s easier to judge whether I’m acting consistently or selfishly.</p>

<p>Writing this down can help clarify debate. I’d be happy if it led to someone convincing me that I’m wrong. I don’t want to be wrong!</p>

<p>But yeah, it’d also be nice if my reasoning convinced people to join my efforts.</p>

<p>2016 was a sudden shock, but it wasn’t a temporary blip. The very next year, records were set again, devastating the reefs that had been spared in 2016. In 2020, there was another nearly-unprecedented global bleaching event. And now, in 2023, I am writing from Florida, where absolutely gobsmacking, literally never-before-seen water temperatures have persisted for days. It looks like this year we might lose a large proportion — maybe even most — of what little we have left across the Caribbean. This is an ongoing catastrophe that requires all hands on-deck.</p>

<p>And to beat a dead horse (I know, sorry) — climate change is a big deal for people who don’t care about coral reefs, too. As a biologist, I have a pretty good idea about what it’ll do to other ecosytems, and the people who rely on them. I admit that, not being an actual climate scientist or economist or whatever, my own concern about how it’ll affect people in the US has largely been based on intuition. But I’ve been finding more and more evidence that supports some of that intuition. For instance, one of the major concerns for those who tend to dismiss climate change is immigration. Did you know that when our pollution hurts the economy of developing countries, <a href="https://www.pnas.org/doi/10.1073/pnas.2400524121">it leads to more people seeking refuge from those places</a>? You can think about that ethically: that our economic development has <em>caused</em> the misery in other places and we owe them some effort to fix it — or you can think about it practically: you don’t want mass immigration? Then don’t do the thing that causes it!</p>

<h3 id="how-does-eating-meat-affect-climate-change">How does eating meat affect climate change?</h3>

<p>In short, plants are more energy-efficient and space-efficient than animals. We get much of our energy (including fertilizer) from fossil fuels, so using more energy means releasing more carbon into the atmosphere. Plus, carbon is stored directly in the living plants that form the vast forests that have covered our planet for eons. Deforestation directly causes that carbon to be released, and also keeps the forest from pulling it back out of the atmosphere in the future. And in places like the Amazon rainforest, deforestation is primarily driven by the need for more agricultural space — either ranchland that’s directly used for meat production, or for crops. By volume, most of those Amazonian crops aren’t directly eaten by humans; they’re fed to animals. Feeding them to animals rather than eating them directly involves a lot of wasted energy and yet more space and more fuel-guzzling transport.</p>

<p>As of <a href="https://www.nature.com/articles/s43016-021-00225-9">this 2021 article in Nature Food</a>, it is estimated that the global food system is responsible for 34% of all greenhouse gas emissions, and as of <a href="https://doi.org/10.1038/s43016-023-00795-w">this 2023 article in Nature Food</a>, a meat-heavy diet causes around <strong>4 times</strong> as much carbon emissions as a vegan diet, or around <strong>3 times</strong> as much as a diet that contained just a small amount of meat. Thus, a widescale cultural and/or policy shift away from meat-heavy diets could reduce global emissions by a truly meaningful amount.</p>

<h3 id="if-its-all-about-efficiency-then-arent-some-meats-more-efficient-and-some-veggies-less">If it’s all about efficiency, then aren’t some meats more efficient and some veggies less?</h3>

<p>Absolutely. That’s why I tend to prefer oat milk over almond or soy milk. All are better for emissions than cow milk, but oat is best for now, in the US. And some of the (delicious!) new meat imitations are still on my ‘try to minimize’ list. They seem pretty clearly better regarding emissions, but are certainly not as efficient as good ol’ rice and beans, and I’m a bit concerned about all the plastic they seem to use.</p>

<p>The ‘meat’/’not meat’ distinction is a generally useful heuristic that makes it so I don’t always have to put hours of research into every product I think about buying. If I learn about exceptions, I try to remember them. Another great and simple heuristic is to try to eat local. I think chicken from down the road might be better for the climate than an exotic fruit shipped from the other side of the planet. But, uh, <em>citation needed</em>.</p>

<p>Eating less meat is just one part of a general attempt to live more modestly. Maybe I don’t need every meal to include meat. Maybe I don’t need a 3,000 sq ft home with a four-car garage and an SUV that I drive, empty, for tens of thousands of miles each year. Maybe I don’t need to <em>fly</em> thousands of miles each year. Maybe I don’t need so many clothes, and can repair what I have rather than rapidly replace it. Maybe I can be perfectly happy while generally consuming less.</p>

<h3 id="if-its-all-about-efficiency-shouldnt-plant-based-food-be-cheaper-than-meat">If it’s all about efficiency, shouldn’t plant-based food be cheaper than meat?</h3>

<p>Yes, I do believe so. And that’s clearly true in a lot of cases: rice, beans, and potatoes are extremely cheap staples, and form the base of many delicious cuisines from around the world. Of course, a lot of fresh veggies are inherently more expensive because they spoil quickly or dramatically lose quality when frozen or otherwise preserved. But there are also two major factors that artificially lower the cost of meat (leading to, for example, cheap mostly-meat fast-food joints that have more expensive veggie options):</p>

<ol>
  <li>Government subsidies are widespread.
    <ul>
      <li>Meat production uses more fossil fuels. Subsidies for them get passed on.</li>
      <li>The ability to cheaply/freely graze on public lands all over the Western US is so important to ranchers that some are apparently willing to violently take over and trash wildlife refuges in ‘protest’ when they are asked to pay trivial amounts of money for the privilege. But why are so many people sympathetic to the idea that they should be able to use vast tracts of public lands and pay nothing for it? What possible reason could there be for the public to just give them these resources for free? (answer: cheaper hamburgers)</li>
      <li>There are plenty of other ways that the government props up animal agriculture, and I will add links here as I track them down again.</li>
    </ul>
  </li>
  <li>Economy-wide, we have a major problem ‘forgetting’ to factor the cost of pollution and waste disposal into the cost of goods. If a company wants to produce a pound of beef or a pound of beets, we can imagine that all the costs of production might be the same. Thus the cost to the consumer might be the same. But the cost of production doesn’t adequately account for the environmental consequences of beef over beet production. Compared to beets, producing a pound of beef has the following costs that are not borne by the producer or consumer, but by others:
    <ul>
      <li>More carbon is released into the atmosphere (which has a cost that the whole globe will pay)</li>
      <li>More waste and pollution is released locally (which has a cost to local waterways and the people who rely on them, who are usually much poorer than the meat producers)</li>
      <li>More risk of disease to humans is created (I think in 2023 we can safely conclude that zoonotic disease carries a lot of costs — <a href="https://www.opb.org/article/2024/11/15/oregon-first-human-case-bird-avian-flu-influenza/">here’s just one example of how the meat industry is connected to human epidemic risk</a>)</li>
      <li>and more</li>
    </ul>
  </li>
</ol>

<p>I might differ from a lot of other environmentalists in that I strongly believe that we can use free-market capitalism to solve some of these problems. If governments stop giving away free resources, nobody should have to think about the environmental cost of what they eat. Things that are more damaging should be more expensive — unless there’s theft involved at some point in the supply chain. We need to stop the theft in the long term, and boycott the thieves in the short-term.</p>

<p>I’ll note here that changes to food system policy must be done with care. Many of these policies have very good intentions, such as reducing the cost of food overall, which can be extremely important for the less fortunate. Workers in the industry would also obviously be affected if their business becomes less successful without interventions. Any changes to policy must include protections for the people they will directly impact.</p>

<h3 id="how-confident-are-you-about-the-science">How confident are you about the science?</h3>

<p>To be honest, I have my doubts. It has been pointed out that much of the agricultural emissions attributed to the meat industry might not be avoided even if we all suddenly switched to plant-based diets. For example, note that I said ‘by volume’ above when explaining how deforestation can be attributed to the meat industry. The problem is, much of those crops are soy, which has the oil pressed from it (a small percentage of the total soy plant) for human consumption, and then the ‘waste’ is shipped overseas for animal feed. If we still want that soybean oil and we can’t directly eat the leftovers, then why not feed them to animals and convert them into something useful?</p>

<p>I spent some time reading primary literature on this subject a while ago and didn’t feel very satisfied with any conclusion. But suffice to say the pro—meat-industry arguments were even less satisfying that the anti—. One persuasive argument was that, without the income from sales of the ‘waste’ for animal feed, soy oil wouldn’t be as competitive to grow as other, perfectly equivalent, plant oils, which produce less waste and take less resources. It’s a red herring to point out that the waste from soybean oil production isn’t useful to us except salvaged as animal feed, because it might be more accurate to say it’s the soybean oil that’s a salvaged waste product of the meat industry. But I haven’t seen the actual data showing that other, more efficient, crops could be grown in the same locations for the same results. At this point in time, I have to admit that I have more faith in the motivations of one group of experts over the other. Again, the primary principle is that converting energy from plants to animals involves a lot of waste compared to directly consuming plant products. So, if in doubt, that is the null hypothesis that will guide my decision-making.</p>

<p>I’d love to read comments from anyone with opinions on this!</p>

<p>Next time I take the deep dive, I’ll update this post with links to those primary sources.</p>

<h3 id="so-do-you-really-believe-we-should-all-be-vegan">So do you really believe we should all be vegan?</h3>

<p>I do not actually believe it’s morally or ethically necessary to be 100% vegan or even 100% vegetarian at this time. I do find arguments about animal suffering rather compelling, and I think it’s an excellent goal to work toward over time, but I can’t personally overcome the cultural momentum to be so strict right now. When I first started this journey, I resisted the label vegetarian because I wanted the option to indulge every now and then — special occasions, hard times, when traveling and experiencing rich local cultures… And I also figured I could ‘ease into it’. The problem for me, personally, was that those definitions were vague enough to be abused. What is a special occasion? Thrice a year, on Easter, my birthday, and Thanksgiving? Or does that include a barbecue at a conference where there are no veggie options? Or every now and then while dining out?</p>

<p>I found that under those guidelines, I tended to continue eating meat more often than I felt was right. So for a couple of years, I decided to be strict. Not for moral reasons, but practical ones. Even when I’m telling myself I’m a ‘strict vegetarian’, I have clear exceptions, and I cheat sometimes. In my mind, anything that would otherwise go to waste is fair game — so if I’m at that barbecue and they’re going to throw out 20 ‘extra’ burgers, I will definitely eat one. When I visited the Florida Keys for the first time in years, I had some seafood. When I’m in a long funk, I know my priority is to just try to be happy, and I cheat then, too. But ultimately, I truly do eat meat very rarely anymore. And when cooking for myself at home, I’m even mostly vegan! Whenever there’s an easy substitute (like soy milk or vegan cream cheese), why not?? I’m privileged enough to be able to make those choices even if it’s sometimes a little more expensive (and a lot of the time, it’s actually cheaper…)</p>

<p>Also, when I do cheat, I even then almost universally cheat with chicken or seafood, which tend to better in many regards than beef or pork (although I’ve embarrassingly been ‘caught’ by a friend eating seafood that’s NOT better in any way whatsoever. One of the drawbacks of using simple heuristics is that I tend to forget some of the details over time. That’s actually one of the reasons I’ve written this post - it’s something I can go back to later to <a href="##" title="remember that farmed shrimp is like the environmentally worst seafood, Ryan">refresh my own memory</a>).</p>

<h3 id="what-about-people-who-dont-have-other-options">What about people who don’t have other options?</h3>

<p>Those people are not me. And odds are, most people reading these words have more power in this matter than they’d like to admit.</p>

<p>If I owned a cat, I would never force a vegetarian diet on it — they simply do not have that option. And although dogs are more flexible than cats and we do feed ours a lot of vegan kibble, we also aren’t entirely convinced it’s healthy for them to be 100% meat-free, and she’s picky anyway, so she gets some fishy kibble too.</p>

<p>As an aside: I was discussing this question once at a Gordon Conference and someone made an interesting point that really affected my thinking. I had noted that many people around the world rely on coral reefs for their basic nutrition. Almost universally, this nutrition comes in the form of fish and shellfish. I.e., meat, for most purposes except Lent. My interlocutor pointed out the irony that I would use the necessity of meat-eating as a reason to avoid eating meat. I think he meant this as a ‘gotcha!’ But, of course, the difference is that I do not live on a remote tropical island. And in fact, this made me question if I really belonged on all these remote tropical islands that I had been visiting… Did the good I was trying to achieve with my research outweigh the bad effects of all the flying and increased pressure on those ecosystems?</p>

<h3 id="do-individual-choices-matter">Do individual choices matter?</h3>

<p>I believe to my bone that individual choices are not going to solve this problem. There are systemic infrastructural and policy issues that need to be changed by the actions of government if we are going to tackle climate change, and change behavior on a wide enough scale to make any impact on something like meat consumption. HOWEVER:</p>

<h4 id="they-do-when-they-have-clear-moral-and-ethical-implications">They do when they have clear moral and ethical implications.</h4>

<p>If I’m supposed to split $100 among 100 people evenly, but I take $1.99 and give everyone else $0.99, I’ve only stolen one cent from each person. They might not even notice. But I’ve stolen! My moral fundamentals tell me that stealing even small amounts of money from those who are less fortunate is simply wrong. Using more than my fair share of Earth’s finite resources is also stealing — not only from those less fortunate than me now, but from my own children in the future.</p>

<p>I’ll note here that this moral framework doesn’t mean that I think poorly of everyone who acts differently than me. There is strong cultural momentum, and it can take real, visceral shock before we break free from it. I myself had been exposed to many of the arguments for vegetarianism years before I was finally shocked into it.</p>

<h4 id="they-do-when-youre-a-leader-and-an-authority">They do when you’re a leader and an authority.</h4>

<p>This one gives me a little conflict, because if I use it to justify my own actions, I feel a bit egotistical considering myself an authority or potential leader. But at some level, I do believe it is the basic role of environmental scientists to act as leaders. We see the effects of our actions first-hand, and if we can’t be bothered to change, why would anyone else?</p>

<p>What really gets my blood boiling is the apparently very common idea among academics that, because policy changes are needed to fix the problem, there’s no point in changing our own lifestyles until those policies are changed. If we need the government to stop subsidizing the meat industry, they say, then why should I sacrifice my own pleasure or convenience while the rest of society keeps the status quo? <strong>Because if we, the people who directly witness the devastation of climate change, don’t demonstrate that we are willing to live a different lifestyle, why should anyone believe it’s responsible to <em>force</em> that lifestyle on everyone??</strong> I mean, if we aren’t willing to make those changes unless others do, too, then we are really telling people that they are onerous sacrifices that lead to truly worse lifestyles. “Vote to make your life worse!” is a terrible message to make change in a democracy. Touting the benefits of something, but choosing to wait until it’s forced on everyone, suggests that deep down you don’t actually believe it’s beneficial. Either you believe the changes are worth it, and you implement them yourself, or you don’t believe they’re worth it, and you’re talking nonsense.</p>

<script>
  // JavaScript to calculate years dynamically
  const startYear = 2016;
  const currentYear = new Date().getFullYear();
  const yearsSince = currentYear - startYear;
  document.getElementById('veggie-years').textContent = yearsSince;
</script>]]></content><author><name>Ryan McMinds</name><email>r.mcminds@merdemicrobes.org</email></author><category term="personal-philosophy" /><category term="vegetarianism" /><category term="climate-change" /><category term="culture" /><category term="coral-reefs" /><category term="coral-bleaching" /><category term="conservation" /><category term="policy" /><category term="personal-philosophy" /><category term="academia" /><category term="leadership" /><category term="activism" /><summary type="html"><![CDATA[2016 was a pivotal year for me. For the past four years, I had been traveling the world and studying coral reefs from every region. I was becoming an expert on their evolution and their interactions with various microbes. I knew these ecosystems had been in decline for decades, that climate change was a major threat, and that some people had claimed that eating meat and flying in airplanes were major contributors to climate change.]]></summary></entry><entry><title type="html">Big guys shout ‘merde!’ louder</title><link href="https://merdemicrobes.org/research/2023/07/14/big-guys-shout-merde-louder.html" rel="alternate" type="text/html" title="Big guys shout ‘merde!’ louder" /><published>2023-07-14T00:00:00+00:00</published><updated>2023-07-14T00:00:00+00:00</updated><id>https://merdemicrobes.org/research/2023/07/14/big-guys-shout-merde-louder</id><content type="html" xml:base="https://merdemicrobes.org/research/2023/07/14/big-guys-shout-merde-louder.html"><![CDATA[<p>New preprint!</p>

<p><a href="https://doi.org/10.1101/2023.07.11.548565">Bacterial sepsis triggers stronger transcriptomic responses in larger primates</a></p>

<p>I am happy to report that a paper I’ve been working on for a long time is finally available<!--more--> on BioRxiv. We’ve submitted it to a few big-name journals at this point without success, and I’m now reformatting it for another submission. But in the meantime, we figured it was time to get it out there in some form!</p>

<p>This one was quite a departure from my previous expertise. I had to learn a few new bioinformatic tools and databases to work with comparative primate transcriptomes. Started from scratch with a reanalysis after a couple of journal submissions because I had finally figured out how to include a few more samples, and had some ideas to make the stats more robust. I certainly learned a ton along the way, and when it’s accepted at a peer-reviewed journal, I’ll finally have a no-arguments first-author paper. I thank my coauthors for the opportunity!</p>

<p>Let me know if you have any thoughts on the paper!</p>

<p>Update 2024-07-09: We finally got our paper accepted and published at the Proceedings of the Royal Society B (<a href="https://royalsocietypublishing.org/doi/full/10.1098/rspb.2024.0535">ProcB</a>). I’m very happy to finally have published a paper that can be cited as McMinds <em>et al</em>. And in a pretty good journal, too! (Not that we <em>should</em> be focusing on such things…)</p>]]></content><author><name>Ryan McMinds</name><email>r.mcminds@merdemicrobes.org</email></author><category term="research" /><category term="allometry" /><category term="transcriptomics" /><category term="immunology" /><category term="statistics" /><category term="phylogenetic-statistics" /><category term="publications" /><category term="new-results" /><category term="evolution" /><summary type="html"><![CDATA[New preprint! Bacterial sepsis triggers stronger transcriptomic responses in larger primates I am happy to report that a paper I’ve been working on for a long time is finally available]]></summary></entry><entry><title type="html">Maybe it doesn’t Matern</title><link href="https://merdemicrobes.org/research/2021/04/07/maybe-it-doesnt-matern.html" rel="alternate" type="text/html" title="Maybe it doesn’t Matern" /><published>2021-04-07T00:00:00+00:00</published><updated>2021-04-07T00:00:00+00:00</updated><id>https://merdemicrobes.org/research/2021/04/07/maybe-it-doesnt-matern</id><content type="html" xml:base="https://merdemicrobes.org/research/2021/04/07/maybe-it-doesnt-matern.html"><![CDATA[<p>Calling all bored and crazy Stan coders. I need a long term coding partner.</p>

<p>I’ve been doing a lot of completely solo work for a couple years now, and you can guess the result. I have a couple of really awesome models that I am proud of, and yet they’re (1) not quite what I want, (2) probably way more complicated and messy than necessary, and (3) sitting there, waiting for me to figure out how to be a real modeler and justify them.<!--more--></p>

<p>One of the things I was recently working on and am a bit stuck on is a Stan implementation of the circular Matern covariance function as described in “Covariance functions for mean square differentiable processes on spheres” (<a href="https://citeseerx.ist.psu.edu/document?repid=rep1&amp;type=pdf&amp;doi=975965ece10120871b0d217d04a848f3535e9b1d">Guinness &amp; Fuentes 2013</a>). I just learned that the quadratic exponential covariance that I had been using is technically not valid for spherical distances, and that the linear exponential covariance is non-differentiable (bad for parameters in Stan, yes?). So this would be a nice addition. And I’m pretty sure I translated the math correctly, but it doesn’t… work. A few iterations of ADVI and it diverges when using my circular Matern implementation, whereas the version of my model with the technically invalid quadratic exponential runs just fine. So maybe I’m trying to solve a problem that doesn’t exist – but I want to make it work anyway!</p>

<p>Here’s the code I’ve got. I’ve filtered out a bunch of unnecessary details but haven’t cleaned the remainder up…</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>functions {
    real ff(int k, int j) {
        if(j)
          return(falling_factorial(k,j));
        else
          return(1);
    }
    vector circular_matern(vector d, int n, real alpha, matrix ffKJ, matrix chooseRJ) {
        real ap = alpha * pi();
        row_vector[2] csap = [cosh(ap), sinh(ap)];
        matrix[n-1,n] H;
        real annm1 = inv((-2 * square(alpha))^(n-1) * tgamma(n));
        vector[n] a;
        vector[rows(d)] adp = alpha * (d-pi());
        matrix[rows(d),2] csadp = append_col(cosh(adp), sinh(adp));
        vector[rows(d)] cov = zeros_vector(rows(d));
        for(k in 0:(n-1)) {
          for(r in 0:(n-2)) {
            H[r+1,k+1] = 0;
            for(j in 0:(2*r+1)) {
              if(j &lt;= k) {
                H[r+1,k+1]
                 += chooseRJ[r+1,j+1]
                    * ffKJ[k+1,j+1]
                    * ap^(k-j)
                    * csap[((k-j+1) % 2) + 1];
              }
            }
          }
        }
        a = append_row(-annm1 * (H[,1:(n-1)] \ H[,n-1]), annm1);
        for(k in 0:(n-1)) {
          cov += a[k+1] * adp^k .* csadp[,(k % 2) + 1];
        }
        return(cov / (2*alpha*csap[2]));
    }
    matrix fill_sym(vector lt, int N, real c) {
        matrix[N,N] s_mat;
        int iter = 1;
        for(j in 1:(N-1)) {
            s_mat[j,j] = c;
            for(i in (j+1):N) {
                s_mat[i,j] = lt[iter];
                s_mat[j,i] = lt[iter];
                iter += 1;
            }
        }
        s_mat[N,N] = c;
        return(s_mat);
    }
}
data {
    int M[DRC];
    vector[choose(M[size(M)],2)] distSites; // distm(latlon)[lower.tri(distm(latlon)]
    int ms; // Matern smoothness parameter
}
transformed data {
    matrix[ms-1, 2 * ms] chooseRJ;
    matrix[ms, 2 * ms] ffKJ;
}
parameters {
    matrix&lt;lower=0&gt;[DRC+D,K] weight_scales;
    vector&lt;lower=0&gt;[K] siteDecay; //alpha
    vector&lt;lower=0, upper=1&gt;[K] siteProp; //nugget
}
transformed parameters {
    for(k in 1:K) {
        covSites[k]
            = fill_sym(siteProp[k]
                       * square(weight_scales[DRC,k])
                       * circular_matern(distSites, ms, inv(siteDecay[k]), ffKJ, chooseRJ),
                       M[size(M)],
                       square(weight_scales[DRC,k]) + 1e-10);
        // below is the alternative, which works
        //covSites[k]
        //    = fill_sym(siteProp[k]
        //               * square(weight_scales[DRC,k])
        //               * exp(-square(distSites) / (2 * square(siteDecay[k]))),
        //               M[size(M)],
        //               square(weight_scales[DRC,k]) + 1e-10);
    }
}
model {
    weight_scales ~ student_t(2,0,2.5);
    siteDecay ~ inv_gamma(5,5);
}
</code></pre></div></div>]]></content><author><name>Ryan McMinds</name><email>r.mcminds@merdemicrobes.org</email></author><category term="research" /><category term="code" /><category term="Stan" /><category term="statistics" /><category term="modeling" /><category term="help-wanted" /><category term="Bayesian-statistics" /><category term="spatial-statistics" /><summary type="html"><![CDATA[Calling all bored and crazy Stan coders. I need a long term coding partner. I’ve been doing a lot of completely solo work for a couple years now, and you can guess the result. I have a couple of really awesome models that I am proud of, and yet they’re (1) not quite what I want, (2) probably way more complicated and messy than necessary, and (3) sitting there, waiting for me to figure out how to be a real modeler and justify them.]]></summary></entry><entry><title type="html">merdemicrobes</title><link href="https://merdemicrobes.org/general/2021/03/29/merdemicrobes.html" rel="alternate" type="text/html" title="merdemicrobes" /><published>2021-03-29T00:00:00+00:00</published><updated>2021-03-29T00:00:00+00:00</updated><id>https://merdemicrobes.org/general/2021/03/29/merdemicrobes</id><content type="html" xml:base="https://merdemicrobes.org/general/2021/03/29/merdemicrobes.html"><![CDATA[<p>When I started my first blog, I initially used this title for it. I had recently begun working in French Polynesia, was helping a French postdoc, and was interested in learning the language, and I thought, “‘Sea of Microbes’ in French, that’s nice.” I created the page and started working on the blog. And then that French postdoc saw the url: ‘merdemicrobes’.</p>

<p>‘What?? You can’t really call it that…’</p>

<p>His first parsing of the spaceless text was ‘Merde Microbes’. Microbe shit.</p>

<p>This was hilarious to me, but I was using a university-hosted blogging platform and ultimately wanted (at least some of) my writing to be accessible to kids, so, chagrined, I came up with a more bland name and commenced my writing and sciencing adventure under that.</p>

<p>Since then, my adventures have seen some wild ups and downs. My blog expanded for a bit with some features and posts that I was proud of. And then I got busy with other things, discovered that most of the features I was developing had already been done (better) by others, lost my motivation, and it trailed off. This blog arc largely paralleled my sentiments toward my actual science, as well. The more you learn, the more you learn that others have already learned it.</p>

<p>I’ve had a few years of the real world of academia and politics to disabuse myself of perfectionism and idealism. I’ve realized that I’ve tried to hold myself to standards of communication that are impossible for me to achieve, and that my constant self-censorship has led to extreme frustration, burnout, and anxiety. Though I was trying to be the best scientist and communicator possible, I ultimately became just completely stuck. So today I’m trying something new. I’m laying claim to ‘Mer de Microbes’ again. Fully embracing its original intent, but also the accidental double-meaning, the grammatical imperfection, the fact that I’m not French, and everything else that will come with the name. It may change again later. But for now, I am going to try and recommence my journey through a sea of microbes. Or through microbe shit. It doesn’t really matter.</p>]]></content><author><name>Ryan McMinds</name><email>r.mcminds@merdemicrobes.org</email></author><category term="general" /><category term="language" /><category term="France" /><category term="academia" /><summary type="html"><![CDATA[When I started my first blog, I initially used this title for it. I had recently begun working in French Polynesia, was helping a French postdoc, and was interested in learning the language, and I thought, “‘Sea of Microbes’ in French, that’s nice.” I created the page and started working on the blog. And then that French postdoc saw the url: ‘merdemicrobes’.]]></summary></entry></feed>