NavStation MacENCx64 - Marine Navigation Software
NavStation MacENCx64 is maritime navigation software originally written in the 1990s, serving both yacht owners and commercial vessels. Khaled maintained and modernized this critical safety software, working across a multi-language architecture spanning C, Objective-C, and Swift. The project involved careful code archaeology to understand and preserve decades of navigation algorithms while bringing the interface into the modern era.
Problem Solved
Preserving and modernizing critical maritime safety software that had decades of proven navigation algorithms but needed modern interface updates and platform compatibility
- •Maintained legacy C codebase containing core chart rendering and GPS calculations
- •Bridged legacy code through Objective-C middleware layer to modern Swift UI
- •Performed code archaeology to understand undocumented 1990s algorithms
- •Implemented incremental modernization without disrupting proven navigation logic
- •Ensured marine chart rendering accuracy for safety-critical applications
- ✓Maintained legacy navigation codebase with origins spanning back to the 1990s
- ✓Successfully bridged three programming language generations (C, Objective-C, Swift) in single application
- ✓Preserved critical maritime safety calculations while modernizing user interface
- ✓Supported software preservation after company acquisition by yacht owner committed to maintaining software for marine community
- ✓Delivered ongoing maintenance ensuring reliable navigation for yacht and commercial vessel operations
Performance
- • Maintained real-time GPS tracking and chart rendering performance
Technology Stack
Challenge
Understanding and maintaining code written in 1990s C without original documentation
Solution
Performed careful reverse engineering through code analysis and incremental testing, building understanding through systematic exploration of the codebase
Impact
Successfully maintained navigation accuracy while enabling ongoing modernization
Challenge
Bridging C core with modern Swift UI through Objective-C intermediate layer
Solution
Maintained clean interface boundaries between language layers, ensuring each layer communicated through well-defined interfaces
Impact
Achieved stable multi-language integration enabling ongoing development
Situation
MainSail Holding LLC operated NavStation MacENCx64, a marine navigation software with origins in the 1990s. The software served yacht owners and commercial vessels with critical navigation capabilities. After the company was acquired by a yacht owner committed to preserving the software for the marine community, ongoing maintenance and modernization became essential.
Task
Khaled was engaged as a senior macOS developer to maintain and modernize the legacy codebase while preserving the proven navigation algorithms that had served mariners for decades.
Action
The developer approached the project as an exercise in code archaeology, systematically exploring the C codebase to understand undocumented navigation algorithms. Clean interface boundaries were maintained between the C core, Objective-C middleware, and Swift UI layers. Each modification was carefully tested to ensure navigation accuracy remained uncompromised. The modernization focused on the user interface while preserving the battle-tested calculation core.
Result
The software continued to serve the maritime community with reliable navigation capabilities. The multi-language architecture remained stable and maintainable, and the preservation effort ensured that decades of proven navigation logic would continue to protect mariners at sea.
Technical
- • Legacy code archaeology and reverse engineering
- • Multi-language application architecture (C/Objective-C/Swift)
- • Marine navigation systems and chart rendering
- • GPS integration and navigation calculations
Soft Skills
- • Working with undocumented legacy systems
- • Balancing modernization with preservation
- • Remote contractor collaboration
Key Insights
- 💡 Decades-old code often contains proven algorithms that should be preserved rather than replaced
- 💡 Multi-language architectures require clear boundaries and disciplined interface design

