The story

Built Between Shifts

How a cruise ship waiter created the app his industry was missing.

The idea came from frustration.

Edwin Vallejos has spent 28 years working as a waiter on cruise ships. He knows the rhythm of life at sea better than most — the early morning shifts, the port days, the quiet hours between duties when the ocean stretches out in every direction and the ship hums steadily toward the next destination.

He also knows the peculiar problem that every crew member lives with: ship time.

Cruise ships operate on their own clocks. As a vessel crosses time zones, the ship's time shifts — sometimes forward, sometimes back — to align with the next port of call. Your phone, connected to cellular networks and GPS satellites, has its own opinion about what time it is. The two rarely agree. For passengers, this is a minor inconvenience. For crew members managing work schedules, alarms, and communications with family back home, it is a persistent source of confusion.

"I needed something that just worked," Edwin says. "Something that understood ship time."

So he built it himself.

Learning to Code at Sea

Edwin is not a software engineer. He has no formal training in computer science, no background in mobile development, no team of developers behind him. What he has is curiosity, discipline, and the kind of practical intelligence that comes from decades of managing complex service operations in demanding environments.

He started learning React Native — a framework for building Android and iOS applications — in the gaps between his duties at sea. He studied documentation on his phone during port days. He debugged code late at night after evening service. He asked questions, read answers, and slowly built something from nothing.

The result is ShipsTime.

What ShipsTime Does

At its core, ShipsTime is a clock. But describing it that way is like describing a ship as a boat.

The application maintains accurate ship time independent of the phone's system clock. This sounds simple. It is not. Phones synchronize their clocks with network time servers, adjust automatically for time zones, and can be corrected manually by users. Any of these events can silently corrupt a naive time implementation. ShipsTime solves this with an elapsed realtime anchor — a technique that measures time from a fixed point using the device's monotonic clock, which cannot be adjusted by network sync or user intervention. Ship time stays accurate through reboots, time zone crossings, and cellular handoffs.

The application also manages scheduled time changes. When a ship adjusts its clocks — typically at 02:00, silently, while most of the crew sleeps — ShipsTime detects the scheduled change, notifies crew members the evening before, and applies the shift automatically. No missed alarms. No confusion about whether the new time has taken effect.

Beyond timekeeping, ShipsTime has grown into something more ambitious: a personal daily assistant for crew members.

The HUPS system — Head's Up Personal Schedule — lets crew members build a shift schedule that spans their entire contract, layered with events, reminders, and notifications. A crew member can set their work shifts once and have them populated automatically across every sailing day until the end of the voyage. Each shift can have its own notification style — a full alarm for the morning shift, a soft notification for the afternoon. The system speaks in plain language: "Your afternoon shift starts in 15 minutes — heads up."

The home screen feeds live contextual information: the current exchange rate between US dollars and the crew member's home currency, weather at the next port, whether there is a Walmart or Ross near the dock in port. A contract countdown tells crew members how many days remain until they go home, with messages that shift in tone as the number decreases — encouraging at the start, urgent at the end, celebratory on the final day.

The application knows where the ship is, where it is going, and when it will arrive. It knows the crew member's name, department, nationality, and contract end date. It uses all of this to surface information that is relevant, timely, and occasionally funny.

Finding Your Ship — and the Ships Around You

One of the features Edwin is most proud of is Ship Lookup.

Crew members spend their careers moving between vessels — signing on to one ship, signing off, then joining another months later. Passengers book voyages months in advance and want to know exactly where their ship will be and when. Ship Lookup lets anyone search any vessel by name and explore its full voyage itinerary across multiple sailings — ports, arrival times, departure windows, and the days at sea in between.

But Edwin went further.

Ships Meet is a feature built from a question every crew member has asked at some point: will my ship and another be in the same port at the same time? For crew members with friends or family on other vessels, this question matters enormously. A shared port day — even a few hours in the same harbor — is a rare chance to connect with people you might not see for months.

Ships Meet searches the itineraries of two vessels simultaneously and identifies every port where they overlap, along with the times and windows where a meeting is actually possible.

Ship Buddy, currently in development, will take this further — a dedicated space for crew members to connect with friends on other ships, track their movements, and coordinate meetups across the fleet. In an industry where your closest friends are scattered across dozens of vessels and multiple ocean basins, it is a feature that addresses a loneliness that the industry rarely acknowledges.

The Technical Reality

Building ShipsTime required solving problems that have no obvious solutions.

Native Android alarm reliability — ensuring that alarms fire correctly after the phone has been rebooted, the app has been swiped away, or the device has entered deep sleep — required writing Kotlin code that registers with Android's AlarmManager at the system level. Getting notifications to fire precisely at ship time, not phone time, required the elapsed realtime model described above.

The application's port guide — a database of 100 cruise ports covering Alaska, the Caribbean, the Mediterranean, Northern Europe, Asia Pacific, and beyond — was built from scratch, with entries for each port's significance, attractions, shopping options, budget stores, transport, and crew-specific tips.

The widget that sits on the Android home screen updates independently, reading ship time from shared storage and displaying the current time, weather, and scheduled changes without requiring the application to be open.

The Ships Meet feature is powered by a backend service running in Google Cloud, capable of cross-referencing the itineraries of any two vessels in the global fleet and identifying shared port windows with precision.

All of this was built by one person, between shifts, at sea.

Who It Is For

ShipsTime is designed primarily for cruise ship crew — the hundreds of thousands of people who live and work at sea for months at a time, far from home, operating on a time system that the rest of the world does not share.

But Edwin has also built it to be useful for passengers — guests who want to track ship time, set alarms for port arrivals, look up their ship's full itinerary, or find out when a friend's vessel will be in the same port.

The application is free. Edwin plans to introduce optional paid features for crew members who want advanced capabilities, while keeping the core functionality accessible to everyone.

What Comes Next

ShipsTime is approaching its first public release on the Google Play Store. The codebase is clean. The core features are stable. The alarms fire correctly.

Edwin continues to develop the application at sea, building features in the hours between duties, testing them on his personal device, and pushing updates to a repository that follows the ship wherever it goes.

He is, in the truest sense, his own best user.

"I built this because I needed it," he says. "I think a lot of people on ships need it too. They just don't know it exists yet."

They will.

ShipsTime is an independent app created by Edwin Vallejos. It is not affiliated with, endorsed by, or connected to any cruise line or shipping company. My views do not necessarily reflect the views of my employer.