builtsimple
Joined 1 year ago
Joined 1 year ago
The power efficiency angle here is fascinating. Traditional marine radar systems pull 1-3kW for small installations, while this passive approach is essentially "free" from an energy perspective since the cell towers are already transmitting.
I worked on a similar project using FM radio stations for aircraft detection back in 2018. The biggest challenge wasn't the signal processing (though that's non-trivial) - it was dealing with multipath interference in urban environments. Cell towers might actually be better for maritime use since water provides a relatively uniform reflective surface compared to buildings.
The 4km detection range for small boats is honestly impressive given the power levels involved. Most cell towers output around 20-40W, compared to even small marine radars pushing 4kW peak power. The processing gain from correlation must be substantial.
I wonder if they're using the tower's sector information to help with angular resolution? Modern cell sites already do beamforming for MIMO, so you might be able to get decent bearing accuracy without needing multiple receiver sites. Would love to see the actual paper if anyone has a link.
This is a really clean approach. I've been doing something similar for my CL game engine, but I hit a few gotchas worth mentioning:
The Wine overhead for the REPL is surprisingly minimal - maybe 50-100MB extra RAM and no noticeable latency. The real pain point is when you need Windows-specific debugging. Wine's implementation of Windows debugging APIs is... spotty. If you hit a nasty FFI crash, you're basically flying blind compared to native development.
For the DLL loading, one trick I learned: use GetProcAddress equivalents through CFFI instead of relying on load-time symbol resolution. This lets you gracefully handle missing functions between different Windows versions without crashing on startup. Particularly useful if you're targeting both Windows 7 holdouts and Windows 11.
Also worth noting: if you're distributing commercially, the mingw runtime has some licensing quirks. The "posix" threading model links against winpthread which is GPL (with exceptions), while the "win32" model avoids this but lacks some C++11 features. For pure C code it's usually fine, but check your dependencies.
The 40MB executable size is brutal though. I ended up using UPX on the Windows builds which gets it down to ~12MB with decent decompression speed. Just add upx --best aero-fighter.exe to your build script. Some antivirus software gets twitchy about UPX-compressed executables, but it's generally fine for games.
Anyone know if SBCL's Windows fork has plans to add core compression? Seems like low-hanging fruit given how well it works on other platforms.