The greatest part of this project is that if you ever get sued for trademark infringement, you can force their lawyers to have to explain why anyone could possibly confuse the product of Comcast Corp. with making your internet as flakey and slow as possible.
There's an old paper on that networking, by design, is not reliable or efficient - which is more cogent than ever in large scale distributed systems. What Comcast would cite would likely be that, so I doubt it would reveal the quiet part said out loud about the reliability of Comcast's services.
Jokes aside, that paper is very worth reading. And HN readers will recognize one of the authors as the creator of Jepsen, of distributed database testing fame.
Trademarks are supposed to be consumer protection regulation. They aren't there to protect the corporations. If I make some brown goo and call it "Pepsi" then Pepsico can sue me because I confuse their customers and not because this will cause losses for Pepsico.
At least, this was the original intention. In today's more corporation-friendly world, more emphasis is being put on the corporations interests unfortunately.
Simple, they already know Comcast is synonymous with flakey slow Internet and shitty customer service. But they already paid off congress and know there is nothing you can do about it.
"So the next time you complain about your phone service, why don't you try using two Dixie Cups with a string? We don't care. We don't have to. We're the phone company." -Lilly Tomlin as Ernestine
Tangent but I was always annoyed at how poorly google products work offline. One time I was using google maps to navigate to a remote address. Once I got close to the address google maps crashed and I re-opened the app. I had no cellular service. The app remembered the actual map data but did not remember the address I had just typed in to the program 15 minutes earlier. I had to guess what street address I was heading to! Why they designed the app to store all search history exclusively in the cloud and not keep a local copy is beyond me, but I presume when working at google they always have an excellent connection and hadn’t thought of what would happen if a user lost service. Being able to at least see the search history would have saved me some grief!
I've experienced that same behavior too. But I also happen to know that, at least in the earlier days of android, they had sophisticated labs available for emulating poor network conditions and software for spoofing GPS on-device in the lab.
For all the hate it gets, I can confirm that Apple Maps does not exhibit this behaviour, and I also believe Waze doesn’t, as well; though my memory is hazy on that one.
Driving around in Northern Canada, as I am often wont to do with my partner; you’re without cell service at least half the time; and even when you do have cell service - data is very uncommon.
My girlfriend and I ran into this issue twice with Google Maps, tested if Apple Maps exhibited the same behaviour, and since it hadn’t - neither of us have actually used Google Maps since.
I used to work with someone who would frequently explode on group video calls, usually with the anger directed at a single victim.
I worked out that if it happened to me, I could use the OSX link conditioner (built in to XCode) to degrade the connection realistically. Coming back after he'd finished his tirade with a 'sorry, my internet capped out, could you repeat that' took a lot of the heat out of the situation.
Sidenote, but I have never ever witnessed someone getting angry at another person in a meeting, remote or in person. I don't even know how I'd react except being flabbergasted at the unprofessionalism.
I haven't otherwise, this was quite the experience. Quite soon after the first incident I started planning my exit. Attrition was very high at that company...
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.
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.
Read-only offline is not a hard problem. Regardless, lots of things are hard problems _the first time it’s solved_ but become easy problems with the right tools and design.
A 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.
Maps 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.
I 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).
HERE 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.
Love the project, likely to use it, and I wish more developers were compelled to use Southeast-Asian-island levels of latency, jitter, and bandwidth, at least once a week while writing websites.
The name is choice, I almost hope you get a nasty letter so you can share it with the rest of us. Hard to search for though...
There's nothing more annoying than recognizing that some developer wrote their own "timeout logic" when the socket is still transferring data, just very slowly. Pro-tip, don't implement your own timeout logic, just set a timeout on the socket.
This tool is at the socket level, and used for developing distributed systems. The Chrome dev tool is just to demo the user experience of poor internet. They're very different use cases.
Toxiproxy is fantastic. I wish they supported a full configuration file in JSON or TOML or something but other than that it has been a lifesaver testing websockets.
About 15 years or so ago, we looked at buying a hardware appliance that would let you build and simulate virtual networks with all sorts of different characteristics. Packet loss, latency, etc.
We developed software for retail point of sale systems, and some of the stores we had to support had all sorts of awful infrastructure, both inside the store and between the store and the “rest of the world.”
I can’t remember the name, but I believe it was an Israeli company, and the device was programmed/configured through Visio (iirc).
Often with amazingly crappy internet what you want are "one packet wonders" - do everything possible in single packets, so that if one gets through you win.
These products were typically known as "WAN emulators" and were pretty commonly used in the exact situation you describe: developing large scale distributed systems that were going to be used over unreliable connections. This functionality is now available in the Linux kernel via netem and is accessible via the `tc` command.
And my second brief thought was: maybe they forgot to turn it off for me?
Wish I was kidding.
A couple citations I liked:
https://queue.acm.org/detail.cfm?id=2655736
https://blog.acolyer.org/2014/12/18/the-network-is-reliable/
No, comcast. :)
Jokes aside, that paper is very worth reading. And HN readers will recognize one of the authors as the creator of Jepsen, of distributed database testing fame.
I recall at least one other project with this kind of naming sense: https://github.com/auchenberg/volkswagen
which was named after https://en.wikipedia.org/wiki/Volkswagen_emissions_scandal
and is currently the top result for "volkswagen test library".
At least, this was the original intention. In today's more corporation-friendly world, more emphasis is being put on the corporations interests unfortunately.
"So the next time you complain about your phone service, why don't you try using two Dixie Cups with a string? We don't care. We don't have to. We're the phone company." -Lilly Tomlin as Ernestine
comcast --stop
Dead Comment
Which just makes it more frustrating.
It used to. It was intentionally removed. I say this as a customer who read the update notes, not as an employee of Google.
I'll let you guess why they did. I have my opinion why and it is not flattering to the company, to say the least.
Hey, who remembers Street View cars collecting SSIDs...
Deleted Comment
Driving around in Northern Canada, as I am often wont to do with my partner; you’re without cell service at least half the time; and even when you do have cell service - data is very uncommon.
My girlfriend and I ran into this issue twice with Google Maps, tested if Apple Maps exhibited the same behaviour, and since it hadn’t - neither of us have actually used Google Maps since.
This is - of course - iOS-specific advice.
You can find that in the Additional Tools for Xcode download, in the Hardware folder.
I worked out that if it happened to me, I could use the OSX link conditioner (built in to XCode) to degrade the connection realistically. Coming back after he'd finished his tirade with a 'sorry, my internet capped out, could you repeat that' took a lot of the heat out of the situation.
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.
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.
users of google maps / apple TV don't have to send 'write' operations except for a few features (set-favorite, etc)
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.
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.
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.
https://organicmaps.app/
The name is choice, I almost hope you get a nasty letter so you can share it with the rest of us. Hard to search for though...
Might I offer.... Concast?
Dead Comment
We developed software for retail point of sale systems, and some of the stores we had to support had all sorts of awful infrastructure, both inside the store and between the store and the “rest of the world.”
I can’t remember the name, but I believe it was an Israeli company, and the device was programmed/configured through Visio (iirc).