Understanding my Ancestors

In the first week of August, I made a pilgrimage to my family’s homeland. It was mostly a whirlwind drive around the stunningly gorgeous landscape of New Brunswick and Gaspésie (Gaspe’ Peninsula). We covered over 1000 miles in a few days, trying to see absolutely everything. I saw the towns my family founded and lived in for generations. Found the graves of so many of my relatives, in French settlements as well as in a Mi’kmaq community. Life and the landscape are so different; I have still not adapted to life back home in New Hampshire. My dreams at night are consumed by the place, and I wake up disoriented, wondering where I am.

The experience that most profoundly affected me was our visit to Saint Anne du Bocage, in Caraquet, New Brunswick. It was built by my 6th-great-grandfather, Alexis Landry, in the late 1700’s. To this day, the doors stand open, and it is considered a very sacred place to so many. I am no longer a practicing Catholic. But the moment I walked in, I was overcome. I sat in one of the pews and cried for a very long time. It has taken me some time to digest, and start to understand what I was feeling.

My avatar in our virtual world chapel, trying to figure it out…

I have spent the past few years building a family tree. Building a mental picture of people’s lives. Reconstructing the bits of me encoded in names, dates, places, occupations, even how many cows they owned. I had never understood, really considered them family, loved ones, until I sat in that chapel. Every single one of my great-grandparents had sat where I was sitting. And had felt the way I did right then, in that sacred place, at that moment. They are all present there, with me. I understood their faith. The joy they felt, despite hardship. Their peace in the rhythm of life all around them. My ancestors did not write a lot. I have no books, or letters written by them, all those generations ago. They simply experienced life. And this was the only way and place in the world where they could speak to me. And it is beginning to explain so much about my life, and the longings I have for a home that I never really knew.

I grew up Catholic and was deeply devout as a kid. My Grandfather would bring me to church every Sunday and teach me what he knew of our faith. As I grew older, we moved away to a different town. The Catholic churches that we attended were so different. A lot of rules, a lot of talk of hell. I drifted away. Then later in life, I came to associate Catholicism with all of the horrors we hear about every day. The sexual abuse. The hypocrisy. The atrocities committed against Indigenous children in residential schools. There is a huge disconnect between the religion I grew up in, and the church that I see in the rest of the world. I do not believe that I was simply seeing it through the innocent eyes of a child. The religion I grew up in was truly different. It was a very old and different form of Acadian Catholicism still practiced by immigrants like my Grandparents. It was nurtured in isolation from all the wars and evil in Europe, and by kindred Mi’kmaq people who shared and shaped our faith, and in a lot of cases, became our family.

For the past few years, I have been taking a deep dive into honoring and learning about my Mi’kmaq ancestors, who were not just a single ancestor, but a steady presence in our family over the generations. Traditionally, they have been very devout Catholics, blending Mi’kmaq beliefs with those of the church with little contradiction. I had a hard time coming to terms with that, thinking, as most people would, that they were coerced or forcibly converted. I learned that for so many generations, the Mi’kmaq and Acadians lived in peace and real friendship.

This year, I was invited to attend Red Lake Nation College. It is an Ojibwe tribal college. I am NOT Ojibwe, but I find that we have so much in common. They are honestly the most naturally good-hearted people I have ever met, not only at school, but in everyday life. At the core of their beliefs (and mine!) are the Seven Grandfather Teachings. I will not enumerate them here. But at their core are love, forgiveness, humility, kindness, the interconnectedness of all of us and our world, truth, not only speaking the truth, but living it as well. When I first read of them, in so many words, I found that I had already known them. My Grandfather knew them and lived them. It was at the heart of what I learned at church as a kid. Something that seemed absent from other Catholic churches, doctrine and practice, I experienced later in life. How can this be?

I learned that the Ojibwe, far away from the Mi’kmaq and Acadians, had also experienced a parallel history of friendship and good relations with the French. Many intermarried, their families forming the Métis Nation of Canada. Many Ojibwe adopted Catholicism. And for some, their faith endured, even after the horrors of the residential schools. It being a blend of their traditional beliefs and those of the church.

Even in the face of what we know of history, I have a pretty radical proposal to put forward. European missionaries “converted” indigenous peoples all over the world, mostly through force and coercion. But in the case of the Mi’kmaq and Ojibwe, they were the ones who converted the Europeans and profoundly changed them. I can not speak for Ojibwe or other Mi’kmaq, for that matter. But I can say that the faith that I was raised with bears very little resemblance to any other that I have seen or experienced in the world. And when I sat in that chapel, I remembered. And in that moment, I understood what was in my ancestors’ hearts. They had a deep faith and reverence for creation in everyday life that sustained them, that transcended what we see as organized religion. I also understand that many today will disagree. And that is ok. This is my own journey, with my own family.

That being said. Any devout Catholics reading this will be dismayed that I am very unlikely to return to Catholicism. But, like the Vampire Lestat, in the Anne Rice novels, you might see me lurking in the back of the church. With a broken heart, and longing for a home I can never return to.

Strategy for Opensim Region Hibernation

OpenSimulator Region Hibernation Strategy

Near-zero CPU idle regions with near-instant wake-up on network activity

Recommended approach: keep each OpenSimulator/.NET region process resident in memory, freeze it with Linux SIGSTOP when idle, and resume it with SIGCONT when a lightweight TCP wake proxy detects an incoming connection.

Why this fits the requirement

Memory consumption is not a concern, so there is little benefit in shutting down and rebuilding the simulator process.

SIGSTOP removes the process from normal CPU scheduling. The process remains intact in RAM, including its loaded region, scripts, runtime state, and .NET environment.

SIGCONT resumes the same process rather than starting a new one, making wake-up much faster than a full OpenSimulator restart.

A small always-running proxy can remain responsible for the public TCP port while the simulator itself is frozen.

Recommended architecture

Viewer / external service
|
v
Public TCP port :9000
|
v
+—————-+
| Wake Proxy | always running; tiny CPU footprint
+—————-+
|
region awake?
/ \
yes no
| |
| SIGCONT
| |
+—-> OpenSimulator on private TCP port :19000
|
v
normal region traffic

Example port arrangement: the externally visible region port 9000 belongs to the wake proxy, while OpenSimulator listens internally on 19000. Additional regions can follow the same mapping (9001 -> 19001, 9002 -> 19002, and so on).

Sleeping and waking a region

Freeze the OpenSimulator process:

kill -STOP <pid>

Resume it:

kill -CONT <pid>

While stopped: the process consumes essentially no CPU because Linux does not schedule its threads. Its memory remains allocated, which is acceptable for this design.

Why use a TCP wake proxy?

A frozen process cannot execute application code to service new connections. Linux may still perform some kernel-level TCP work for an existing listening socket, but relying on that behavior makes wake-up timing and application response less deterministic. A proxy provides a clean boundary:

The proxy owns the externally advertised TCP port continuously.

When traffic arrives for a sleeping region, the proxy sends SIGCONT.

It waits briefly until the region process is responsive on its internal TCP listener.

It then forwards the original connection to OpenSimulator.

When the region is already awake, the proxy simply forwards traffic normally.

UDP handling

Start simple. If TCP activity is the critical signal that precedes useful region activity, use TCP as the wake-up “doorbell.” The OpenSimulator process can retain its normal UDP ports, and once SIGCONT is issued it can resume servicing them almost immediately. UDP proxying can be added later only if real-world testing shows it is necessary.

systemd integration

Each region can be managed as an instance service, for example:

opensim@region1.service
opensim@region2.service
opensim@region3.service

The sleep manager or proxy can then identify the region process through systemd and signal the entire service control group rather than keeping ad-hoc PID files.

Conceptually, the manager needs only two operations:

systemctl kill –signal=STOP opensim@region1.service
systemctl kill –signal=CONT opensim@region1.service

Exact service signaling should be tested with the OpenSimulator service layout, especially if child processes are involved.

Idle detection

A practical sleep manager could freeze a region after a configurable idle period, such as 15–30 minutes. Possible definitions of “idle” include:

No avatars present in the region.

No meaningful inbound TCP activity for the configured period.

No administrative or scripted task that explicitly marks the region as needing to remain awake.

Optionally, an OpenSimulator-side heartbeat or management endpoint reporting occupancy/activity to the sleep manager.

Important compatibility test

Before building the complete proxy, verify that OpenSimulator tolerates being frozen for long periods. A simple test is:

PID=$(pgrep -f OpenSim.dll)
kill -STOP “$PID”

# Leave it frozen for a while: first a few minutes, then an hour, then overnight.

kill -CONT “$PID”

After each resume, inspect the OpenSimulator console and logs for:

timer or scheduler catch-up storms;

grid heartbeat / region registration failures;

expired capabilities or authentication/session problems;

script timing problems;

physics anomalies;

network reconnect problems.

Suggested implementation sequence

Freeze test: Verify one existing region survives SIGSTOP for increasingly long periods and resumes cleanly.

Port split: Move that region’s actual OpenSimulator TCP listener to a private/internal port while retaining the original public port for the proxy.

Wake proxy: Create a tiny TCP proxy that sends SIGCONT when the first connection arrives, waits for the internal listener, then forwards the connection.

Idle manager: Add automatic SIGSTOP after an idle timeout.

Multi-region mapping: Generalize the proxy/manager to map public TCP ports to systemd region services and internal ports.

UDP validation: Test normal viewer arrival and operation. Add UDP-specific wake/proxy logic only if testing demonstrates a need.

Bottom line

Given that RAM is not a constraint, avoid checkpoint/restore, CRIU, swapping tricks, and full region shutdown as the first approach. A resident OpenSimulator process frozen with SIGSTOP provides the simplest path to essentially zero idle CPU while retaining near-instant SIGCONT wake-up. A lightweight TCP wake proxy makes the network behavior predictable and lets sleeping regions continue to present stable public endpoints.

OpenSimulator Region Hibernation Strategy

Caraquet Bed and Breakfast

Running a high-quality, 6-room bed and breakfast in Caraquet over the 92 days of summer (June, July, and August) can expect to bring in between $57,400 USD and $114,200 USD in gross revenue (approx. $78,500 CAD to $156,000 CAD).

Your exact income depends on your occupancy rate and your average daily rate (ADR) during the peak festival season. [1]


Summer Revenue Scenarios

A 6-room property operating for 92 days has a maximum summer capacity of 552 room-nights. The potential revenue breaks down across three operational tiers:

Financial Metric1. Conservative Tier2. Moderate Tier3. Optimistic Tier
Average Nightly Rate$160 USD ($218 CAD)$190 USD ($260 CAD)$230 USD ($315 CAD)
Summer Occupancy Rate65% occupancy78% occupancy90% occupancy
Total Room-Nights Sold359 nights431 nights497 nights
Estimated Gross Revenue$57,408 USD$81,806 USD$114,264 USD

Action Plan to Maximize Summer Revenue

  1. Implement Dynamic Weekend Pricing
    • Raise weekend rates by 20% to 30% relative to weekdays.
    • Mandate a 2-night minimum stay for Friday and Saturday bookings.
  2. Capitalize on the Acadian Festival Peak
    • Double your standard nightly rate during the high-demand festival weeks in August.
    • Require a 3-night minimum stay to capture maximum occupancy security. [1]
  3. Incorporate Upsell Packages
    • Package rooms with local excursions, such as Acadian Historical Village passes.
    • Offer high-margin add-ons like picnic baskets, local wine pairings, or late checkouts. [1]

Hidden Costs to Anticipate

  • Housekeeping & Laundry: Hiring staff or using services to turn over up to 6 rooms daily will eat 10% to 15% of revenue.
  • Food & Beverage: High-quality gourmet breakfasts generally cost $7 to $12 USD per guest in raw ingredients.
  • OTA Booking Fees: Platforms like Booking.com or Airbnb claim a 3% to 15% commission per reservation. [1]

Would you like to build out a detailed expense breakdown to find your net profit, or calculate a year-round revenue model that includes the shoulder seasons?

During the off-peak months, room rates drop significantly, and the average price per night in Caraquet falls to between $90 USD and $125 USD (approx. $124 CAD to $171 CAD). [1, 2, 3]

Because Caraquet is a seasonal coastal destination, demand drops sharply after the Acadian Festival ends in mid-August. Many smaller B&Bs shut down entirely for the winter, while year-round operators experience a massive dip in occupancy. [1]


Seasonal Rate & Revenue Breakdown

The off-peak season is divided into two distinct periods, radically altering what a 6-room boutique B&B can bring in:

1. The Shoulder Season (September – October / May) [1]

  • Average Nightly Rate: $105 USD to $135 USD ($145 CAD to $185 CAD).
  • Occupancy Rate: Expect a modest 30% to 45% occupancy, driven primarily by fall foliage tourists, weekend road-trippers, and business travelers.
  • Estimated 6-Room Monthly Revenue: $5,600 USD to $11,000 USD per month. [1, 2, 3, 4, 5]

2. The Deep Low Season (November – April)

  • Average Nightly Rate: $90 USD to $105 USD ($124 CAD to $145 CAD).
  • Occupancy Rate: Occupancy plummets to a quiet 10% to 20%. November and February are historically the lowest-earning and slowest months in the region.
  • Estimated 6-Room Monthly Revenue: $1,600 USD to $3,800 USD per month. [1, 2, 3, 4]

Off-Peak Operational Realities

  • The Utility Trap: Heating a large, historic 6-room Canadian property during harsh New Brunswick winters can cost more than the revenue brought in by a handful of off-season bookings.
  • Commercial Hibernation: Because major attractions like the Acadian Historical Village close for the winter, tourist traffic disappears. [1, 2]
  • Pivot Strategy: To survive the winter, local hosts often shift from nightly B&B rentals to offering discounted monthly rentals for traveling nurses, corporate contractors, or university students.