8 ms·
I wish more companies cared about making their product accessible with poor connection, but also no connection at all. Google Maps is probably the most egregio
by bertil 4y ago
I wish more companies cared about making their product accessible with poor connection, but also no connection at all.
Google Maps is probably the most egregious example of that: you are likely to need it outside of your usual Wifi, and possibly where cellular coverage is poor. Why not offer reasonable off-line support? The Apple TV app is confusing too: they offer the option to download shows (like Netflix does) but the feature is essentially unusable.
- dmd 4y agoI’m real confused about you calling out Google Maps when it has fantastic offline support (which I use all the time).
- NavinF 4y agoHe’s probably talking about the web version. Under any other interpretation that comment makes no sense.
- samcrawford 4y agoI'm not so sure. If I load a saved map in Google Maps (e.g. someone has saved a route with markers and shared it with me), and then I go offline whilst viewing it, Google Maps on Android will show an error after a while and I'll lose the route and markers entirely. This occurs even if I've marked the area as an offline map. I guess it's just a case that they treat the saved routes in a different way. But it's really annoying for my use case (which is finding crewing points for long distance running events in the middle of nowhere with no mobile coverage).
- bertil 4y agoI was talking about Google Maps on iOS. There are countless instances where it will refuse to work without a connection; there's even a modal pop-up to scold you for not having a connection, rather than trigger a dedicated mode like other Google apps. You can't lock in a destination and have the routing work consistently until you are there. The journey will disappear at some point without a warning. You can't find it back without an active connection. Simply having the option to lock a journey and only delete it when expressly told so would be a major improvement. Sure you can download local maps. but that just saves some bandwidth. Neither Search nor Routing works offline. Without Routing, the app loses most of its uses. Not having Search wouldn't be a problem if you could pick a location on a map and ask: what's there? or even flag it––but you can't. You have to find the name otherwise and search for that, often zooming ridiculously close to get the location you are interested in to appear.
- NavinF 4y agoBesides being unable to find the names of nearby stores on the map, I haven’t experienced any of that with Google Maps on iOS. I saved an offline map many years ago and the app automatically uses it if I turn on airplane mode or the internet drops when I’m driving. Navigation still works and I can change destinations while offline. Maybe you drew the short stick on an AB test?
- OkGoDoIt 4y agoDriving generally works well offline, but biking, walking, and transit don’t. Some random features like search history or shared lists also seem to not work or work badly offline. Maybe you and the parent comment are using it differently?
- bertil 4y agoSounds like it, but I'm not sure why they would run it for so long.
- tgsovlerkhgsel 4y agoOffline support on Android is excellent. I'd guess most people don't use it offline on a laptop.
- roflc0ptic 4y agoMaps does let you download areas for offline use. I'd agree that it's non-ideal for long trips, though in practice this has never been a huge problem for me.
- secondcoming 4y agoHERE maps are downloadable.
- bombcar 4y agoHERE is wonderful for international travel - you can download entire countries or subsets thereof, and turn off data roaming and just use GPS. Then you can stick to free wifi.
- LAC-Tech 4y agoIt's a hard problem. Offline means you're dealing with conflict detection, resolution, and caching strategies. Do you do multi-master? Have a single remote master but cache commands as a fallback? How do you test your solution? And if you're dealing with the web, then you have to deal with IndexedDB which can sometimes be nuked by the browser, or have show stopping bugs (looking at you safari). There's also limited capacity compared to severside. Even if you use a library, under the hood they all use IndexedDB - there is no getting away from its limitations. If anyone's interested in this stuff, I'd love to chat. I'm between contracts and trying to make an old app of mine work offline, lots of fun but also challenging.
- z3t4 4y agoA naive approach is to have a integer named "version" and a bool named "synced" beside each post/record/row. Then increment version and set synced=false when updating, and synced=true when synced. Or make the data/state immutable and just have the "synced" variable. A more complicated approach is to have transform operations for state changes, with a version variable, then the version variable is incremented on on a central server each change and decide in which order the transform operations should be applied.
- withinboredom 4y agoThat only works until the user has TWO offline devices and both making conflicting changes. A better solution would be to use something like Simperium (https://simperium.com/ https://simperium.com/). Disclosure: I work for Automattic.
- tharkun__ 4y agoNothing against you personally. I just would like to point out this awesome display of jumping into specific solutioning and show of technical prowess instead of staying on the abstract level of the parent and discussing the pros and cons and challenges of offline operation. None of the approaches you are talking about here are new. There are many ways to implement this. The parent knows this and simply abstractly said you need to "do conflict detection". And yes that is an issue. A solvable one which has implications though and the level of challenge depends on the domain and the number of operations (potentially dependent on each other operations) that you made while offline. In your domain, do multiple users usually edit the same 'thing' simultaneously or at least with a frequency higher than the amount of time you are offline? If so you have a challenge on your hand. A simple example of this is something we all do a lot. Coding. If you use say git and work offline 8h a day and push at the end of the day and you 10 other developers working on the same code base and your code and your work is structured in a way where all of you need to make changes to the same part of the code base you are going to be in a world of hurt of solving conflicts. Luckily code structure and work breakdown can be done in a way where you will only have minimal conflicts. Git also chose a specific resolution strategy: last one to the table has to deal with conflict resolution. Depending on your domain and how many dependent and complicated operations you allowed the user to make this can be really frustrating for users and impossible to resolve in an automated way. Of course simply providing an offline mode for your email program in a mailbox only you have access to is a much simpler domain with easily automatable resolution strategies that are easy for users to understand as well.
- seper8 4y agoGoogle Maps is literally free and here you are complaining it won't work when you don't have internet... But it will: https://support.google.com/maps/answer/6291838?hl=en&co=GENIE.Platform%3DAndroid https://support.google.com/maps/answer/6291838?hl=en&co=GENI...
- switchbak 4y agoHe was talking about it crashing while navigating and not coming back up properly with no connection. That's a valid concern. Offline maps are nice too, but this wouldn't have helped him get his navigation route back. I've experienced many of these issues through the years too. And a dedicated offline navigation program is probably the way to go. I do think your tone is somewhat unnecessarily dismissive though.
- adrianople378 4y agoI use Organic Maps exactly for this reason. Google Maps is too unreliable when cycling and I need an offline solution (also OpenStreetMaps have better coverage of cycling routes than Google does). https://organicmaps.app/ https://organicmaps.app/
- ChrisMarshallNY 4y agoThe best way to do this, is minimize the amount of data, going back and forth. In today's age, with multi-megabyte 4K background videos, and enormous dependency chains, that's a hard sell. I dealt with it, by writing my own backend, with a fairly optimized API, and consulting it in JIT "bursts." That’s considered “square,” these days.