cross-posted from: https://r1b.it/post/38416

With mander.xyz being down for so long, I've really started to miss my nerdy science memes. So, being an instance owner, I decided to fix that! !memes@r1b.it is the perfect home for all of your biology, chemistry, physics, math or otherwise scientific shitposts and memes :)

This is a drop-in replacement for the late !science_memes@mander.xyz. Like with my other mander replacement, !herps@r1b.it, I do not expect anyone to stick around if/when mander comes back. This is just a temporary home for all of us science lovers. If you do decide to stay tho, I greatly appreciate it!

 

I put the full ruleset on Google Docs, but below is a Markdown version of the sections relevant to the dice system. I've been working on this for 3 or so months, and my buddies and I have played maybe 5 games with it. We like it a lot! I feel like the core mechanics and the math behind them tell a super intricate story despite being so simple, which I think is super cool. What are your thoughts?

Who am I?

Players need only decide one thing when creating their characters: which dice they use. All characters are represented by exactly two and nothing more.

The first is known as their Action die. Pick the one that best fits your character.

  • Strong, powerful, and tough characters use a six-sided Action die.
  • Charismatic, charming, and attractive characters use an eight-sided Action die.
  • Agile, dexterous, and swift characters use a ten-sided Action die.
  • Intelligent, thoughtful, and quick-witted characters use a twelve-sided Action die.

The second is known as their Approach die. Pick the one that best fits your character.

  • Forceful, reactive, and fiery characters use a six-sided Approach die.
  • Disciplined, courageous, and willful characters use an eight-sided Approach die.
  • Sharp, perceptive, and attentive characters use a ten-sided Approach die.
  • Meticulous, level-headed, and careful characters use a twelve-sided Approach die.

The rest is up to you! Your character can look, act, and carry whatever you want — just be sure to check with the Narrator first.

What happens when I try?

Players will automatically succeed in most of their endeavors, but those that involve some level of difficulty or risk are determined by the rolling of dice. All such actions belong to one of four types: Forcing, Consorting, Finessing, or Engaging.

  1. To Force is to use raw, physical strength. One must roll between four and six to successfully force.
  2. To Consort is to persuade, deceive, or otherwise communicate with others. One must roll between five and eight to successfully consort.
  3. To Finesse is to maneuver one’s body in a precise, swift, and calculated manner. One must roll between six and ten to successfully finesse.
  4. To Engage is to interact with an object using intense focus and care. One must roll between seven and twelve to successfully engage.

(This is a table in the original document)

  • Force: 4, 5, 6
  • Consort: 5, 6, 7, 8
  • Finesse: 6, 7, 8, 9, 10
  • Engage: 7, 8, 9, 10, 11, 12

When attempting an action, the player rolls both of their dice. One successful die typically results in a successful action, two typically an overwhelmingly successful action, and zero typically a failure. However, the relative ease or difficulty of the task at-hand may change this.

…and if someone tries to stop me?

If ever two or more characters are in direct competition with one another, the players may choose to enter a Contest. During which, all parties take an action to win, with the character yielding the highest degree of success coming out victorious. If multiple characters yield the same degree of success, and the Narrator is unsatisfied with a tie or stalemate, they alone may roll again.

What about when lead starts flying?

Players typically act freely and without order, but the Narrator may enforce turn-based actions if the provided structure is desired. The most common such case is combat.

Turn-based encounters are divided into Rounds. During which, all participants take a single action and note the number rolled by their Approach die. This becomes their “initiative” for the round.

As the players roll, the Narrator creates a list of every action and its degree of success, using the initiatives to order them from lowest to highest. Upon completing the list, the Narrator reads through it and describes how the Round unfolds. If an action becomes impossible due to the outcome of a previous one — such as the death of a character — it is simply ignored.

Once the Narrator is finished, a new Round begins, and the cycle repeats.

How bad is it, Doc?

If ever a character is inflicted with a physical injury or mental affliction, they mark an unmarked number on their Wound or Stress tracks, respectively.

Until the character is healed of their infliction, rolling a number marked on either track means their injury flares up or their composure cracks, triggering an immediate narrative complication alongside the action’s outcome. Rolling a number that is marked on both tracks increases the severity of said complication. If either of a character’s tracks is completely filled, their body or mind has reached its limit, and they are permanently removed from the game.

Each track consists of numbered slots matching the values a die can roll. The size of your Stress track is equal to the number of sides on your Approach die. The size of your Wound track is equal to 18 minus that of your Action die.

 

cross-posted from: https://r1b.it/post/38416

With mander.xyz being down for so long, I've really started to miss my nerdy science memes. So, being an instance owner, I decided to fix that! !memes@r1b.it is the perfect home for all of your biology, chemistry, physics, math or otherwise scientific shitposts and memes :)

This is a drop-in replacement for the late !science_memes@mander.xyz. Like with my other mander replacement, !herps@r1b.it, I do not expect anyone to stick around if/when mander comes back. This is just a temporary home for all of us science lovers. If you do decide to stay tho, I greatly appreciate it!

 

cross-posted from: https://r1b.it/post/38416

With mander.xyz being down for so long, I've really started to miss my nerdy science memes. So, being an instance owner, I decided to fix that! !memes@r1b.it is the perfect home for all of your biology, chemistry, physics, math or otherwise scientific shitposts and memes :)

This is a drop-in replacement for the late !science_memes@mander.xyz. Like with my other mander replacement, !herps@r1b.it, I do not expect anyone to stick around if/when mander comes back. This is just a temporary home for all of us science lovers. If you do decide to stay tho, I greatly appreciate it!

 

With mander.xyz being down for so long, I've really started to miss my nerdy science memes. So, being an instance owner, I decided to fix that! !memes@r1b.it is the perfect home for all of your biology, chemistry, physics, math or otherwise scientific shitposts and memes :)

This is a drop-in replacement for the late !science_memes@mander.xyz. Like with my other mander replacement, !herps@r1b.it, I do not expect anyone to stick around if/when mander comes back. This is just a temporary home for all of us science lovers. If you do decide to stay tho, I greatly appreciate it!

submitted 1 week ago by to c/croak@r1b.it
 

Happy Halloween!

I really need to start posting these a day later.... This is three weeks in a row where we hit a huge milestone almost immediately after posting a Weekly Croak! This week's was !herps passing 100 subscribers! And we didn't just peek past the triple digit mark, we blew past it! As of writing this, !herps is sitting at 134 total subscribers. Crazy! Thank you guys for the support :)

The userbase is also picking up some steam! We now have a total of 7 users, and I've even seen pretty big posts from r1b.it users on foreign instances. @Mandarbmax@r1b.it in particular is killing it! That's great natural advertising, so I really appreciate it.

Lastly, I'm still working on federation issues.... I seem to have pretty much solved the missing posts problems we've been having, but smaller things like upvote counts still need to be worked on. I'm not too sure what's going on with those, but hopefully I'll get to them soon. Please let me know if you encounter any more issues! The more reports I get, the better I'll be able to piece together a solution.

That about wraps it up for this week; it's been somewhat of a quiet one. Let's keep up the amazing growth!

submitted 2 weeks ago by to c/croak@r1b.it
 

Week number 2! Sorry, this is a big one....

Users!!

Only 2 weeks in, and r1b.it already has it's first three local users (besides me, ofc)! This is an absolutely insane milestone, and I'm super pumped we've hit it so soon. Like I said in the last Weekly Croak, I didn't expect to have any active users for the first few weeks, but we have 3 already?? Insane.

In particular, I just wanted to shout out @Trying2KnowMyself@lemmy.ml. They have been very active and have constantly maintained an positive, happy attitude -- exactly the type of userbase I want to cultivate :) I'm super grateful that complete strangers are as pumped about my little instance as I am. It's super validating, so I just wanted to publicly show my appreciation.

However, that's not to say we shouldn't keep growing ;) The best, most tight-knit communities grow almost exclusively by word of mouth. Like-minded individuals naturally interact with one another on the Fediverse, so normal conversation is the best way to build the type of userbase I want. So, if you have a r1b.it account, please use it! Even showing up in foreign threads here and there with the instance attached to your username does something (that's actually how I found my old home instance). If you don't have a r1b.it account or just prefer using a different instance, still post! That keeps the instance alive. What I have been doing is posting on r1b.it and then cross-posting to similar communities, which seems to work fairly well.

slrpnk.net is down :(

If you weren't aware slrpnk.net -- a very closely-related instance -- is currently down due to hardware issues, and they say they likely won't be back up until December/January. In the meantime, I'd be happy to house any interim communities or users until it gets back online. Just post a request in !croak@r1b.it, and I'll be happy to make it for you! Once slrpnk comes back up, I can remove them if you so desire.

Federation issues... fixed?

As I said in this post, r1b.it has been struggling to federate content due to it's small size. A handful of users just isn't enough to maintain healthy links to every subscribed community. So, I have been working on a little script to automatically poke subscribed communities every so often, hopefully pulling any new posts from them.

However, while I said the issue was fixed, it wasn't.... I got a bit too overzealous and posted right after successfully running the script for the first time without waiting to see if it was a permanent solution. That's entirely on me and is a lesson learned as a community administrator. I think I have gotten the script to a place where it works consistently, but again, I'll just need some time to see. Once I solve the issue for good, I'm hoping there will be less friction for new users to join and consistently use their r1b.it accounts.

My statement on AI

Like I said above, we currently have 3 r1b.it user accounts, but I've gotten almost 6 total applications. The reason for the low acceptance rate is simple: AI content.

Two of the applications were for completely AI-driven users, which is absolutely insane to me. The Dead Internet Theory is quickly becoming the Dead Internet Reality. The other denied application was a user that boasted their use of AI, and said they could quickly churn out content to keep r1b.it alive. While, yes, active users are great, that misses the whole point. I don't run this instance for the satisfaction of having a bigger number on the stats page; I run it as a service to people. It is a place to listen and to be heard. If I allow AI-generated content on my instance, living people won't be impacted, and we'll be speaking into the void.

On top of that, I just can't justify the intense compute required to produce generated content. r1b.it is an instance dedicated to nature and actively supports conservation communities like slrpnk. Allowing AI-generated content that consumes immense quantities of power and water is a slap in the face to the very idea of this instance.

With all of that in mind, I am strictly banning all AI-generated content on r1b.it. If you suspect any, report it. Thank you for your help!

 

(if you can't see the thumbnail)a large pyrosome alongside a diver, the pyrosome is roughly 4x the length of the diver

Most people walk past pyrosomes on beaches or see videos of scuba divers swimming through them and think they are some kind of massive jellyfish, a giant sack of eggs, or a weird mutant cucumber. However, they're actually a colony of thousands of individual organisms called tunicates!

the anatomy of a tunicate

There exists a single "original" tunicate, and the rest of the tube is made up of thousands of genetic clones that are built over time. They all live inside a single gelatinous tunic and connect within it, sharing a common water intake/exhaust system. Each individual zooid pulls water in, filters out plankton for food, and pushes the filtered water back out into the central tube. That collective exhaust builds and acts like a jet propulsion system, slowly moving the whole giant colony through the water. How cool is that?!

a larger pyrosome dramatically twisting between multiple divers

They are also intensely bioluminescent through a chemical reaction known as the "Luciferin-Luciferase reaction". A specialized enzyme (luciferin) oxidizes a light-emitting compound (luciferase) inside small light-producing cells located on each zooid. If you touch one or stimulate the pyrosome with light, it triggers a chain reaction that passes the signal to neighboring cells, creating a wave of blue-green light across the entire colony. Divers have called swimming inside a hollow pyrosome tube "swimming through a tunnel of stars."

a glowing pyosome small enough you can see each individual tunicate

What are some of your favorite aquatic weirdos?

 

cross-posted from: https://r1b.it/post/12935

As I have browsed the Fediverse through r1b.it, I've noticed lots of missing content from remote communities. Some of that has to do with actual federation problems (which I have been in talks with other instance owners to fix), but most of it is a result of completely intentional behavior. Regardless of that, though, I feel as if missing content detracts from the r1b.it user experience. So, I decided to flex my programming muscles a bit and devised a solution.

For the more technically inclined bunch, you can keep reading to see how it works. For everyone else, you can just be happy to hear that you should now be getting all new content from your subscribed communities! If you have any further federation issues, please let me know. You can always @ me in !croak :)

The nerd stuffLemmy relies on an event-driven feed, meaning it doesn't always automatically pull posts from remote servers unless someone is actively browsing or querying them. So, if a r1b.it user doesn't actively interact with a community, the content won't get pulled. If no new content is getting pulled, no one will interact with the community. To break this cycle, I've set up a lightweight Python script to automatically sync every subscribed community in the background. This script is set up as a cron job that runs every 6 hours.

This script first queries r1b.it's local PostgreSQL database to gather a unique list of every remote community local users are subscribed to. For each community it finds, the script targets Lemmy's resolve_object API endpoint using the community's full actor URL to refresh its metadata and maintain connection health.

To keep this script from turning into a DDOS as r1b.it grows, it shuffles the community list to spread instances out and has a polite randomized pause between each request. Additionally, I plan to remove this script entirely if r1b.it ever gets big enough to federate itself naturally.

#!/usr/bin/env python3
import subprocess
import urllib.parse
import urllib.request
import time
import random

LOCAL_DOMAIN = "https://r1b.it/"
DB_CONTAINER = "REDACTED"
DB_USER = "REDACTED"
DB_NAME = "REDACTED"

SQL_QUERY = """
SELECT DISTINCT c.actor_id 
FROM community_follower cf
JOIN person p ON cf.person_id = p.id
JOIN community c ON cf.community_id = c.id
WHERE p.local = true 
  AND c.local = false;
"""

def get_subscriptions():
    cmd = [
        "docker", "exec", "-i", DB_CONTAINER,
        "psql", "-U", DB_USER, "-d", DB_NAME, "-t", "-A", "-c", SQL_QUERY
    ]
    try:
        res = subprocess.run(cmd, capture_output=True, text=True, check=True)
        return [line.strip() for line in res.stdout.splitlines() if line.strip()]
    except Exception:
        return []

def resolve_community(actor_id):
    encoded = urllib.parse.quote(actor_id, safe="")
    api_url = f"{LOCAL_DOMAIN}/api/v3/resolve_object?q={encoded}"
    req = urllib.request.Request(
        api_url, 
        headers={"Accept": "application/json", "User-Agent": "LemmyAutoSync/1.0"}
    )
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            return resp.status
    except urllib.error.HTTPError as e:
        return e.code
    except Exception:
        return 500

def main():
    communities = get_subscriptions()
    if not communities:
        return

    print(f"Found {len(communities)} unique remote subscriptions")
    
    random.shuffle(communities)

    for actor_id in communities:
        status = resolve_community(actor_id)
        if status == 200:
            print(f"{actor_id} FEDERATED")
        elif status == 400:
            print(f"{actor_id} ALREADY FEDERATED")
        else:
            print(f"{actor_id} FAILED ({status)")
        
        # Polite randomized pause
        time.sleep(random.uniform(1, 5))

    print("Sync complete.")

if __name__ == "__main__":
    main()

submitted 2 weeks ago by to c/croak@r1b.it
 

As I have browsed the Fediverse through r1b.it, I've noticed lots of missing content from remote communities. Some of that has to do with actual federation problems (which I have been in talks with other instance owners to fix), but most of it is a result of completely intentional behavior. Regardless of that, though, I feel as if missing content detracts from the r1b.it user experience. So, I decided to flex my programming muscles a bit and devised a solution.

For the more technically inclined bunch, you can keep reading to see how it works. For everyone else, you can just be happy to hear that you should now be getting all new content from your subscribed communities! If you have any further federation issues, please let me know. You can always @ me in !croak :)

The nerd stuffLemmy relies on an event-driven feed, meaning it doesn't always automatically pull posts from remote servers unless someone is actively browsing or querying them. So, if a r1b.it user doesn't actively interact with a community, the content won't get pulled. If no new content is getting pulled, no one will interact with the community. To break this cycle, I've set up a lightweight Python script to automatically sync every subscribed community in the background. This script is set up as a cron job that runs every 6 hours.

This script first queries r1b.it's local PostgreSQL database to gather a unique list of every remote community local users are subscribed to. For each community it finds, the script targets Lemmy's resolve_object API endpoint using the community's full actor URL to refresh its metadata and maintain connection health.

To keep this script from turning into a DDOS as r1b.it grows, it shuffles the community list to spread instances out and has a polite randomized pause between each request. Additionally, I plan to remove this script entirely if r1b.it ever gets big enough to federate itself naturally.

#!/usr/bin/env python3
import subprocess
import urllib.parse
import urllib.request
import time
import random

LOCAL_DOMAIN = "https://r1b.it/"
DB_CONTAINER = "REDACTED"
DB_USER = "REDACTED"
DB_NAME = "REDACTED"

SQL_QUERY = """
SELECT DISTINCT c.actor_id 
FROM community_follower cf
JOIN person p ON cf.person_id = p.id
JOIN community c ON cf.community_id = c.id
WHERE p.local = true 
  AND c.local = false;
"""

def get_subscriptions():
    cmd = [
        "docker", "exec", "-i", DB_CONTAINER,
        "psql", "-U", DB_USER, "-d", DB_NAME, "-t", "-A", "-c", SQL_QUERY
    ]
    try:
        res = subprocess.run(cmd, capture_output=True, text=True, check=True)
        return [line.strip() for line in res.stdout.splitlines() if line.strip()]
    except Exception:
        return []

def resolve_community(actor_id):
    encoded = urllib.parse.quote(actor_id, safe="")
    api_url = f"{LOCAL_DOMAIN}/api/v3/resolve_object?q={encoded}"
    req = urllib.request.Request(
        api_url, 
        headers={"Accept": "application/json", "User-Agent": "LemmyAutoSync/1.0"}
    )
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            return resp.status
    except urllib.error.HTTPError as e:
        return e.code
    except Exception:
        return 500

def main():
    communities = get_subscriptions()
    if not communities:
        return

    print(f"Found {len(communities)} unique remote subscriptions")
    
    random.shuffle(communities)

    for actor_id in communities:
        status = resolve_community(actor_id)
        if status == 200:
            print(f"{actor_id} FEDERATED")
        elif status == 400:
            print(f"{actor_id} ALREADY FEDERATED")
        else:
            print(f"{actor_id} FAILED ({status)")
        
        # Polite randomized pause
        time.sleep(random.uniform(1, 5))

    print("Sync complete.")

if __name__ == "__main__":
    main()

 

As a SATCOM engineer, this is pretty cool

On a quiet morning in July 2026, patrol boats near Gabon’s Grand Sud Reserve closed in on three unlicensed trawlers hauling nets through protected waters. The catch wasn’t fish—it was evidence. None of the vessels had valid licenses, and all had switched off their tracking systems. But someone was watching from space.

The tip came from Global Fishing Watch, a nonprofit that analyzes satellite data to spot illegal fishing. In a region where industrial trawling is banned to protect marine life, the discovery was a win—and a rare one. Most illegal fishing goes unseen. In 2024, researchers found that 72% to 76% of the world’s industrial fishing vessels vanish from public tracking, especially around Africa and Southeast Asia. With 30,500 kilometers of coastline across 38 nations, Africa loses an estimated $11 billion to $13 billion a year to illegal fishing—money that could feed communities, fund schools, and protect ecosystems.

The problem starts with a simple switch. Ships use automatic identification systems (AIS) to avoid collisions, but crews can turn them off to hide. Many do. Most African governments still rely on this self-reporting system, even though it’s easy to cheat. That’s beginning to change. In June 2026, 15 countries—including Somalia and six other African nations—signed a pledge at the Our Ocean Conference in Mombasa to share ownership and location data of fishing vessels.

But there’s a better way to watch the oceans: from space, directly. A team at the University of Florida, led by aerospace engineer Norman Fitz-Coy and Ph.D. candidate the author, designed a satellite system tailored for equatorial waters like the Somali Basin—one of the world’s richest tuna grounds. Instead of using polar orbits that waste time over empty poles, their model uses 24 satellites tilted just 20 degrees from the equator. This setup scans the basin every 1.1 hours—more than three times as often as traditional systems.

The tech exists, but it’s not just about eyes in the sky. Radar sensors spot vessels as bright dots, but identifying them requires sharp images taken on the fly. The satellites must decide in seconds which dots to zoom in on. And with only minutes of power per orbit, they must also sort and send just the most important data. Ground stations in Malindi, Kenya, and Hartebeesthoek, South Africa, help download it—but there aren’t enough.

Still, the biggest challenge isn’t technical. It’s human. Satellites can’t board ships or prosecute crimes. They need coastal nations to act—to patrol, to cooperate, and to care. As the research shows, the tools to stop illegal fishing are within reach. What’s needed now is the will to use them.

 

Jake Tiffin was filming the usual route around the Farne Islands when he heard an orca surface to breathe—and managed to capture one of the most remarkable moments ever recorded off the English coast: a six-ton killer whale launching itself skyward, spinning through the air, before crashing back down into the North Sea in front of a boat full of astonished tourists.

For decades, orcas had been nearly absent from UK waters. Fishermen and boatmen along the Northumberland coast couldn't remember ever seeing them. But in 2025, after vanishing for 40 to 50 years, these apex predators are returning in numbers that have shocked even experienced mariners. Five verified sightings have been recorded off Northumberland this year alone—a dramatic reversal that has transformed quiet boat tours into once-in-a-lifetime wildlife encounters.

The return matters because it signals both ecological change and hope for marine recovery. The reappearance of apex predators suggests shifting prey populations and improved conditions in waters long stressed by industrial fishing and pollution. For the communities along England's northeast coast, it means witnessing a piece of natural history most thought was gone forever. In April, fishermen spotted a pod of up to 10 orcas near Northumberland. Then on a recent Saturday, tourists aboard the Billy Shiel boat tour near Seahouses encountered what is believed to be one of the largest pods ever documented off the coast: around 30 orcas feeding together. Martin Kitching, coordinator of The North East Cetacean Project, told the BBC that boatmen across every port in the region reported the same surprise. "Now, all of a sudden, sightings—in Northumberland at least—are definitely up."

For the 19-year-old crewman Jake Tiffin, the experience was surreal. At first, the crew mistook the dark shapes for dolphins. But as they drew closer, the scale became undeniable—massive bulls weighing around six tons, calves performing barrel rolls in the water, and individuals measuring 10 to 15 meters in length popping their heads up to regard the boat with what seemed like curiosity. "They were popping their head out of the water to take a look at us," Tiffin recalled. When one orca breached in his frame, all the wonder of that moment crystallized: "To see a creature that big jumping out of the water is mental."

Wildlife experts believe the orcas are drawn by the bounty surrounding the Farne Islands, home to a massive colony of 6,000 seals and seabirds. The creatures, which can measure up to 32 feet long, hunt cooperatively in pods—a social structure refined over millennia. The increased sightings may also reflect more abundant fish supplies in these waters, suggesting conditions are improving for the entire food web these predators depend on.

The return is not without complexity. While orcas as a global species are not listed as endangered, specific local populations face critical threats. The West Coast Community off Scotland represents a unique pod struggling against pollution and other pressures. Yet the thriving populations now feeding off Northumberland offer a counterpoint—evidence that recovery is possible when conditions align. For tourists watching a six-ton animal defy gravity over the North Sea, it feels less like science and more like a gift.

 

I present to you: the red footed tortoise! Very closely related are the cherry foot and yellow foot, but these little guys are my absolute favorite. All three make absolutely amazing pets, though! If you're interested in owning a reptile and don't know where to start, I can highly recommend them. Even if you're experienced, these dudes are super rewarding.

a very cute young red footed tortoise

First of all, red foots are just super cute. I mean look! Their eyes are so wet, and their they've got adorable little feet. I've owned several throughout the years, and they're even better in person! Mine often show affection by pressing their nose to my skin, and it always makes me so frickin happy. I'll often let mine crawl on me while I lay down, so she'll often do it around my cheek and neck. It's pretty dang sweet.

a rather large red foot, its shell a bit about the height of a basketball

I also think they're the perfect size. Not too big like the galapagos but not too little like the box turtle. Their sizes can vary quite a lot, but the biggest shells you'll see are roughly the size of a basketball (much like the one pictured). Mine is smaller, probably the size of my head. That's small enough to sit on your desk or lay on top of you, but not so small that they're impossible to interact or play with.

and outdoor red foot enclosure with a cute gravel path and wooden walls

On top of that, they're super easy to take care of! That's not to say that you can mistreat them by any means, but red foots and their relatives are definitely easier than a lot of other reptiles. They of course love stimulation but don't need it non-stop if you get too busy. If you don't have the time on a particular day, just drop their share of food in their enclosure, maybe cram a tasty berry into a wiffle ball for stimulus, and call it a day. Sure, the up-front cost of a large enough terrarium, heat lamps, and decor/hides can be daunting, but their reoccurring costs are next to nothing. Tortoise food and supplements are cheap at pet stores, and you can get veggies almost anywhere. I love to spoil my red foot, and even that doesn't break the bank!

Lastly (and this is a weird one), THEY DON'T STINK. You rarely have to change their substrate because (if treated properly) they only poop during baths. I like to regularly scratch mine's shell with a toothbrush for both stimulus and to get bits of dirt off, but a good warm soak once a week with a bath afterwards is more than enough to keep their insides and outside spic and span! I can't recommend these animals enough.

view more: next ›