-
Keeping track of time in Reconnect
One of the things I have been wanting to do in Reconenct is play a bit with how time is kept. Without giving away too much of the story, multiple planets separated by several weeks of travel spanning different star systems would in my mind lead to a situation where the time standards that we all know today have maybe evolved.
Time-keeping is a core component of my day job as I base all of my work on the use of Coordinated Universal Time, or UTC. It’s a relatively simple system where you just need to keep track of one time for the whole planet and then use an offset to determine the local time.

Since I live in Vancouver, my time zone is -7 UTC (which recently changed from -8), this means that I am seven hours behind from what UTC displays.
Here’s an example using a very basic JavaScript clock:
UTC Your time You’re not limited to offsets that are whole integers either. Examples include Newfoundland time, where the island of the Canadian province of Newfoundland and Labrador has an offset of -03:30, or Central Western Standard Time, which gives it an offset of +8:45. It has its quirks, but translating between these times is fairly painless provided your loved ones are not in either of these trying to call each other.
Imagine the frustration of someone in Cocklebiddy in Western Australia trying to figure out when to call their mother who lives in Dildo, Newfoundland and Labrador.
I hold the belief that this system, while geocentric, works well for humanity even if off-world as if you’re in a spaceship travelling around our star system, it is fine. However, what about calendars? And what about other planets?
This is a silly post that I wanted to do so I could talk a bit about my book. Much of the inspiration for coming up with my own dating scheme originates in both Star Trek and the Wayfinder series by Becky Chambers. I welcome people pointing out any problems with this all, but this post is haphazard and is for certain going to have flaws.
I hate calendars
The importance of calendars should not be understated: knowing where we are in the year is important for ensuring that our agricultural sector knows when to grow crops and for legal and financial systems to keep working. However, I am going to show something that may be frustrating to see for the first time.
The months of September, October, November, and December are not where they should be and the year should really start sometime around March. For those of you familiar with the history of Rome as well as the Roman empire, this something you might know already, but January and February did not exist prior to the latter part of 700 BCE. You’d have ten months or 304 days in the calendar, and then winter.
The names of the aforementioned months mean in Latin the seventh, eighth, ninth, and tenth month–if you don’t speak Latin but speak French, you’ll catch on to how the months are spelt. However, around 713 BCE, January and February were tacked on at the start of the calendar, only because of the importance of end of year celebrations.
While those months were added on to the calendar, it still didn’t mean that the year started on January 1st as it just meant that the calendar rolled over.
Christmas day, which has remained consistent as December 25 for much of Europe, was for a long time the start of the year, whereas some adhered to March 1st due to Roman empire influences, and also March 25th, in honour of conception of Jesus. Adoption of January 1st as the start of the year started with the Germans in 1544 and then finally with the American colonies under British control in 1752, two hundred and eight years later.
American exceptionalism predates their revolution I swear.
I know there are other calendars out there such as the Chinese or Hindu ones rife with similar problems I am sure. However, the internationally-accepted calendar we have today is the Gregorian, which in October 1582, was adopted after it was realised that Europe was using a calendar, the Julian, that was off by over a week due to a miscalculation of leap year handling.

The error made with the Julian calendar was that the year was 325.25 days, lending the thought that exactly every four years, we tack on an extra day. However, the year is actually 365.2425 days, so tacking on that extra day like before may seem okay, but it starts to become a problem as centuries become millenniums. At the start of this section, I made a remark about knowing when to grow crops, well eventually the growing season is not going to align with the equinox and that was a problem if we’re going to find ourselves relying on this calendar.
So when the day of Thursday, October 4th, 1582 came to an end, the next day jumped ahead ten whole days to Friday, October 15th. This is why we now have a complicated rule of a leap year being on every year divisible by four, except where it is divisible by 100 unless it itself is divisible by 400. This is why the year 2000 was a leap year, but the year 2100 will not be.
Are we out of the woods with this calendar? Nope. There is a something called a leap second, which gets added periodically based on all sorts of arbitrary variables that our calendar cannot cope with.. It has been since 2016 that we’ve come to witness some, and that is only because they’ve opted to accept that we can ignore them until the mid-2100s in the hopes we figure out how to get computer programmers to deal with it better or some technology comes around to solve it all together.
Let me close off this section by saying this: our geocentric calendar is going to suck in space but we’re also probably going to be stuck with it because of how we focus on human biology.
We do not have to have 24 hours
Before I proceed: I am going to talk about solar days and solar days only.
If you do the basic equation of 24x60x60, you end up with 86,400, which is the number of seconds the a solar day occupies. The definition of a second originally was based off the rotation of the Earth, but it was then defined based off of the frequency if caesium, which unlike our home, does not deviate from our measurements.

The Earth is actually slowing down. Six hundred million years ago, a solar day would have been 21 hours, but due to influences from the Moon and the Sun or other influences including filling giant hydroelectric dam basins, the Earth itself is not reliable to measure the passage of time. So technically speaking, you could say that a solar day on Earth is 86,400.0025 seconds based on current measurements..
But we don’t need to care about that so 86,400 is good enough for what I am talking about.
While “good enough”, there are only so many factors for that number. There are 96 divisors that could fit into that value.
So why not just abolish it? Why don’t we use a thousand minutes to define a day? There’s 1,440 minutes in a day and it would not be that far fetched to consider something different. Let’s talk about Beat Time.
UTC Beat time My friend, Jessica made me enamoured with the use of .beats, a scheme developed by Swatch in the 1990s. It isn’t metric time, which was adopted by the French Republic post-revolution, but it is a scheme that permits the existing calendar but adopts a scheme that is intended to be used without time zones.
The abolishment of time zones has been proposed by numerous people in the past, including science fiction author Arthur C. Clarke. I did say earlier that the use of offsets was a good idea, but I think that .beats is objectively better.
The idea of saying “I will meet you at 800” works real well in my mind.
Time dilation and its lack of importance
Back to our friend Mars, trying to keep clocks in sync will require you to contend with general relativity. This late-2025 paper in The Astronomical Journal brought this to light:
This study estimates clock rates on Mars and compares them to those on the Moon and Earth. We find that, on average, clocks on Mars tick faster than those on the Earth’s geoid by 477 μs day, with a variation of 226 μs day over a Martian year. Additionally, there is an amplitude modulation of approximately 40 μs day over seven synodic cycles.
Our good ol’ friend relativity means that time keeping between multiple planets not only has to consider rotation and orbit, but the velocity and tidal forces too. 226-477 μs does not seem that significant, but given that you’re dealing with about a quarter to almost half of a a millisecond, it is not immeasurable.
However, it is insignificant for the purposes of the book, so I don’t really care. I just wanted to bring this all up because I thought this part was neat.
Let’s talk about my worlds
In Reconnect, there are four mentioned worlds. They are not Earth, but we still rely on its time despite the setting for reasons I will not get into. Since they’re not Earth, this means that they all have different orbits and rotations.
Galactic Hibernia Augustia Xiadi Procula Local day (mins) 1,440 1,457.28 1,440 1,334.88 1,873.44 Local day (M) 1,000 1,012 1,000 927 1,301 Local year (local day) 365.24 360.91 98 327.1 653.9 To clarify the units, minutes are the ones we know and love, and M is basically a variation of the Internet time I wrote about earlier. A year for each planet is defined by the number of its local days.
As you can see, there are some things we’re familiar with and peculiarities so let’s talk about each planet individually.
Galactic
And right off the bat, we’re not speaking about a planet but the galaxy itself. One of the things I have some level of confidence in is that we’re probably never going to say goodbye to the idea of UTC or a similar successor for as long as our species exists and makes use of technology.
As such, I decided that in order to keep things working smoothly between the multiple planets, space stations, and whatnot that they themselves would rely on a calendar and clock that is the same no matter where you are.
This is in my mind important because while it may be morning in some city on any of these worlds, morning is a concept that exists provided you have a star and rotation.
When it comes to the International Space Station, they use UTC themselves. About every 90 minutes, the station makes a complete orbit around our planet, meaning that the concept of “morning” based on sunrise would be impractical due to the sun appearing and disappearing about sixteen times every standard Earth day.
Hibernia, Xiadi, and Procula
These are all planets with fairly normal rotations and orbits.
Procula is the odd duck in all of this because its short year and long day–its day is 31 hours and 13 minutes whereas Hibernia is Earth-like at 24 hours and 17 minutes and Xiadi being close at 22 hours and 15 minutes.
Despite being habitable, it is in my mind probably a bit shit to live on Procula considering you have effectively an extra quarter of a day added.
A Martian solar day for example is 24 hours and 39 minutes, which might be just fine from a circadium rhythm standpoint. This is not baseless, as this story from the Harvard Gazette writes:
By recording the daily rhythms of hormones and body temperatures in 24 healthy young and old men and women over a one-month period, the researchers conclude that our internal clocks run on a daily cycle of 24 hours, 11 minutes.
You’d still be exceeding it, but being that nobody really has precise sleep schedules, adding an extra 39 minutes to each day probably would not have any long-lasting health effects. I do have to wonder what losing an hour and 45 minutes would do however as is the case with Xiadi.
Augustia
How would you keep time on a tidally-locked planet? If you’re un familiar, a tidally locked orbit is where one side of an object never changes its face towards its parent. This is the situation with the Moon, where we always see its face no matter what due to how it orbits around our planet.

This situation has been observed with exo-planets and while it does not negate the possibility for habitability, it does introduce a question: what is the local time?
My solution was simply to use the galactic time to define what the local time is and define a local day as how long it takes to go around its parent star. It takes 98 galactic days to go around its parent star.
Earth time is not compatible with local time
As you are probably reading, there’s local and galactic time to contend with. Functionally, time is time if you’re ignoring relativity, as the measurement of a second here on Earth is going to be no different than anywhere else in the universe. However, nobody is going to find it practical to have a Martian day be the same as an Earth day when having any sort of conversation.
The reason why I think a local time works just fine is because there’s no real practical way to have any sort of instantaneous conversation once you get a dozen kilometres away from each other.

In The Expanse TV series, a video call between Chrisjen Avasarala on Earth and her husband, Arjun Avasarala-Rao who was on the Moon had them talking over each other due to the approximately two and a half second round trip delay caused by the speed of light. It’s less of a big deal to contend with as the delay is acceptable, but what about Mars?
With a delay of anywhere between three and twenty two minutes dependent on the position of Earth and Mars in relation to the Sun, you’re not going to have this problem simply because it is not practical to do anything real-time. At best, all communication will be instant messages or email.
This is something I tap into with the book albeit it is a background problem. Physics will dictate the size of your empire even if you achieve fast interstellar travel.
As an aside, I’d love to know if anyone has ever explored what undersea telegraph wires would have done were they to have existed before the American revolution of 1776. I have the belief that it would have been merely delayed although the outcome of it all is indeterminable.
If you’re expecting transport between planets to work well, then you’ll have a universal time, but for anything local, time can just be based on whatever the planet is doing in relation to its parent star. The average person is not going to care about what time it is on Xiadi if they’re on Hibernia because nothing is going to arriving in time anyway.
Colloquialisms will survive
Since I touched on the “average person”, while I think the definition of how we track time will change, even if we adopt a clock much like the .beats scheme, it’s likely that we’ll still use terms like “minutes” or “hours” to describe something with only “days” actually sticking to its original definition in some form.
If I tell a friend that I’ll be arriving “in a few minutes”, it’s intended to not be specific as it is intended to just say you’ll be arriving “soon”, which itself is not specific.
Just spill the beans
Okay. So humans are full of bad habits and compromises. I doubt we’re going to ditch our current, internationally-accepted calendar even if we find ourselves spanning multiple star systems. So, I chose to do something down the middle: I got rid of months–sort of.
Reconnect time (simple) Reconnect time (expanded) The format is quite simple: you have an era (defined as BCC or CC), the date itself, and then the time.
The date can be expressed as the number of days in the form of an integer since the start of the year or it can be broken into its traditional month and day in the expanded format.
In space, harvest times don’t really matter unless you’re on Earth, so we can express the time of year in whatever format we want. The local calendar may do whatever it wants, but the galactic calendar can go about in a neutral manner.
As for the year, it is expressed with an era beforehand which is optional, but it is based on an event that dictates the origin of the universe I am working within. There is no actual year per se, but we need one for the sake of this post so this is what we’re getting.
Leap years are kept and follow the same rule although it is offset based off of when the era rolls over.
As for the time itself, you may have noticed that the .beat time of does not correspond with the universe time of . This is because the Internet time is based on whatever it is in Switzerland, whereas the time used in the story is based on UTC.
That’s how I have chosen to do time in this book: just simplify it and don’t refer to months by their names any longer.
Closing
I’ve been sitting on this entry for a week and decided to push it out, errors and all. I’m enjoying my time spent writing this book and hope that the small sliver of insight into what is the world building is looking like earns some excitement.
-
Announcing my book: Reconnect
In my 2025 year-end entry, I announced that I have been working on a science fiction novel, which really is my first-ever book. Its present working-title is “Reconnect” and I’d like to let you all in what it is about.
A quick summary of the story is as follows:
Keira Carroll is the Chief Security Officer aboard The Robyn, a passenger ship travelling its usual route between the planets Hibernia and Augustia.
After a mostly typical transit through a gate leading into The Hub, she and the crew encounter an unusual distress signal and are obliged to investigate.
Boarding a vessel of an unusual design, they find themselves with a crew and passengers seeking refuge claiming to be from somewhere long unreachable. However, doubts about the improbability of their origin are dashed when they witness technology far more advanced than seen before.
This discovery thrusts Keira and her compatriots into a multi-system conflict that had been brewing unbeknowst to the public for decades, with her becoming public enemy number one merely due to her helping those in need.
The summary really is the reason why I have been putting off this blog entry as nothing I wrote was approaching perfect. It has stressed me out to no end and so I have decided that since perfect is the enemy of good, I will post something that is good enough as it is unlikely to be whatever is on the back cover or some listing.
Earlier last year, I started to spend a lot more time compiling my thoughts and notes into a universe of my own creation. It takes place about eight hundred years into the future and its setting involves a period where much of humanity is no longer able to make its way back to its home world. I am trying to adhere to physics to a certain degree although I take some liberties with how things might transpire over the next near-millennia.
Naturally, this book is being written without the aide of any sort of large language models, meaning that if the book is terrible, you can blame me and me alone. So that should be exciting! Much of the book is inspired by Becky Chambers’ Wayfarer series, Andy Weir’s Artemis, James S.A. Corey’s The Expanse series, and Dan Simmons’ Hyperion. The Expanse in particular is a fun one for me because as I built much of the core universe for the book, I began reading the series only to discover that much of what I had in mind was similar to theirs.
Although I have no plans for a protomolecule-like McGuffin I must lament.
I have no idea on how I will publish this book, but I will do my best to keep folks abreast of how things are coming along on my Bsky account. I tend to allocate up to three nights a week to working on this novel.
I’ll close off this post with two drawings from one of the pages of notes I’ve been keeping while putting this all together.


These probably make no sense on the surface, but that is okay! They’re for me to know what is going on and where things are! I can think of things in my head, but it’s easier to draw it all out so I am not later altering what I saw in my memory.
If you’re looking to help me out or offer any advice, my contact details are available on this site, but note that I do have a group of other writers to lean on so I am not doing this without the aide of wonderful people.
-
When will we run out of Social Insurance Numbers?
Recently I had a question: why does nobody talk about running out of Social Insurance Numbers? Every Canadian, permanent resident in Canada, or someone with a work visa receives a SIN. These numbers are actually a finite resource and it has been bugging me about why this never comes up.
This is kind of a shitpost so don’t take it as completely factual, but some effort was put into guessing things.
What is a SIN?
Beginning in 1967, all Canadians, permanent residents living in Canada, and those with a work visa have been issued a Social Insurance Number. It is used as an identifying number permitting you to pay taxes and access government services. It also has horrible feature creep such as being used for your credit history, but that is for another time.
It is a nine-digit number with some special properties.
046 454 286While the above is fictitious, it is a valid SIN. However, it does not mean that SINs range from
000 000 000to999 999 999(or a whole billion of numbers) are available as there is some very basic validation using the very simple Luhn algorithm.Because of this validation, it actually means there are only 100 million valid SINs, but there are some rules with how it is handled.
The first digit of a SIN indicates the type of number it is. A SIN starting from
1through to7means it is issued based on the region you were registered in–not born, but often they align. For example, someone with a SIN starting with a3for sure means the person got their number while living in Québec, whereas7could either mean British Columbia or Yukon, but also something else of which I will get to in a moment.For the rest of the numbers,
0is reserved for the Canada Revenue Agency,8is for business numbers, and9is given to people who are here on a work visa of some sort.With these rules in mind plus the algorithm that validates the numbers, there’s only a pool of 70 million total allocated. However, while that might seem like a lot, especially considering projected populations by the mid-century, there quite a few factors to consider with how the whole system works.
Population broken down by regions
The 1966 census put Canada at just over 20 million people. When the 2021 census was conducted, we reached over 37 million, but it is likely in the 2026 census, we’ll surpass 42 million.
Using Statistics Canada’s projections, Canada’s population by 2050 could be with a maximum growth scenario, just shy of 55 million people. There’s a low-end of the scale, but even then population projections show that we will be flirting with the 50 million mark regardless.
Here’s how it all breaks down by province or rather, Social Insurance Number areas.
SIN Region Area Covered 1966 2021 2050 Proj. 1Nova Scotia
New Brunswick
Prince Edward Island
Newfoundland and Labrador
Ontario*1,974,758 2,409,874 3,453,600 2,3Québec 5,780,845 8,502,000 9,954,700 4,5Ontario* 6,735,481 13,991,643 21,710,495 6Northwestern Ontario*
Manitoba
Saskatchewan
Alberta
Northwest Territories
Nunavut3,630,000 7,047,520 12,192,605 7British Columbia
Yukon1,888,056 5,266,932 7,602,700 If you wish to view the 1966 census, the Government of Canada has a document you can review.
If you wish to view the 2021 census, a non-PDF page can be browsed as well.
Ontario and Northwestern Ontario
Ontario is a special province with special privileges because it is the most populous, so it is given
4and5. However, not all of Ontario is included in the scheme.Northwestern Ontario is lumped in with the
6region, which shoves out about 230,000 people from the pool. This number has remained stable since the earlier census so it doesn’t really have as much of an impact as one might think. I’ve pooled its population with those regions to reflect this scenario.However, the province is now eating into what is available for the Maritime provinces and Newfoundland and Labrador, which is region
1. I did not reflect the population of those provinces but will talk about how I address this later.British Columbia and Yukon’s problem
So there are
0,8,and9numbers that are available, but they’re not intended to be used geographically. However,8has been exhausted and now is dipping into7. This means that the available pool for the province and its northern territorial neighbour is ever so slowly shrinking in availability.Death
The thing not mentioned thus far is that SINs outside of
9are unique to each person, meaning that when a person dies, their number is supposed to go with them. This implies that numbers are exhausting themselves as population grows. Let’s figure out how many people have died in each region since 1967.From 1991 up to 2021, 7,415,242 deaths have been recorded, but if you go up to 2024, you can add an additional million to that count. As the baby boomers continue to age and die off, the deaths will continue to increase and that has to be taken into consideration for the future.
Statistics Canada only keeps track of deaths by place of residence and not from where they were born. It has been difficult to track down official numbers on deaths pre-1991, but Macrotrends has it per 1,000 people. Based on that data, we’re looking at about 10 million people having passed away since the SIN system has been implemented.
That is one whole block of numbers that we cannot use any longer.
When will we hit exhaustion?
Here’s how I think the current pool looks like health-wise with the death figure added in. We’ll assume one SIN per counted person because the number of non-citizens would not affect the outcome that much regardless of what someone might tell you.
SIN Region Available SINs In Use Retired % Remaining 110,000,000 2,409,874 647,503 69.4% 2,320,000,000 8,502,000 2,284,380 46% 4,520,000,000 13,991,643 3,759,378 11.2% 610,000,000 7,047,520 1,893,580 10.5% 710,000,000 5,266,932 1,415,158 33.1% It can be safe to assume that 18.38 million SINs are still available in the system. However, I cannot ascertain how much of region
7has been affected by the exhaustion in8, so it is probably safe to assume that it is lower than that.There are about 459,000 registered corporations federally, with an additional 36,200 more not for profits. The same report suggests that each year, anywhere between 12,000 and 24,000 are dissolved. That’s just for the federal side of things and I am certain that the number of much higher when taking into consideration how many are registered just to individual provinces.
This is a bit beyond my knowledge area, but considering that the
8block has been exhausted, I am certain the 33% figure for region7is significantly lower in availability.Ontario began to dip into region
1at some point in the past decade so it’s difficult to say how much has already been consumed without guesswork. With a projection of up to 7.7 million more residents by 2050, there’s certainty for the province to exhaust that region’s availability even if a slow growth scenario comes into play.So I have no real way to address the actual use but I imagine that considering what is available in its original regions, it’s probably under 10% right now, but not for much longer.
Québec though with its regions
2and3has plenty of room to grow as it is only expected to grow a meagre 1.4 million. Even with expected number retirements, there should remain some room to take on what Ontario is expected to undoubtedly need. Is this a political possibility? I imagine it could be, but who knows there.Here’s the big problem: Western Canada.
British Columbia is expected to grow by 2.3 million people in the coming two decades, which might seem like the biggest problem, but it’s actually everybody else that is going to have a larger impact.
The Prairie provinces plus Northwestern Ontario and the two eastern territories are potentially going to grow by 12.1 million. Alberta alone is suggested to hit 8.1 million people, putting it 600,000 ahead of its western neighbour. Region
6includes these provinces and that sort of growth will for certain exhaust their allocation of SINs.Based on all of this, it is extremely unlikely to occur in the next decade. I would not be surprised to hear talk about in the 2030s and for sure expect by the 2040s that the way we handle the Social Insurance Number system will require a change.
How to fix this
Like all problems including climate change and resource exhaustion, this is a problem for the future and for sure the Gen Z types who are entering the workforce will be managing this with the generation behind them rolling their eyes at their solutions.
Let’s let this dumb millennial suggest a few and what each has as for a problem.
Just add a digit
This is probably the most sensible idea and can still be verified the same way. It would add about a billion more SINs to the available pool by making each region allocated with 100,000,000 numbers. This should be fine until the United Nations has to take over every country because climate change causes the oceans to rise many metres, causing ruin to national governments and to also ensure political unity in the face of the Martian Congressional Republic.
But that is not going to happen for a few more centuries, so no need to worry.
From a technical standpoint, it would require most to permit a tenth digit. You can grandfather in existing number by appending or prefixing a zero at the end depending on implementation.
This is how I would do it and is therefore unlikely to happen.
Reuse numbers
Don’t.
Because of feature creep such as credit ratings being dependent on these numbers, I would not recommend this. Ten million SINs have likely been retired merely to due to death alone since its implementation and that number is going to be significant considering how many there are left to go.
This would for certain lead to fraud of some sort.
I don’t expect this to occur.
Come up with a new system
From a technical standpoint, this is probably the second worst idea after reusing. Imagine being told that the nine digit number you know off the top of your head from having filled out job applications a dozen times as a teenager is now going to be replaced with something else.
I am willing to bet that some consultants will make retirement by 35 if they were to get the government on board with this one, so expect this one to be floated towards the top unfortunately.
This is the most expensive and will make private corporations a lot of money, so it is probably the most likely.
Ditch the algorithmic check
It’s not hard to generate a SIN number. A simple Python script is often enough.
def check(sin): def dof(n): return [int(d) for d in str(n)] digits = dof(sin) odd = digits[-1::-2] even = digits[-2::-2] csum = 0 csum += sum(odd) for d in even: csum += sum(dof(d*2)) return csum % 10 def valid(sin): return check(sin) == 0 for x in range(100000000,800000000): if valid(sin=str(x).zfill(9)): print(x)The above just generates numbers, confirms it against the Luhn algorithm, and prints it out if valid. This code has been written countless times and I am sure sits in various repositories. With a few changes, you can use the above to generate credit card numbers too since they use the same check–I recommend against openly doing this for legal reasons.
If you have a better way to write the above, have at it. I am a terrible software developer.
The actual problem is attaching to a name. However, offline checking of a SIN is useful in some scenarios. The government does not want everybody to all the time check against some central computer.
However, as I write this, I don’t think that I have ever had my SIN confirmed as my own. You cannot even get a plastic card with the numbers on it so does it matter? It does make it difficult to spit out a number on the spot, but like the code example above, you could just randomly pick from one anyway and then make it a problem when it comes to tax time.
Because of a potential fraud angle I am sure that the government could come up with, I don’t think that they will choose this option.
Closing
I am so glad that this is not my issue to tackle ultimately. Perhaps the 2038 computer bug issue will solve this problem for us, which is about the time the federal government would be in the midst of taking this issue seriously.
-
Simon Fraser University's Gondola Makes Sense

I had the opportunity as a donor for Movement to attend an event viewing what could be the future of transit for students, staff, and nearby residents of Simon Fraser University.
One of the key problems for SFU and the surrounding Univercity neighbourhood is that it is situated atop of a 370 metre-tall mountain. The university, first established in 1965, was built on a plateau on Burnaby Mountain at the request of its first chancellor, Gordon Shrum, who desired its location due to the land being cheap and also being not terribly far away from the rest of Metro Vancouver.
Since its inception, the university has been only accessible by road either by Burnaby Mountain Parkway from the western approach, connecting to Hastings Street towards Vancouver, or via Gaglardi Way, an expressway that connects from the south via Lougheed Highway. The latter road is named for Phil Gaglardi, former Minister of Highways best known for constantly getting speeding tickets and expanding the province’s highway network.
This has meant that your only option to get to the top has been via car or bus. For the approach from the west, the road is not as steep going from about 120 metres, but from the south it’s a different story. Much of the Millennium Line sits at slightly above sea level (47 metres) and SFU’s designated station (Production Way-University) is no different.
As a consequence, buses are required to go from the bus loop to the very top on ten minute intervals at peak time. At crush capacity, they’re ferrying usually a hundred or so passengers although I have read that it has reached as high as 140–the bus route number itself (145) is kind of a hint of what it could do I guess.
One of the jokes I’ve heard about this route is that this is where buses go to die. The transmission is taking a serious hammering as it carries its own weight plus the weight of its passengers. Up and down it goes day in and day out with only a respite given for weekends, holidays, reading breaks, or service on a much gentler route.
So what is the alternative? A SkyTrain spur up the hill is out of the question as it would have to be almost two kilometres longer than the bus because you’d need a gradient that a train will like.
Trains do not like hills and so for them to make a journey up one, it has to be a slope that will permit adequate adherence. For it to also have little environmental impact, it would require much in the way of tunnelling and thus will become expensive quite quickly.

TransLink’s answer is to take inspiration from the likes of one of Vancouver’s favourite winter activities: skiing.
The transit agency has been discussing a gondola proposal for a number of years, but it would not be the first to implement it as rapid transit. In 2004, Medelin, Colombia opened its first line of its Metrocable service and most recently in 2025, Paris opened its first line, Câble 1. These systems have proven to be quite reliable and inexpensive for either built-up areas or areas with geography much like ours.

This gondola used for demonstration purposes could very well be the sort we end up using. It has room for 32 people and the recommended route implies that were would be seven cars in either direction.
With a three minute trip each way at 30 KM/h, each car would be doing ten round trips each hour and move well over two thousand people up the hill during that time. This would be regardless of weather conditions or time of day as the gondolas would always be at a fixed capacity all day, every day.
Additionally, it would be approximately twice the capacity of any bus made available by TransLink and also take a quarter of the time to get either up or down.
One of the other problems with the hill is that it’s subject to adverse weather–in particular wind and snow. It’s a no brainer that snow would have no affect on these sort of vehicles due to their use with mountains in and around Metro Vancouver. However, it was suprising for me to learn that the type of system TransLink is aiming for would be able to handle the severe winds that we get in the city during late autumn and early winter.
A story I often cite is my having to be asked to leave SFU’s library not because of my own behaviour but because if I wanted to get home, I’d have to leave now due to the buses being forced to cease activity up and down due to snow. In the process of taking that very last bus, the articulation and the slippery conditions caused it to jackknife. This is something that couldn’t happen with a gondola.

I guess this then brings up an important topic: safety.
In both 2019 and 2020, a nearby gondola in Squamish had its cable cut. While in neither incident was anyone killed as the gondola was not in service, the 2020 incident almost resulted in the injury of a security guard.
However, I have been informed that this is a single cable system and TransLink is looking at a triple one, meaning that the difficulty in inflicting this sort of vandalism would be high. Also, unlike Squamish, Burnaby is not in a rural area and it would be much easier to both secure and monitor for any sort of undesired activity in places where one may have access out of sight.

What is next for TransLink then?
Funding for the gondola is still up in the air–pun intended. The business case has been made and it has been suggested that perhaps this year or next, the project will finally be announced as going ahead. I for one want to see it built. Perhaps with its success, we’ll see similar systems elsewhere in Metro Vancouver.
-
Adventures with a Sailor Moon CD-ROM
A couple of years ago, I picked up this Sailor Moon disc. I think I got it from eBay.


Unfortunately, I had mistaken this disc for something else. However, it turns out to be a fun little multimedia application specifically for the Macintosh. Let’s explore it and see what we can find and also what we can also do with it!
Extracting the disc
So right off the bat, my modern Mac running macOS 26 cannot read the disc when loaded from my external optical drive connected via USB C.

I was not able to use
hdiutilto duplicate the disc into an ISO and when I tried to duplicate it usingddit would dump contents out, but it would not be seen as a proper disc.╭─cariad@donnager ~/Local ╰─➤ file Sailormoon.iso Sailormoon.iso: dataWhat is the solution? Getting the drive to be read in Basilisk II failed regardless of it being Windows or macOS, but strangely a Windows-based tool did end up working out.

HFSExplorer could read the disc and permitted me to create a HFS disk image that I could mount in macOS.

So now I have the files visible to me in a format I can use with Basilisk II.
╭─cariad@donnager ~/Local ╰─➤ file Nakayoshi.img Nakayoshi.img: Macintosh HFS data (mounted) block size: 11264, number of blocks: -374, volume name: untitledLet’s see what is within!
File contents
There are 11 files visible on the disc with all filenames encoded in MacJapanese. It was annoying to translate the encoding over as while Shift-JIS tools supposedly should be able to work with it, anything I threw at the names would not play nice.
Fortunately, I was able to view the intended filenames in HFS Explorer and then figure out things that way. Here are the files and what they are.
MacJapanese Unicode Translation Type of file ã‡êØïœêg.ÉÄÅ[ÉrÅ[金星変身.ムービーVenus Transformation Apple QuickTime movie âŒêØïœêg.ÉÄÅ[ÉrÅ[火星変身.ムービーMars Transfomration Apple QuickTime movie ǧÇ≥Ǩïœêg.ÉÄÅ[ÉrÅ[うさぎ変身.ムービーUsagi Transformation Apple QuickTime movie ÇøÇ—Ç§Ç≥ïœêg.ÉÄÅ[ÉrÅ[ちびうさ変身.ムービーChibiusa Transformation Apple QuickTime movie É^ÉLÉVÅ[Éhâºñ .ÉÄÅ[ÉrÅ[タキシード仮面.ムービーTuxedo Mask Apple QuickTime movie ÉIÅ[ÉvÉì.ÉÄÅ[ÉrÅ[オープン.ムービーOpening Apple QuickTime movie êÖêØïœêg.ÉÄÅ[ÉrÅ[水星変身.ムービーMercury Transformation Apple QuickTime movie ïëë‰.ÉÄÅ[ÉrÅ[舞台.ムービーStage Apple QuickTime movie íºéq.ÉÄÅ[ÉrÅ[直子.ムービーNaoko Apple QuickTime movie ñÿêØïœêg.ÉÄÅ[ÉrÅ[木星変身.ムービーJupiter Transformation Apple QuickTime movie SAILORMOONSAILORMOONSailor Moon Executable It’s interesting how ムービー translates to “movie” to indicate that it is a Quicktime file. This is something I am familiar with as files in HFS are treated differently than say in Linux or Windows. There are resource forks and data forks for files. The actual data of the file is in the data fork, but the resource fork indicates that why kind of data it is. You can remove
.movfrom a file and it will still launch in QuickTime because the resource fork says it is a QuickTime file.That is the reason why each filename ends with
.ムービーor really.ÉÄÅ[ÉrÅ[because the resource fork is all that matters. An extension in Mac OS from this era is really a formality and is truly only required for cross-platform compatibility. Even today it barely matters as evident when taking a screenshot as while it is a PNG, it lacks the extension.png.I think screenshots were originally
.ps(PostScript) files back when Mac OS X came out, but I digress.In any event, getting any of these videos to play nice with VLC or FFMPEG also proved to be quite annoying. The lone executable is actually most interesting: it’s a container for a Macromedia Shockwave file.
ScummVM cannot execute it
Since it was written with Macromedia Director 3, it should be supported by ScummVM right? Support for the format has been around for a few years now, so I figured that I’d give it a go.

It does permit me to go further than this, but when I attempt to load it, it goes into a loop where it restarts. This is something which has been reported by a friend of mine when I lent the disc to her and she came across the problem.
I’m not up for going down this rabbit hole so I have a different idea instead.
Extracting the Director data
Using ProjectorRays, I figured I could just decompile it all down to its constituent parts.
C:\Users\Cariad\Documents\Nakayoshi>c:\Users\Cariad\Downloads\projectorrays-0.2.0.exe decompile -v SAILORMOON Codec unsupported: APPLHowever, it ended up failing because the file was made for Macintosh System and this tool doesn’t know what an
APPLbinary is–it probably expects to seePE.But luck would have it that another tool, director-files-extract would work with Macintosh files and so I was left with a bunch of files ending with the
.dxrextension.╭─cariad@donnager ~/Local/Nakayoshi/SAILORMOON ╰─➤ ls -la total 1033472 drwxr-xr-x@ 26 cariad staff 832 Dec 29 09:18 . drwxr-xr-x@ 20 cariad staff 640 Dec 29 14:52 .. -rw-r--r--@ 1 cariad staff 8196 Dec 29 09:18 .DS_Store -rw-r--r--@ 1 cariad staff 2211836 Dec 29 09:04 .DXR -rw-r--r--@ 1 cariad staff 52641070 Dec 29 09:04 Shared.dxr -rw-r--r--@ 1 cariad staff 2616890 Dec 29 09:04 SM_.DXR -rw-r--r--@ 1 cariad staff 2398300 Dec 29 09:04 SM.DXR -rw-r--r--@ 1 cariad staff 1354790 Dec 29 09:04 SM.DXR_1 -rw-r--r--@ 1 cariad staff 4744824 Dec 29 09:04 SM.DXR_2 -rw-r--r--@ 1 cariad staff 2338738 Dec 29 09:04 SM.DXR_3 -rw-r--r--@ 1 cariad staff 1836318 Dec 29 09:04 SM.DXR_4 -rw-r--r--@ 1 cariad staff 1323160 Dec 29 09:04 SM.DXR_5 -rw-r--r--@ 1 cariad staff 132493868 Dec 29 09:04 SMAUT.DXR -rw-r--r--@ 1 cariad staff 1631360 Dec 29 09:04 SMC.DXR -rw-r--r--@ 1 cariad staff 15188776 Dec 29 09:04 SMCHIB.DXR -rw-r--r--@ 1 cariad staff 1836008 Dec 29 09:04 SMJUP.DXR -rw-r--r--@ 1 cariad staff 49982622 Dec 29 09:04 SMJUPITE.DXR -rw-r--r--@ 1 cariad staff 2812764 Dec 29 09:04 SMM.DXR -rw-r--r--@ 1 cariad staff 17363390 Dec 29 09:04 SMMAM.DXR -rw-r--r--@ 1 cariad staff 32296774 Dec 29 09:04 SMMAR.DXR -rw-r--r--@ 1 cariad staff 2032030 Dec 29 09:04 SMMER.DXR -rw-r--r--@ 1 cariad staff 30326954 Dec 29 09:04 SMMERCUR.DXR -rw-r--r--@ 1 cariad staff 49514662 Dec 29 09:04 SMMONT.DXR -rw-r--r--@ 1 cariad staff 90767138 Dec 29 09:04 SMMOO.DXR -rw-r--r--@ 1 cariad staff 1847186 Dec 29 09:04 SMV.DXR -rw-r--r--@ 1 cariad staff 29520352 Dec 29 09:04 SMVENU.DXROne little catch with the files above, a number of files ended up with an
*(asterisk) in each which proved to be a problem when I moved on so I removed it from all the files. HFS permits any character in a filename save for:and/(the latter more of an issue with HFS+), which means moving the files out into a Windows application later as I needed to would never work.
DXR files by themselves cannot be opened with Macromedia Director, but they can be decompiled. The aforementioned ProjectorRays tool has a
decompilefunction which will permit me to open everything.
Great. After decompiling and bring them over to Basilisk II, the files are visible to the software.

Man. I forgot about how miserable old Mac OS was–memory management then was a huge chore and is a consequence of the weak (and “weak” is really not saying much) multitasking that existed in this operating system. In any event, these are now readable Director files. However, I could not figure out how to get the data into readable files so another tool to the rescue.

The same developer who created the tool to rip the DXR files out also created a tool to extract the content from within called Director Cast Ripper. I now have all of the audio and images extracted from it! I even have the scripts copied over although I don’t intend to do anything with them.
Success with images
After getting the tools to all play nice, I finally had a directory full of images which were both in
.PNGand.BMPformats. I only care about PNG files really, so let’s count them.╭─cariad@donnager ~/Local/Nakayoshi/Extract/Exports ╰─➤ find . -type f -name "*.png" | wc -l 766At 766 results, it might seem like many, but I wonder if there were a lot of duplicates so I decided to just do a simple MD5 over all of them to get an actual unique count.
╭─cariad@donnager ~/Local/Nakayoshi/Extract/Exports ╰─➤ find . -type f -name "*.png" -exec md5sum {} \; | awk '{print $1}' | uniq | wc -l 766Apparently not! That is a pretty decent haul of images for a 1994 collection of images from a manga that had only been out for a few years. Some of them are buttons for the interactive portion of the disc, but other than the majority is the really good stuff!
And they’re fairly decent resolution for the time with some of the images being 1024x768 or thereabouts depending on orientation and scale. Here are a few examples:



Frustration over video
So earlier I mentioned that there are ten videos that are supposedly QuickTime movie files. They’re all playable from Mac OS 8 when running in Basilisk II.

macOS sees them in that format and the
filecommand in the terminal spits outApple QuickTime movie (unoptimized)so you’d think that I could play them. Well, apparently not.
Also one of files is also reported as
DIY-Thermocam raw dataso maybe I should not put too much weight into the output of thefilecommand in the end.In any event, QuickTime, VLC, and IINA all refuse to play the videos despite them working just fine when playing it in the actual application under Basilisk II. Older QuickTime files tend to struggle under newer Macs and apparently I am not alone with this problem as evident by a post from the Apple discussions site.
In this person’s case, it was a capture from a VHS tape on some mid-1990s Macintosh clone. It looks pretty dire getting it to work on anything made earlier I wager.
Maybe FFmpeg can shed some light on these files?
╭─cariad@donnager ~/Local/Nakayoshi ╰─➤ ffmpeg -i VenusTransformation.mov ffmpeg version 8.0.1 Copyright (c) 2000-2025 the FFmpeg developers built with Apple clang version 17.0.0 (clang-1700.4.4.1) configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/8.0.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon libavutil 60. 8.100 / 60. 8.100 libavcodec 62. 11.100 / 62. 11.100 libavformat 62. 3.100 / 62. 3.100 libavdevice 62. 1.100 / 62. 1.100 libavfilter 11. 4.100 / 11. 4.100 libswscale 9. 1.100 / 9. 1.100 libswresample 6. 1.100 / 6. 1.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb11024000] moov atom not found [in#0 @ 0xb11020000] Error opening input: Invalid data found when processing input Error opening input file VenusTransformation.mov. Error opening input files: Invalid data found when processing inputThe error
moov atom not foundled me to this Reddit post from five years ago, which then led me to try a tool called “untrunc” in order to untruncated the file.However, this came up in the documentation:
You need both the broken video and an example working video (ideally from the same camera, if not the chances to fix it are slim).
None of the videos on the disc work when I want to play them locally.
But then an idea. Can I fix them in Basilisk II?

When you save the file, there’s a checkbox to make it playable on non-Apple computers. Mind you, I am using an Apple computer to do all of this work (an M1 Max Mac Studio from 2022), but the operating system then is a completely alien creature to the operating system now so let’s just ignore that.

Success! That is the trick as I can now open them in VLC. Just use the old computer to export it into a format that everyone can view. So let’s rename all of the files and then export them all out. I decided to keep an English naming scheme for all of these files since it will be manageable on my end.

Now let’s read them with FFmpeg and see what we get.
╭─cariad@donnager ~/Local/NewSailormoon ╰─➤ ffmpeg -i Opening.mov ffmpeg version 8.0.1 Copyright (c) 2000-2025 the FFmpeg developers built with Apple clang version 17.0.0 (clang-1700.4.4.1) configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/8.0.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon libavutil 60. 8.100 / 60. 8.100 libavcodec 62. 11.100 / 62. 11.100 libavformat 62. 3.100 / 62. 3.100 libavdevice 62. 1.100 / 62. 1.100 libavfilter 11. 4.100 / 11. 4.100 libswscale 9. 1.100 / 9. 1.100 libswresample 6. 1.100 / 6. 1.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Opening.mov': Metadata: creation_time : 2025-12-29T15:14:02.000000Z Duration: 00:00:02.67, start: 0.000000, bitrate: 1445 kb/s Stream #0:0[0x1](eng): Video: cinepak (cvid / 0x64697663), rgb24, 640x480, 1442 kb/s, 10.50 fps, 30 tbr, 30 tbn (default) Metadata: creation_time : 2025-12-29T15:14:02.000000Z handler_name : Apple Video Media Handler vendor_id : appl encoder : CinepakFantastic. We have good ol’ Cinepak here. They’re surprisingly at 480p although at 10-11 frames per second so this is going to be a bit dire. However, let’s convert them all to H.264 for reasons that’ll make sense later.
╭─cariad@donnager ~/Local/NewSailormoon ╰─➤ ls -la total 106696 drwxr-xr-x@ 24 cariad staff 768 Dec 29 15:22 . drwxr-xr-x@ 23 cariad staff 736 Dec 29 15:08 .. -rw-r--r--@ 1 cariad staff 254586 Dec 29 15:19 ChibiusaTransformation.mov -rw-r--r--@ 1 cariad staff 135294 Dec 29 15:22 ChibiusaTransformation.mov.mp4 -rw-r--r--@ 1 cariad staff 875652 Dec 29 15:18 JupiterTransformation.mov -rw-r--r--@ 1 cariad staff 251332 Dec 29 15:22 JupiterTransformation.mov.mp4 -rw-r--r--@ 1 cariad staff 891752 Dec 29 15:18 MarsTransformation.mov -rw-r--r--@ 1 cariad staff 292343 Dec 29 15:22 MarsTransformation.mov.mp4 -rw-r--r--@ 1 cariad staff 827380 Dec 29 15:19 MercuryTransformation.mov -rw-r--r--@ 1 cariad staff 229363 Dec 29 15:22 MercuryTransformation.mov.mp4 -rw-r--r--@ 1 cariad staff 15665124 Dec 29 15:18 Naoko.mov -rw-r--r--@ 1 cariad staff 4075826 Dec 29 15:22 Naoko.mov.mp4 -rw-r--r--@ 1 cariad staff 481781 Dec 29 15:19 Opening.mov -rw-r--r--@ 1 cariad staff 178255 Dec 29 15:22 Opening.mov.mp4 -rw-r--r--@ 1 cariad staff 709998 Dec 29 15:04 SailormoonTransformation.mov -rw-r--r--@ 1 cariad staff 258981 Dec 29 15:22 SailormoonTransformation.mov.mp4 -rw-r--r--@ 1 cariad staff 17630400 Dec 29 15:18 Stage.mov -rw-r--r--@ 1 cariad staff 7715465 Dec 29 15:22 Stage.mov.mp4 -rw-r--r--@ 1 cariad staff 923519 Dec 29 15:19 TuxedoMask.mov -rw-r--r--@ 1 cariad staff 382557 Dec 29 15:22 TuxedoMask.mov.mp4 -rw-r--r--@ 1 cariad staff 709998 Dec 29 15:19 UsagiTransformation.mov -rw-r--r--@ 1 cariad staff 258981 Dec 29 15:22 UsagiTransformation.mov.mp4 -rw-r--r--@ 1 cariad staff 683562 Dec 29 15:19 VenusTransformation.mov -rw-r--r--@ 1 cariad staff 266030 Dec 29 15:22 VenusTransformation.mov.mp4Man. Video codecs have come a long way since the 1990s. We’re seeing at least a quarter the size by just converting them to H.264. That said, the emulated Quadra 950 from that time period would be unable to render the frames from the newer video files at any respectable rate.

Annoyingly there is a problem with the
Naoko.movfile (formerlyíºéq.ÉÄÅ[ÉrÅ[) in particular where the audio and video violently corrupts. This issue appears on the original source file and I am uncertain whether it is from attempting to play it or perhaps it is formatted friendlier for Macromedia Director?
Nope. Same awful problem persists when playing in here too. Does it persist in the actual application?

It does. There is a possibility that there is an issue with the original application or it is my copy. This is not my problem to solve it seems!
What next?
Well, I have plans for all of this so stay tuned! Hopefully this doesn’t drop off of my desk!