[HN Gopher] Offline is just online with extreme latency ___________________________________________________________________ Offline is just online with extreme latency Author : samwillis Score : 412 points Date : 2023-04-19 09:09 UTC (13 hours ago) (HTM) web link (blog.jim-nielsen.com) (TXT) w3m dump (blog.jim-nielsen.com) | PhilipRoman wrote: | Speaking of this, anyone have suggestions for an offline-tolerant | distributed filesystem? Basically a dozen devices which get a few | minutes/hours of internet access per day/week and not necessarily | at the same time. | | I've considered Git but not sure how much overhead it adds. | thfuran wrote: | That's intractable. Conflict resolution has to be done | differently for different types of data, so it has to be done | at a higher level than filesystem, unless you want a special | filesystem that only supports a specific kind of file or has | some other very significant restrictions. | preseinger wrote: | i don't mean to blindly +1 but this is the actual correct | answer and i think it deserves to be emphasized | seri4l wrote: | Not a distributed filesystem but syncthing can easily do what | you're asking for. | PhilipRoman wrote: | Seems promising, thank you. | cesarb wrote: | > Speaking of this, anyone have suggestions for an offline- | tolerant distributed filesystem? Basically a dozen devices | which get a few minutes/hours of internet access per day/week | and not necessarily at the same time. I've considered Git [...] | | If you've considered git, I would suggest looking at git-annex | (https://git-annex.branchable.com/), which is tuned for that | kind of mostly-offline use case. | samwillis wrote: | Conflict resolution is the issue here. | | Effectively sync systems like DropBox and iCloud do this by | flagging conflicting edits when you come back online and | duplicate files (new a new file name) so there is no data loss. | | For a lower level file system though that's not really possible | as you may be running databases, or other data models, that | need to understand conflict resolution themselves. | PhilipRoman wrote: | For my personal use case I don't really care about conflicts | - they could be crudely resolved by a timestamp or even | randomly. Having backups in the event of a conflict would be | good. Files are never updated incrementally, just added, | renamed or deleted. | em-bee wrote: | why would you share a database over a distributed filesystem, | other than for backup purposes where you only have a single | source so you should never get a conflict? | BlueTemplar wrote: | See cryptocurrencies. | keybits wrote: | I'm excited about ElectricSQL as an enabler in this space: | https://electric-sql.com/docs/overview/technical-intro | | They're using SQLite on device with a sync service online. Their | team have credentials that give me confidence: https://electric- | sql.com/about/team | britannio wrote: | I have high hopes for ElectricSQL given that the co-inventors | of CRDTs are on the team! It's like building a generative AI | startup with authors of the transformer paper. | thruflo wrote: | Thanks! We've just opened up a call for design partners[0] if | you (or any teams out there) might be interested in | collaborating with us :) | | [0] https://next.electric-sql.com | yonz wrote: | James is speaking at the next local-first meetup. | https://lfw.dev | account-5 wrote: | Nearly everything about that article depressed me. I want just | offline applications and if I need it in the very limited times I | do, opt-in to cloud. All this "everything" is online is bullshit. | syngrog66 wrote: | when I design new software I bias/default to CLI, monolithic, | local-hosted, and offline-only, first. | | Then only if and when I have a good pressing reason to give it a | GUI, or make it client/server, or require connectivity, or be | cloud-hosted, do I carry out a refactor/redesign to add those | features. And even after I apply the refactor/redesign I strive | hard to maintain a UX configuration which retains all those | original default qualities. Maintaining them side by side with | the added alternate modes. | | Maybe its an age/era thing. Because I'm increasingly surprised | when folks DONT use this approach. Felt like a design no-brainer. | | The private term I've coined for this philosophy is CLIFMO. | trasz4 wrote: | Online is just offline with the caching layer missing. | ggm wrote: | Mike St Johns talked about DNSSEC bootstrap timers in the context | of a VM on the shelf, brought live 4+ years later: how do you | update the Trust Anchor for a cold VM image which is very old? | tigerlily wrote: | Nah. Offline is online with extreme immediacy. Get out there and | DO IT NOW! | reportgunner wrote: | What do we do about timeouts when dealing with extreme latency | though. | realPubkey wrote: | Just retry each X seconds. Also browsers have a | navigator.onLine property which emits an event at the exact | time the client is online again. I am doing this with rxdb and | it works great. | astatine wrote: | I would argue that it really is the other way around - online is | just offline with instant synchronisation | em-bee wrote: | that's how any SPA should be written | fastball wrote: | I'd go one step further, and say offline is just real-time with | extreme latency. This is what we realized when re-tooling our app | for offline use - anything we build that enables offline use will | by its nature enable real-time collaboration. | mfbx9da4 wrote: | Example? I don't see the link | arve0 wrote: | When you do not rely on ACID for data consistency, you need | to architect for eventual consistency. For example CRDT on | collaborative editing a text document. | pvh wrote: | Just so! | jiggywiggy wrote: | With apps I do this. I download the entire rest api. Often 5-10 | mb.Entire api is versioned, every content update leads to new | live version. And app works offline and super fast. Queue the api | updates by default. And cache images / videos. Pretty doable. And | api is rarely queried. | jessmartin wrote: | If you're interested in this sort of thing, there's a good group | of folks who are building local-first libraries and software | congregating at https://localfirstweb.dev/ | | They have had a few meetups so far which have been really good | (including PVH speaking at the first one). And many of the local- | first builders are hanging in their Discord. | chrismorgan wrote: | Sometimes you can tell that you're offline. Sometimes you can | tell that you're online. The real trouble is when you have an | _unreliable_ connection. That's the worst of all available | worlds, when systems fall apart in a wide variety of troublesome | ways. | genewitch wrote: | oh, like my starlink. I can't use it for VoWiFi, because it | drops for a couple seconds every minute. So i use it to | download, only. It also works for any VoD streaming service | (youtube, netflix, etc), but will not work for live streams. | Can't use it for gaming, then again with CGNAT on my main ISP i | can't use _it_ for gaming really, either. | | However stuff like matrix works fine on starlink, because it | will eventually be able to phone home and do all of the queued | transfers, and that's fine. | karanveer wrote: | damn bruh, you just opened my eyes | lucasyvas wrote: | This resonates a lot but there are substantial issues with | offline-first for many apps, like permissions. | | Maybe a simpler way to put it - if what you are building requires | client/server for security guarantees, cloud is IMO an easier | delivery model than forcing your customer run their own database. | Cloud is infinitely better operationally for these users. | | If they want to control the versioning, then on-prem is the | answer. | | If permission modelling is no issue, offline first plus sync is | optimal I think. | fnordpiglet wrote: | This seems to miss the fact that the cloud providers basic | service is a highly discoverable highly available way of | advertising endpoints and managing highly durable and resilient | state in a distributed system. Yes you can do that locally. It's | just really fragile and difficult. The ability to collaborate | between two local machines by using a well known service remotely | that's always available means even when the neighboring laptops | lid is shut and reopened things work because the only real | dependency that laptop has was its tcp stack. The other laptop | doesn't have to deal with the interruption, try to figure out | when it's come back online, renegotiate connectivity, figure out | any state drift and reconcile state, etc etc. Bonus is it works | the same when you take your laptop to the bathroom to take a crap | as it did when it was 2ft away. I'm not even going to go into the | pitiful state of adhoc local protocols and hardware stacks. | throwawaaarrgh wrote: | Does your laptop have 200 terabytes of memory, 50 petabytes of | storage, and 10,000 CPUs? No? Then it's not really the same thing | is it? | | There are things you can never do on your laptop. Offline is | limiting, in many ways. You know how I know? I grew up in the | 90s. Online is a magical godsend of capability and functionality. | Offline is cute. Online is what we dreamed of. | | Should you have offline modes? Of course. Should you have some | offline-first applications? Of course. Is offline just online | with extreme latency? Of course it isn't. Use your brain. | _Think._ | mpweiher wrote: | Funny, I think _online_ is just offline with extreme latency and | variance... | glonq wrote: | On my last project, we built a configuration/collection tool for | sensors installed in remote locations. For certain operations, | our failure mode was "the user will have to go online so the app | can resolve things, then can go back to the remote location and | try again". | | After folks explained that this could require a multi-day, multi- | tens-of-thousands-of-dollars journey for the customer, we re- | architected parts of the system to be _tolerant of offline | failures but still resilient and secure_ and saved the customer a | potential round trip back to the field. | toolslive wrote: | Yes and storage is just a high latency message to yourself in the | future. This means everything that is in use in high latency | communications can be used for storage. | faxmeyourcode wrote: | Reminded me of this SIGBOVIK paper - "Harder drives: hard | drives we didn't want or need" | | http://tom7.org/harder/\ | Joker_vD wrote: | Okay, that section on chainsaws was brilliant, and is somehow | the sanest part of the paper: the following text gets | progressively crazier. | eur0pa wrote: | No? | 6367529256 wrote: | [flagged] | croes wrote: | He is not talking about offline applications but online | applications with offline functionality. | | Since the rise of cloud applications and electron based | applications I'm back at writing faster than the application can | process my input. And I'm not a fast typist. | hgsgm wrote: | "online applications with offline functionality" or "offline | applications with online functionality"? | | In the nitty gritty they are the same thing, but the way you | say it changes the way you picture it and what parts you make | sync vs async | capableweb wrote: | > Since the rise of cloud applications and electron based | applications I'm back at writing faster than the application | can process my input. And I'm not a fast typist. | | If the application you're using (the one(s) you're referring to | when you say "cloud applications") is sending the key input to | the backend and waits to render it client-side until it | received a response, it's doing something horribly wrong and if | that's how they write things, you probably want to avoid that | for a multitude of reasons. Please name and shame though, so | others can avoid it too :) | | Same goes for Electron-based applications, there is no reason | they'd block showing the text you inputted, and if they just | use <input/> without doing anything egregious, you really | shouldn't be able to type faster than characters appearing on | the screen, something is really, really wrong then, and I don't | think it's because of Electron. | Hackbraten wrote: | 1Password's new UI does just that. I enter some text into a | field quickly, hit Tab, then watch some of the trailing | characters (or the entire field content) disappear. This | keeps occurring and disgusting me to no end. | marcellus23 wrote: | This is why I'm sticking with 1Password 7. They can pry it | from my cold dead hands. | alpaca128 wrote: | VS Code is still much slower than necessary despite editing | files locally - on my Thinkpad from 2016 I got extremely | inconsistent input latency that felt like a shaky SSH | session, in better cases it seems to be closer to 30ms[0]. | For reference: gVim's latency hovers around 1ms and even | intelliJ can still be 10x faster[1]. | | [0] https://github.com/microsoft/vscode/issues/161622#issueco | mme... | | [1] https://pavelfatin.com/typing-with-pleasure/#windows | croes wrote: | It's more if I edit data grids or multiple fields where I | switch between them with the tab key. | | On desktop applications they may lack in the response on the | screen if they or the computer are to slow, but with cloud | apps sometimes keystrokes go missing and the entered data is | in the wrong field. | | The operating system recognises all keystrokes, but the | browser seems to skip some. | doix wrote: | > If the application you're using (the one(s) you're | referring to when you say "cloud applications") is sending | the key input to the backend and waits to render it client- | side until it received a response | | I'm 99% sure nobody does that, that would be insane :D. | | It's most likely caused by React and the use of controlled | input components without thinking about performance. If your | input sets it's value from React state, then you're updating | the state on every keypress and re-rendering the component. | In the most simple case, it's probably fine. But depending on | your component hierarchy, it's pretty easy to end up in | situation with over 50ms of typing latency. | capableweb wrote: | > I'm 99% sure nobody does that, that would be insane :D. | | I agree, hence the surprise! | | Although parent explicitly calls out "cloud applications" | so I'm guessing online has something to do with it. | | And in the context of online/offline, it wouldn't matter if | it's internet connected or not, using controlled input | components with state changes going through a deep | hierarchy would introduce that sort of delay no matter if | you're online or offline. | TeMPOraL wrote: | > _I 'm 99% sure nobody does that, that would be insane | :D._ | | I imagine you haven't seen how people implement | autocomplete on web forms ;). | tsbischof wrote: | I issues with Outlook Web App (M365) often. Dropped | characters are not so common, but it is common for the cursor | to bug out and insist on returning the to start of a line | with each new character. | tonyarkles wrote: | Are you using Firefox? I had that problem consistently with | OWA, but I recently switched to primarily Safari on an old | MacBook and don't recall having it happen recently. | pards wrote: | > Please name and shame though, so others can avoid it too :) | | MS Teams does this when starting a new chat - you select the | recipient and start typing and Teams will do two unexpected | things shortly afterwards: 1) Clear the text | you typed, and 2) Reset the cursor to the start of the | line | mxuribe wrote: | And this is one of the many reasons why i very much dislike | MS Teams! | remram wrote: | Gmail has had this issue for years, if you type in the search | bar a bit fast or the system is a bit busy, some of your key | presses will trigger keyboard shortcuts and randomly | select/archive/mark as read/open emails in the current view. | This is maddening because you can end up missing emails | completely as there is only a single level of undo. | postdb wrote: | Seen that on mattermost, it is poorly written React or other | SPA. It is one of reason why SPA get so much hate around. | heyoni wrote: | I think that's the take and from my own experience, it kind of | sucks and feels like we're running worst versions of basic | software than we used to (old man rant?). | | For example, I use Apple Music every time I leave my apartment. | Put my headphones on and start some music. All my songs are | downloaded locally so it should be fine, however, as soon as I | close my front door until after I step off the elevator, no | music will even attempt to play. That's because Apple Music is | blocking itself on some sort of network call/drm check because | it thinks I'm online and it should work. | | If I go into airplane mode and hit play, everything works | perfectly. | [deleted] | gadders wrote: | My pet peeve are mobile apps that work with good connectivity | (mobile or wifi), and also work with no connectivity at all, but | when there is patchy connectivity take a minute or so to decide | which mode to work in. Spotify I'm looking at you. Especially on | screens that absolutely should not need to request data from the | server to render information. | ilrwbwrkhv wrote: | Rxdb pouch and couchdb. All forgotten tools to build wonderful | offline products. | 6367529256 wrote: | &#^ | eric-burel wrote: | "Build-time rendering is just pre-computed request-time | rendering" lead to a whole lot of innovations in the JavaScript | ecosystem and allowed a continuum of intermediate approaches to | emerge | 0zemp1c wrote: | yeah, no | | offline means no expectation of a response, that is very | different than an extremely delayed response | mysterydip wrote: | Like saying "blindness is the same as a really long blink". One | has an expectation of seeing again, the other has no | guarantees. | imadj wrote: | The point is to bridge online and offline and make apps more | robust | | If it works locally and there's no need for syncing or | communication in the first place then yeah, problem solved! | frereubu wrote: | The older I get, the more skeptical I get about any article / | comment / whatever that uses the word "just" in this way. "X is | just Y", "Do do X you just need to do Y". It's almost always a | trite oversimplification to an extent that it falls apart as soon | as you start thinking about it in detail - as the comments here | suggest. | mfbx9da4 wrote: | I don't think "Offline Is Just Online with Extreme Latency" is a | useful concept because it doesn't encapsulate the key difference: | pessimistic or optimistic UI. | | For example, say you have a form. If you built it thinking online | first you'll probably have some pessimistic UI which shows a | spinner and waits for the server to respond with ok/error. You | can't simply think, okay since we're offline, more latency -> | show spinner for longer. You have to re-architect things so that | the UI is optimistic, commits to a local database and that local | database is synced up to the server when you come online. | | In my experience optimistic UI is way more complex to build. Many | times the complexity is worth it though. | Lio wrote: | I think you've got it spot on. | | I've also worked on systems like that where a mobile user could | loose connection at any time and they are indeed very complex | to get right. | | I'm not sure there's a perfect way to do it but we ended having | have certain functions that had to be done online and others | where the user built a "request" for service that was handled | optimistically with failures sent to the user's inbox later. | homero wrote: | You'd have to make sure the user knew whether it finally worked | even weeks later or never sent. They'll forget. | hyperhopper wrote: | Abstracting this away from the user is what meteor was built to | solve, and did it very well for most use cases. | danenania wrote: | The really hard part is conflict resolution. You updated | something 5 times while offline, but another user deleted that | something between updates 2 and 3, or made a divergent update | of their own. There are so many potential scenarios like this | in a multi-user app. It's a huge rabbit hole, and you can end | up in situations where it's impossible to sync in a user- | friendly way. Essentially you are taking on all the challenges | of distributed databases. _Maybe_ it 's worth it, but you | should know what you're getting into. | giantrobot wrote: | Online-only collaboration systems already have to do this. | The local view has to synchronize state between other local | views and the canonical version on the server. Offline | changes _are_ online edits with high latency. | danenania wrote: | Yes, but the problem gets much harder to resolve the longer | you allow client states to diverge. | treeman79 wrote: | Was required to use a MS sql server database for a project that | would go offline for 5-10 minutes every hour. (Getting admins | to fix it was a no go). | | Now of course I was judged on uptime of my app that relied on | it. | | Finally just cloned the data to a local MySQL and refreshed | data frequently. Database team totally clueless that app | servers were hosting their own databases. | thomastjeffery wrote: | Sounds like it _is_ a useful concept: you just used it to | introduce your own. | | I think that optimistic UI isn't _more complex_ to build: it 's | just _less familiar_. | | In a broader sense, UI/UX design culture places _way_ too much | focus and value on familiarity. | | The best UI/UX designs I have ever experienced are when | software design _diverges_ from the norm and tries a new | approach. | stepbeek wrote: | > I think that optimistic UI isn't more complex to build: | it's just less familiar. | | Having multiple records of state that have to be resolved | when systems come online is complex. Anything requiring | consensus is difficult to do. | thomastjeffery wrote: | The same complexity is present in both approaches. The only | difference is cadence. | Karellen wrote: | > You have to re-architect things so that the UI is optimistic, | commits to a local database and that local database is synced | up to the server when you come online. | | Isn't that exactly what the article argues for though? | | > This kind of idea would move you away from a product full of | API calls to one based on data synchronization. | friendzis wrote: | I agree with the sentiment, but for entirely different reasons. | | An offline capable application that sometimes tries to sync can | be called "Online with Extreme Latency", but that is not what | true ~~Scotsman~~ offline is. | | Offline/online is first and foremost about data locality and | data ownership. In an online application (regardless of | latency!) the source of truth is "the server". Offline | application itself is the source of truth and "the server" is a | slave. | | The OP seems to be talking about thin vs fat clients. Fat | client is still a _client_ - it fetches data. Offline | application is the data source for "the server", it's the | server that has to adapt to local changes not the other way | around. Naturally, this is problematic since now you have | multiple sources of truth. However, shifting source of truth to | "the server" does create online application with extreme | latency - fat client. | foobazgt wrote: | I believe thinking about it as "offline vs online" obscures | what's actually difficult about offline operation. It's not | storage or ownership of data that's difficult, it's conflict | resolution. | | The longer you're disconnected, the more things diverge, the | better your merging/resolution schemes/algorithms need to be. | | There are a lot of ways of thinking about and approaching the | problem, some of which work worse or better under different | circumstances. You see it in distributed consensus, multi- | master systems, version control systems, etc. | | There's ongoing work in the form of things like operational | transforms and CRDTs, but clearly their needs to be a lot | more progress in the area. | forgotmypw17 wrote: | A lot of it is also about accessibility to someone with | limited network access. | | When you are developing with an always-on connection and a | high-performing device, it's easy to ignore all the scenarios | where someone doesn't have either one. | dopidopHN wrote: | There is tool to mimic that : the venerable "Charles" proxy | for instance. | | But I think it's part of webTooling in the browser | jchanimal wrote: | I think I agree with the analysis. It's why aspects like data | verifiability are potentially more important than fancy peer- | to-peer routing and transfer protocols. Once you have Merkle | proofs of data, it's just as powerful whether it is on the | client or server. | | Cryptographic verifiability make data locality into an | optimization problem not a trust problem: | https://fireproof.storage/documentation/how-the-database- | eng... | Karrot_Kream wrote: | Trust and anti-corruption are just two of many properties | you need for data locality, arguably less important. | Conflict resolution or consensus is still very, very | difficult. P2P routing and transfer is a bit of a red | herring. You still need consensus between your local store | and the remote store. Fireproof does it using IPFS | underneath which in my experience tends to be quite slow, | but is a working solution. | hinkley wrote: | An app I was designing about six years back would have been | something that some would use in their yard and others would | use in a national park. | | In the yard you have extreme latency. Sooner or later you'll | get thirsty and you'll walk into WiFi distance. | | In a national park there's no connectivity. You won't be able | to get or receive anything until long after the moment has | passed. None of the answers you get will be relevant anymore | for most people (what percent of people who visit a national | park visit the same one over and over again?). | | Then I realized screen contrast wasn't 'there' yet so I | shelved it, got busy, and there it remains collecting dust. | inferense wrote: | > Offline/online is first and foremost about data locality | and data ownership. | | not necessarily if the data is stored in a proprietary | format. | tnel77 wrote: | Yes, but I think most people care about availability of | data over true ownership of data. | | If I'm running a business and my internet goes out, there's | a huge selling point to a local DB that allows my | operations to keep chugging along until Comcast figures out | their mess. Internet returns, my DB syncs with a server | offsite, and now I have that backup. | Sakos wrote: | It doesn't matter if it's a proprietary format. Proprietary | formats can be reverse engineered and modified and | converted. There is a world of difference between a | proprietary file that I have online in a form that I can't | access directly (and I have no idea how it's being | accessed, changed or stored by the service itself or third | parties) and a file that I have on my harddrive that I have | complete control over. | [deleted] | kdmccormick wrote: | Isn't that more like "decentralized vs centralized" though? | In my experience talking with coworkers about online vs | offline apps, the article's definition is what we use. | Granted, I've worked exclusively in Web dev for years so | maybe it's all contextual. | JohnFen wrote: | I don't view things like the article states, and I likely | won't for a number of reasons other commenters have stated, | plus one more: | | If offline is online with with extreme latency, then | "extreme latency" must include "infinitely long latency". | But accommodating infinitely long latency requires a | different approach than if you assume that a server will be | contacted at some point. | Scubabear68 wrote: | A good example of this is are mobile applications used in | logistics for tracking movements within a terminal. Often the | wifi environment is terrible and the operators will spend | significant time not connected. They often have fat clients | with local storage, and when the reconnect the sync | bidirectionally - they upload whatever they have done since | last connection, and they download changes others have made | that may affect them in the meantime. | klabb3 wrote: | Those cases should both be solved with optimistic UI, so | there's no difference. | | You can have a little checkmark to indicate that it's synced, | like many chat apps do. | | > In my experience optimistic UI is way more complex to build. | Many times the complexity is worth it though. | | Yeah, can attest to this. I'm working on an app[1] that strikes | the trifecta: p2p, real-time and offline first. All of those | things combined makes the amount of tooling, design patterns | and resources available shrink to a tiny sliver compared to a | typical web-based tech stack. I have researched probably 100 | projects that sound promising but almost all have been a poor | fit for one reason or another. I opted to build almost | everything from scratch. | | Kudos to the JS ecosystem. They are way ahead in this space, | with rxdb, watermelon, yjs, automerge etc. Unfortunately I | couldn't use any of them because I use a split-language stack. | | [1]: https://payload.app/ | silvestrov wrote: | When you need a single source of truth you cannot use | optimistic UI. | | E.g. if the user is a realtor, then she can't tell the | customer "you have now bought the house" if there is no | online connection and you're waiting for a sync. You can fill | out and upload the form async, but commitment must be online. | | You cannot tell the customer "you might have (or might not | have) bought the house, we will only know later". | thruflo wrote: | You can if you acquire a distributed lock in advance, as | per https://electric-sql.com/blog/2022/05/03/introducing- | rich-cr... | chefandy wrote: | That's true even if you're example isn't perfect. Some | types of transactions have business requirements that | demand immediate consistency or responses. | Contraindications certainly don't invalidate ideas, though. | Use the right to for the job. | BrentOzar wrote: | > You cannot tell the customer "you might have (or might | not have) bought the house, we will only know later". | | Sure you can - in fact, that's what realtors call offers. | You place an offer, and you only find out later if you | bought the house, often _days_ later. | [deleted] | couchand wrote: | Technically correct, but you're missing the point. | | Eventually you do need to be able to commit some sort of | transaction and get confirmation from the counterparty. | ElevenLathe wrote: | This is correct but you can do tricks to change who the | counterparty is, which is often useful. If, instead of | putting up a yard sign and saying "this house is for | sale" and waiting for someone to come by and complete the | transaction, the homeowners entered a contract with a | brokerage to sell the house to anyone who is willing to | abide by a list of terms (minimum price, occupancy date, | etc.), then the brokerage can respond immediately and say | "great, the house is yours". This is essentially the | equivalent of sending a sell order to a stock broker. | smac__ wrote: | In this case the optimistic UI might be good to have a step | like "this request is pending". So when the form is | submitted the data is ready to send and will send when it | can. Ideally with an indicator that the user is offline and | needs to be online to sync. | dustingetz wrote: | to add to this - | | rotate CRUD mindset to CQRS, now you have a start event and | an end event, this is the extent of the pending sync state | which can be afforded to the user at any granularity - | document level, message level, form or field level, etc. | | The cost is that other view queries don't reflect the pending | event, only the view that issued the command has an | association to the event. Which is usually the UX you want. | Consider a master/detail form app where you insert a new | record into a collection, but the view is | sorted/filtered/paginated and your new record does not match | the criteria and therefore vanishes. That is never the right | UX. A less surprising alternative UX is to limit record | creation to a specific form for the business rules of | creation, and that form exists in the context of a specific | collection view with business rules around newly created | entities of that kind, with an invariant that newly created | entities will always appear at the top or bottom of that | collection (e.g. new messages are always added to the bottom | of the chat history view). Now the optimistic update bypasses | the database and simply writes through to the view | optimistically and then when the ack is eventually received | it seamlessly changes state without any UI jank. | | Now you can send many new messages rapidly and if the nth | message fails and the rest of the messages went through you | get a properly located error. With a CRUD mindset, probably | the form is simply disabled until each individual insert | succeeds - which means your chat app cannot keep up with you | typing! | realPubkey wrote: | Related: https://rxdb.info/offline-first.html | Joker_vD wrote: | > Those cases should both be solved with optimistic UI, so | there's no difference. | | Ah, yes, "in theory, the theory and the practice are the | same". Unfortunately, in practice, the theory and the | practice are _not_ the same, and those cases are regularly | _not_ solved with optimistic UI (even though they should), so | there is difference. | hinkley wrote: | Git has one interface for disconnected commits and another | one for connected ones. Most of the command set is | bifurcated around this. Sure there are places where you do | the same act for local and remote but those are more the | exception than the rule. It's very exposed. They've done | very little no create any sort of abstraction across them, | and that's probably the right answer. | TylerE wrote: | Ugh. This makes me very sad. Git is a ux disaster, and my | gut instinct when realizing I was doing the same thing as | git would be to seriously question my thought process. | benatkin wrote: | First I heard of "optimistic UI" was with GraphQL and Apollo, | but I had seen the behavior that they someone, perhaps them, | gave this name for a lot before. | | I don't find the concept "optimistic UI" to be more useful | for talking about it or the implementation by Apollo to be | more elegant. It's fine but it doesn't solve any problem | except one that was created by Apollo's binding of server | data to the client, React-style. | simplotek wrote: | > You have to re-architect things so that the UI is optimistic, | commits to a local database and that local database is synced | up to the server when you come online. | | I'm not sure you got the point. The design guideline that | "Offline Is Just Online with Extreme Latency" already reflects | very specific architectural requirements, and state transitions | in the application life cycle. We're talking event-driven | architectures, batching events, flushing events in | offline/online transitions or even when minimizing windows, | pulling events when going online, etc etc etc. | | I'd go even further and claim that this whole "pessimistic vs | optimistic UI" thing is just "adequate vs broken UI | design",regardless whether the app is even expected to go | online. | saltcured wrote: | A related concern would be surfacing the "online" part as | explicit resources and actions for the user instead of | implicit, background magic. If you are sufficiently offline in | your lifestyle, you need to plan your communication phases. | | I recently got into using a GPS sports watch. It is the kind of | thing I would want to use in an offline fashion, i.e. go | somewhere off the grid and track my hikes or bike rides. These | devices are designed to function offline for a stretch of time, | but they have a requirement to eventually sync to an online | system. They will eventually fill up with recorded sensor data | and you want to offload that somewhere else before clearing | local device storage. More importantly, satellite positioning | receivers need a cached "ephemeris" file that helps them | predict which satellites will be overhead at a given time to | operate efficiently, accurately, and quickly. | | Unfortunately, the manufacturers have been infected with | smartwatch expectations. They started designing it as if it is | always online, and the syncing functions are implicit | background behaviors. When doing sporadic syncs and going back | offline, it is hard to influence it to "get latest ephemeris" | when you known you have internet connectivity and will be going | offline again. Worse, these results are localized and it | implicitly gets ephemeris for its current location. The UI | doesn't allow you to indicate a destination and pre-load the | right data to allow fully offline function on arrival. | titzer wrote: | FTA: | | > Unfortunately, some of the open technologies for building more | local-first, p2p applications just aren't there yet. Like Peter's | point on webRTC. | | I guffawed at this. I mean, seriously. In the days before the | internet was widespread, like mid-90s, there were actually multi- | player games that worked over LANs, both IP and IPX. Somehow, | people were able to configure multiple computers to talk to each | other with this funny numbers called "addresses" or something. | DNS existed of course, but you could also add to /etc/hosts, | Novell had a thing, everyone had a thing. | | The problem is that somewhere around the mid 2000s or early 2010s | we _forgot_ that anything networking-related could be based | around non-web protocols and stacks. What a disservice we 've | done ourselves. | | Not that I'm advocating people type in IP addresses or have to | set up their own DNS servers or admin their own LANs, but wow, | it's like part of our collective brains is just missing. | nebulous1 wrote: | > In the days before the internet was widespread, like mid-90s, | there were actually multi-player games that worked over LANs, | both IP and IPX. Somehow, people were able to configure | multiple computers to talk to each other with this funny | numbers called "addresses" or something. | | In the scheme of things very few people were able to set this | up. It's definitely unfortunate that so much software no longer | works without a server component you dont control, but one of | the major reasons for it is that the typical user can now do it | because they don't have to set up the networking or understand | much about it. A little later software companies realised | they'd actually rather keep control and stopped distributing | the server component at all. | Spivak wrote: | The bar is higher now which is what has really changed. Your | thing has to work on every network, through multiple levels of | NAT, without copy-pasting ip addresses or updating system | files, often across multiple platforms. | | WebRTC is the focus because it won by a huge margin, other p2p | protocols are a footnote. Everything uses WebRTC whether it | actually has a web client or not. | hgsgm wrote: | What happen is that dads realize that it's easier to write , | maintain, and monetize multi-client software that runs | primarily on the dev's computer and pushes some of the UI to | the client, than multi-client software that runs primarily in | the client computers. | fnordpiglet wrote: | I think it's more than forgetting. I didn't forget for sure. | But what is easily forgotten is _why_ we moved from local p2p | to internet brokered services. It's mostly simplicity. By | hosting all the state and discovery, match making, etc, in a | remote service outside the local network and RF environment, | you dramatically simplify everything to "configure the local | tcp stack." The 50's-2010 world wasn't awesome and things were | super fragile, tedious, poor compatibility, etc etc. The move | to service based approach meant protocols were homogenous and | compatible, implementations were simple, state management easy, | reliability near perfect, etc. You even get to ensure everyone | has basically the same software since all the real software is | in the service and there's exactly one version on earth. In the | bad old days you referred to, every device around you had some | ragged edge version dependency graph of everything from the | device to its network card through to the end user experience. | It was a miracle anyone ever played Red Alert on the LAN. | | People always talk about "how expensive" it is to send packets | to Oregon to turn on your lightbulb in seattle. But the cost is | already fully loaded and paid for. If you didn't notice it, | maybe that's because it's actually not more expensive? Yes | latencies are higher, and that's literally the only downside I | can imagine. But it is a lot more reliable, flexible, simpler | to deploy in any environment, robust. | titzer wrote: | > It's mostly simplicity. | | You make points below that are good, but let's be clear. | You're talking about simplicity of interop and configuration | that's gotten better, rather than simplicity of the software | stack. There are so many variables that have changed by | adopting the web stack that I don't think any other dimension | of simplicity has been achieved. | | If we had instead focused networking protocol design on the | simplicity of configuration, discovery, and naming, then we'd | have been better off. It's not like you need an electron | stack, an apache stack, and a cloudy (planet megascale!) | datastore for that. | fnordpiglet wrote: | I think the simplicity story is more than that. First, | state management is a tricky thing to do in any | environment, but in an environment of a billion random | variables it's tedious if not impossible. I'd assert that | each of those complexities you highlight are actually | _solutions_ to a specific challenge in peer to peer | interaction between computers that are _simpler_ in the | aggregate than if they didn't exist and we had just focused | on, say, making Bluetooth not be a massive annoyance. The | ability to simply ensure a tcp stack is configured then be | done with the entire end to end problem of peer to peer | collaboration across platforms, devices, stacks, local RF | environment, LAN configuration, and it includes durability | and available assurances, etc, are enormous. | | I also think it's kinda not true that protocols have stayed | stationary in that time. Certainly Bluetooth has improved, | there's lot do innovation on small device adhoc networks, | there even a lot of innovation on internet protocols over | the last 5 or so years. My observation (having been at | Netscape at the time) was the real demise of network and | internet protocols until late was the MSFT destruction of | Netscape. We were a huge driver of protocol innovation and | had demonstrated there's gold in them thar networks. We | hired a lot of protocol and standard developers and built | products that implemented as close as our talent allowed to | the spec. It was a heady time. Microsoft realized at the | time this push really threatened their core business model. | They so publicly and roundly pwn'ed us out of existence | that it created a massive chill in anything internet tech | related (most of us went into e-commerce as a result). It | wasn't until sort of recently Google self servingly started | bullying standards out the door that things sort of | unwedged again and despite the kind of sad way Google | primed the pump, things are really exciting right now on | the internet. | | I'll note that our Mozilla play was a really important | effort on our part to ensure that culture we had built | around open internet standards and technologies could stay | afloat into the present. I've been happy to watch Gecko and | Xul and others grow from their sapling state to where it is | now. It also prevented Microsoft from establishing a real | hegemony in internet standards. But most of all, I am so | happy to see a real C/C++ replacement candidate emerge | (Rust) from that effort. It was a real thumb in Microsoft's | eye to one up their $1B free browser anticompetitive play | with taking our then worthless IP and establishing a long | lived foundation around it. | ranting-moth wrote: | It's worth mentioning that the blog's author is not an expert on | the matter. I really don't agree with the title or the article. | dccoolgai wrote: | There is _one_ thing that can allow "two machines in the same | room to talk to each other without sending a request to a server | farm in Virginia". It does require the _first_ request to | populate the app: Web Bluetooth. Unfortunately it's only | implemented in Chrome,but it does work. | realPubkey wrote: | P2P in browser was improved a lot in the past years. Your two | machines could now connect via WebRTC and then send data to | each other directly, no need for bluetooth. This works great | and has a low latency. With rxdb you could even realtime-sync | the whole application state [1] without connection to a server | farm in virginia. | | [1] https://rxdb.info/replication-p2p.html | pvh wrote: | We tried Web Bluetooth in a project. It was extremely flaky. | Notably it also only works as a server, so you cant peer two | browsers over it either. | gspencley wrote: | What's old is new again. | | Remember when there was no "cloud" and just locally executing | software with local persistence? | | I want very much to return to that. There are a few use cases for | me, personally, where SaaS / "the cloud" makes sense but for 99% | of what I use a computer for, I want local only. I don't want my | application to require an active Internet connection. I don't | want it sending data to someone else's computer. Probably most | importantly, I don't want the software that I pay for to change | on me without my direct opt-in. | | The fact that we have articles about offline-first, cloud is | "optional" is hilarious when this was just normal every day | software only a few short years ago. I can't stand how trend- | happy our industry is. "The Cloud" and "SaaS" solved a few | problems for a few people ... but we went all in as if there were | no alternatives and those of us who don't require mobility and | would prefer that we can choose when to "upgrade" and what data | to "share" were left behind. | beebmam wrote: | I keep seeing this argument here but I just don't buy it. Most | companies don't want to operate all the infrastructure they | need to run their core workloads. Managed cloud services are | such a massive boon to small to medium sized companies. They're | great even for large companies for many scenarios. | JohnFen wrote: | > Remember when there was no "cloud" and just locally executing | software with local persistence? | | Remember it? That's still my reality, because for almost | everything I do the cloud and SaaS are not good solutions. | j45 wrote: | The irony of many libraries and frameworks trying to recreate | the offline-first syncing and replication that Lotus Notes had | more or less solved should be better known. | | Bonus points for the irony of LotusScript being ECMAScript, | which is also JavaScript. | | Oh, and Notes generating the native app as a web app natively | was pretty fluttery. | | I have to stop, because I can no longer remember why people | were switching away from Notes so furiously. And there was | probably a good reason like IIS. | | NotesSQL was a great little ODBC driver to make relational db | calls from the NoSQL backend of Notes. Many folks owe their | sharpness in the universal standards of ANSI SQL to get data | ported to MySQL. | | Edit: | | https://en.m.wikipedia.org/wiki/HCL_Domino | JakeAl wrote: | I miss offline readers. Push a button, download a payload of | data updates, read it all offline. | hunterloftis wrote: | I fondly remember locally-executing software with local | persistence by default. | | To provide a counterpoint, though, during that time my entire | family shared one desktop PC. Looking around me, right now: | work macbook, personal linux laptop, smartphone, steam deck. I | suspect that the workflows that were "fine" in 1995 would | really wear on me today. Especially the ones that involve | migrating documents from place-to-place for collaboration while | trying to maintain a canonical master copy somehow. | | Today, because of de-facto reliance on the cloud, "setting up" | a new machine - regardless of its OS - takes me about 20 | minutes. If my laptop fell off of my bike, that would suck, but | I wouldn't irretrievably lose important data. | | There are downsides to the current cloud-first paradigm too, of | course. But I don't think it's _all_ downside. | gspencley wrote: | Yeah I never said it was "all" downside. | | I never migrated the majority of what I do to "the cloud" and | I have multiple devices, laptops etc. in my house. Setting up | a new Linux install takes me about 20 minutes. Wouldn't know | about Windows. Then again, I probably use way fewer | "services" / "apps" than most people. It's funny, I've always | been a very tech savvy computer nerd. I've developed software | for a living for 25 years. But the older I get and the more | the industry changes the less I find I use "modern tech" as a | consumer. | | I'm also not thinking back to 1995. This all started, in my | memory, following the "mobile revolution" at the tail-end of | the 00s. That's when more and more software that I use every | day stopped selling perpetual licenses and started charging | monthly subscriptions. Everything went "mobile first" and | "cloud first" and it got more and more persistent as the | 2010s went on. | | On a positive note, there is some software that used to be | inaccessible due to price, like Avid's Pro Tools, that I can | now afford thanks to the switch in pricing models. | | But even if it took me an entire weekend to set up a new | device, I think that I would still prefer that over needing | literally everything to have Internet access. It removes the | control from me, the user, and places it in the hands of "the | corporation." They can change the software without my | consent. They can suffer outages (to be fair we can have | local hardware failures too but it's under my control which | makes a difference). I remember almost returning my PS4 when | it required me to connect it to the Internet just to be able | to use it on first boot. | hunterloftis wrote: | All good points. | | I suspect preferences will hinge on peoples' budgets for | personal responsibility. As my non-digital responsibilities | have increased, I've found it nice to be able to delegate | to "the cloud" - even at the loss of independence & | control. | | If there were a personally-owned "cloud" setup, I would | prefer that. A box that plugs into my fiber connection and | provides the equivalents of the cloud services I use, with | data stored locally and backed up automatically to a secure | server. A man can dream. | j33zusjuice wrote: | Such a thing exists, but building and maintaining that | come at a pretty high cost to your personal time. There's | very little that we do in the cloud that doesn't have an | on-prem (at home) equivalent. You could even rent servers | at a CoLo or something and provide yourself regional | resiliency, etc. | marcosdumay wrote: | > But the older I get and the more the industry changes the | less I find I use "modern tech" as a consumer. | | It may be a "get out of my lawn!!" reaction, but I find | modern software distasteful. | | I want to use software that enable me to invent and do nice | things. Not software that locks me in a pre-designed | process. Even if most of the time I don't go inventing, and | if the pre-designed process is nice, that difference still | sores me. | rurp wrote: | You aren't alone. Open ended systems are usually far more | powerful and interesting than rigid ones. I need an | extremely compelling reason to even consider picking up a | new online-only/saas or similar tool. | | Investing time and energy into a tool that can be ruined | or lost at any point in the future, or might turn out to | be too limited, is a huge risk. It doesn't take getting | burned too many times to start getting a lot more wary. | hbn wrote: | I personally like that these days my biggest concern about a | computer suddenly dying on me, or getting lost/stolen, or a | drive failing is the cost of replacing it. Pretty much any | important data to me is painlessly synced and it takes some | amount stress out of my life knowing that I have basically no | chance of losing data. | mbesto wrote: | > solved a few problems for a few people | | Absolute rubbish. The proliferation of SaaS has been absolutely | huge for business productivity, in fact, I would argue that my | professional services business doesn't exist at anywhere near | its profitability without it. | | > I don't want my application to require an active Internet | connection. I don't want it sending data to someone else's | computer. Probably most importantly, I don't want the software | that I pay for to change on me without my direct opt-in. | | What software specifically? How to collaborate on literally | anything business wise without a internet connection?! Now, is | there a case for offline software? ABSOLUTELY. But to call this | whole thing a fad and a trend is absurdly disingenuous. | | EDIT: | | Just saw your reply below: | | _I have multiple devices, laptops etc. in my house. Setting up | a new Linux install takes me about 20 minutes. Wouldn 't know | about Windows. Then again, I probably use way fewer "services" | / "apps" than most people. It's funny, I've always been a very | tech savvy computer nerd. I've developed software for a living | for 25 years. But the older I get and the more the industry | changes the less I find I use "modern tech" as a consumer._ | | Ahhh makes more sense, you're a developer. I get that YOU might | not need SaaS tools, but this is a very myopic take. | gspencley wrote: | You realize I was speaking for myself, right? I never once | said that SaaS doesn't provide any value to anyone. | | But you need to understand that even as a self-employed | business owner (product company, not contractor btw) for 15 | years, I didn't take advantage of many SaaS tools at all. | | Collaboration is niche. B2B productivity tools are a big | industry (ironically I actually work for a company that makes | a popular B2B collaborative SaaS product) but in the global | scheme of things it's still a narrow niche when you consider | the broad field of computing and software in general. Not | everyone needs to be mobile, not everyone needs to | collaborate. There are loads of software applications that | can be local only, but there are few options because of the | way our industry works. | | And your post is timely because I was just thinking to myself | this morning about how the biases that are introduced by | Product Owners who come up with these ideas in work-related | contexts, even if they are not the POs of B2B or | "collaborative" software, still permeate non-B2B, | non-"collaborative" software. They are in "work mode" and so | they tend to think in terms of "How do _I_ interact with this | software. What do _I_ need? " rather than actually | considering the use cases for their every day users. | | Take gaming, for example. Multi-player gaming is quite | popular and those who seek it out ought to have options | there. BUT ... I stopped gaming in large part because the | industry went all in on online multiplayer and single player | gaming options became more difficult to find. It's not that | they don't exist anymore, it's just that I don't want a | console that requires an Internet connection to play a story- | based game like The Last of Us. | | It's the following that pisses me off: | | - The "all or nothing" mentality of our industry | | - The ability for companies to change software that I use and | pay for without me being able to decide if it's worth | "upgrading" or not | | - The lack of choices | | I think it's pretty rich that we're both accusing each other | of the same thing. You made the argument that because | collaborative B2B tools are useful in a business context that | it is "myopic" of me to want something that doesn't cater to | that niche. I can make the exact same argument right back at | you. | mbesto wrote: | > You realize I was speaking for myself, right? I never | once said that SaaS doesn't provide any value to anyone. | | > solved a few problems for a few people | | Are you trolling? | Ensorceled wrote: | >>> but we went all in as if there were no alternatives and | those of us who don't require mobility and would prefer | that we can choose when to "upgrade" and what data to | "share" were left behind | | > You realize I was speaking for myself, right? | | So "us" is just you? Your "us" is a very small minority, | which is the point of the people who are responding to you. | d--b wrote: | Well try and start an offline only software business right now, | and you'll see the request pouring in. | | "How do I share this with other people (who don't pay for the | software)?" | | "Can we work collaboratively on this?" | | Etc etc. | | People are used to things being in the cloud already. And I am | not talking about tech people. | | Once you've experienced live collab, there is just no turning | back... | wintogreen74 wrote: | You hit the crux though: collaboration. If your product's | essence is collaboration you'll need to support this, but if | it's an enhancement the local experience is often so much | better, and we can solve the connectivity part on the side. | | >> People are used to things being in the cloud already. And | I am not talking about tech people. | | Most people use their phones for almost everything, and this | is almost all local execution, local persistence and huge | amounts of cloud-based collaboration. I wish desktops were on | this trajectory. | nonethewiser wrote: | I will almost always choose to use the web app over downloading | a client onto my system. Keeps things clean. The exception is | when the web app quality sucks. | | I'm sympathetic to your point but most apps I regularly use | require internet anyways. | dabluecaboose wrote: | Hear hear. I often dream of having a home setup with everything | but my web browser blocked from accessing the internet, and | exception granted as they are necessary. | | Alas, that's a pipe dream because of the way things work now, | and I don't necessarily want to inflict a luddite lifestyle on | my wife and children. But the allure is still there to setup | some crackpot scheme that will keep me from idly pulling out my | phone to check whatever just because my brain is idle for 5 | seconds. | mathgladiator wrote: | I agree with this in spirit, but there are many advantages to a | services model. However, building services is exceptionally | complicated. I'm building a simple platform which people can | run at home or in cloud. I have an unlisted tech talk dry run | https://www.youtube.com/watch?v=bWYgChA_aYA | fwip wrote: | We have articles about offline-first, cloud-optional software | because those articles are primarily discussing tools written | using web technology (HTML and Javascript) and often running in | your web browser. | scarface74 wrote: | Alternate take: | | I work on my documents on my computer, my phone and my iPad. | | My IDE is hosted in AWS Cloud 9 most of the time because I | travel a lot and while my internet may be spotty, it's good | enough to connect to the hosted environment and I get full | speed internet between my IDE and the Internet when I need to | download something to it (packages, Docker containers, etc) | | My photos and videos automatically get backed up to iCloud, | Google Drive, Amazon Drive and OneDrive. | | If I dropped my phone into the ocean, I can go to the Apple | Store, buy a new phone and it's just like having my old one. | hamsterbase wrote: | Couldn't agree more. | | I just developed a local-first read later software using CRDT | technology. aka | | https://hamsterbase.com/ | | 1. all data is stored locally, one page corresponds to one CRDT | file. CRDT file is a single source of information | | 2. use sqlite as cache for query and full text search. | | 3. use the version of CRDT as the file name. It is guaranteed | that there will be no duplicate file names and never file content | changes. Only files are deleted and added. | | In this architecture | | Users could synchronize their data with any intermediate media. | Such as hard disk, iCloud, http interface, webdav. It is | guaranteed that there will always be no conflicts. | wg0 wrote: | These ideas seem pretty doable for a single user note taking | app but as soon as you include another collaborator, you've a | whole another problem of different levels of conflicts, CRDTs | and what not. | | Becomes lot more harder when you have some 100 agents in the | field, taking orders on their mobile devices and you have to do | full double entry book keeping even when offline. | mgkimsal wrote: | And... you've got a large list of customer, contact and | historical info to allow access to. Sending that down to | people so they have it locally becomes at least a bit of a | privacy/security concern. | hamsterbase wrote: | This solution is suitable for processing documents. For | example, figma uses a technique similar to CRDT. | | It is not suitable for processing orders. | preseinger wrote: | if two different users modify the same version of the same | document in different ways, how do you resolve that | conflict without losing information? | hamsterbase wrote: | I have recorded all the operations of a document. Each | operation has an id . | | When the document is loaded into memory, it has a unique | uuid as the agent id. | | If the current version is | | hash(a1 b2 c3) | | If two people edit the document at the same time the name | will become | | hash(a1 b2 c3 e4) | | hash(a1 b2 c3 d4 d5) | | After merging, the document name will become | | hash(a1 b2 c3 d4 e4 d5) | | a1, b2 is "Lamport timestamp" | https://en.wikipedia.org/wiki/Lamport_timestamp | | the full version (a1 b2 c3 e4) is "vector clock" | https://en.wikipedia.org/wiki/Vector_clock | preseinger wrote: | if d4 and e4 are conflicting edits, then how do you | resolve them? | | say (a1 b2 c3) is "abc" -- (a1 b2 c3 d4 d5) is "abxx" and | (a1 b2 c3 e4) is "aby" | | what is (a1 b2 c3 d4 e4)? it isn't "abxxy" or "abxy" or | "abxxy" or anything else, because d4 and e4 are | concurrent/conflicting updates, which have no single | well-defined resolution (without additional information) | | meaning, this is a conflict | | if you just say that this resolves to (a1 b2 c3 e4) then | this is LWW but you've lost the information in d4 and d5, | so whoever was agent d has written information that was | good for a little while, but then ultimately lost after | merge, right? so this isn't consistent in any useful way? | jongjong wrote: | Except for all the people who died before the internet was | invented. They were completely offline. | adql wrote: | Yeah and riding 1000cc bike is just like driving the bicycle with | Extreme Speed /s | | > In the case of webRTC, I've seen so many projects do this where | they're like, "It's peer-to-peer! You just connect to the | signaling server and then the things talks!" That's not really | peer-to-peer cause you've got a server. If you've already got a | server...my advice is: don't mess around with peer-to-peer stuff, | just use that server. | | The prevalence of NAT really did a number on ability to have | properly p2p communication. And, well, rampant insecurity of | default user setups making most internet connection be at the | very least behind "only allow outgoing traffic or traffic | initiated by user" type of firewall. | | Even if you make all that nice code with each user having it nice | and secure private key and having to accept someone's public key | to start communicating there is still problem with distribution | and ascertaining that user is really who they are. | | And even if they are, well, they can be compromised, so your | local app also have to be very secure or else the potential | malware can just go between your contacts and compromise everyone | using the app. | | Or, you can just use SaaS and don't worry about it, or at the | very least not worry about more than one app having ability to | compromise your system | klabb3 wrote: | NAT is definitely the villain but their are other things as | well. You still need a discovery system to find who you want to | connect with. An ip isn't very good because it moves around, | and DNS is too slow to be operationally viable. | | And even if you solve those you have an N^2 problem in the | naive solution, and to reduce that you need mesh networks which | just don't have the QoS we've come to expect (to my meager | knowledge). | | Imo we should be able to find a better middle ground, because | full decentralization is insanely hard. If we had federated | standards and tooling like web and email, but for modern use | cases, I'd be a happy man. | | Despite (or perhaps because) the tech craze over the last | decade, the developments of such open and useful standards | leaves a lot to be desired. Almost everything cool these days | is some app with perhaps an api that is branded as a | "platform". We're basically treading water. | dariosalvi78 wrote: | an email client is a good example: you can read and send emails | also offline (at least with most clients that keep a decent | cache) and only synchronise when connected. But that works for | some services, not all. | [deleted] | shadowgovt wrote: | Similarly, files are just a one-way pipe to an unknown process to | be executed at some indeterminate future time (ranging from "now" | to "never"). | zaporozhets wrote: | This sounds like something one might say during an LSD trip | coldtea wrote: | Online is just offline with | | extreme latency for any new data fetch/processing (an http | roundtrip or more for each interaction with your data) | | someone else being in control of the programs you use, forcing | changes and updates whenever they like, renting them as a | service, | | your data hostage, snooped at, sold to advertisers | | a limited UI experience based on the DOM and browser APIs | | crappy OS integration | | (often) ads | jrm4 wrote: | Right. | | There's a great deal of _technically_ unnecessary complexity | that many people here handwave away because "that's just how | it is." | | It's kind of funny how, e.g. above, the emphasis is on "UI," | when that's not it at all. It's the underlying infrastructure | that's often encrusted layers of unnecessary (but profitable) | stupid. | titzer wrote: | > (often) ads | | This is a much bigger problem than people realize. Instead of | working on _improving user experience_ , we've got people | explicitly working _against_ user experience by injecting ads | into it, for the simple reason that they have your attention | and can then _sell it_. It 's the attention economy, and it | sucks. Fuck ads. | charcircuit wrote: | There would be no user experience if there were no ads. | Working on ads can improve the user experience by making them | more relevant. | alasarmas wrote: | I think people are really only interested in commercial | messages when they come at a much lower frequency than they | do these days. Other than that, it's just noise that we | suffer through in order to get the information or content | that we want. | kapp_in_life wrote: | >Other than that, it's just noise that we suffer through | in order to get the information or content that we want. | | The trailing part that's left off is "for free". If you | want all the content we receive for free today, someone | has to pay for it. So either people pay with their | attention or their wallet, and consumers have by and | large made their choice of ad supported services over | paid alternatives. | mehlmao wrote: | I pay for software and the developers force in ads later. | It's not either or, it's just racing to the bottom, | forever. | yamazakiwi wrote: | User Experience exists in many spaces that lack ads. Ads | don't inherently improve UX, nor are they required for a | good experience. | govolckurself wrote: | Whoa now. Don't go after the cash cow! It's so much harder to | rent-seek when people just run regular programs that don't | require 10 gigs of RAM and internet access. But where's the | career promotion in that? | JadeNB wrote: | > (often) ads | | This one doesn't have much to do with online vs. offline except | that you have to be online to see the "latest and greatest" | ads. Stale ads can perfectly well be shown offline. | alpaca128 wrote: | > Stale ads can perfectly well be shown offline. | | They can, but an Android app I use regularly simply won't | show any ads if it cannot access the internet - I get its | premium version for free just by pressing a button. Meanwhile | I've seen the user-hostile version of that on an iPad years | ago, where an app simply locked itself until it was able to | download ads. | coldtea wrote: | Traditionally they weren't on offline software though. It's | an online-era thing, and it thrives on online-ness, both for | getting the "new" ads and for sending impressions and | telemetry back. Even on modern offline-software-with-ads it's | usually a glorified web view. | hgsgm wrote: | Most of my _paid_ online software from non-monopolist | providers doesn 't have ads. | coldtea wrote: | Most of it still sells your data to advertisers... even | when they promise they don't. | goodpoint wrote: | ...and more surveillance. | quartz wrote: | I'd frankly be happy with more apps just being offline tolerant. | | Surely google maps knows I live in NYC by now but if I'm between | stations on the subway the odds of me being able to pan around at | various zoom levels is surprisingly low. Surely basic semi-static | highway and geographic information could be locally stored (this | basic information used to fit in a spiral bound book we'd keep in | the back seats of our cars). | | iMessage just gives up if a message can't go out rather than | queuing it. | | Heck most weather apps won't even show me the previously | downloaded forecast if there's no network, they just show "-" or | a sad cloud image. | moritzwarhier wrote: | Re: Google | | I assume they still have the "offline maps" feature, but you | set it up and select regions by yourself. I have no idea why | they haven't automated that using their location tracking and | AI features. | | Re: iMessage Yes that's a shame. Only excuse I can imagine is | there should be some timeout by how much a message is allowed | to be delayed. And because of SMS delivery etc this would | probably cause a lot of complexity (cellular has its own | queueing system, at least here, and it's unreliable) | hgsgm wrote: | Android GMaps has done this for years already. | jancizmar wrote: | Well, nice, but who is going to make the money? | dcow wrote: | We are beyond fucked in terms of any effort to build local-first | software. | | Notably: | | 1. product people and interaction designers don't understand or | care about the difference, which isn't strictly their fault, | because | | 2. users don't understand (heck some even want a team of | engineers making sure the DB doesn't drop their writes all day | every day) and only care when the software can reasonably be used | offline anyway, which means | | 3. standards, protocols, and platforms have baked in dependence | on servers (oauth, tls, ip, mobile device native apis, the | goddamned entire browser, etc.) for example, you can't do | anything on iOS in the background unless you have a server | sending the devices silent push notifications every 5 seconds ... | also | | 4. true offline with anything more than 1 client is a distributed | system and instantly _hard_ , so | | 5. the entire tech community is not trained to build offline | applications, we're trained to glue react UIs onto CRUD backends | because thats how you 10x your SAAS revenue in valuation over 3 | years. | | I am _lucky_ enough to have worked on a few products where we did | have to care about offline and it _still_ ended up being | relegated to the realm of "obscure edge case", for all intents | and purposes. So you end up continually justifying why you're | spending resources on supporting these weirdos who don't have | reliable internet connections. | | Sigh. | | /rant | | These days, I do honestly think that some things just need to be | online. The internet is meant to be a globally addressable | network. You're not supposed to have these little islands of | accidentally private because-we-ran-out-of-addresses-and-hacked- | the-shit-out-of-the-protocol-(NAT) networks. You're not supposed | to be afraid of someone sending port 22 on your laptop an ssh | handshake because the crypto is good. The whole _IP_ world is | supposed to be zero trust. We dropped IPv6 scopes because they | were a crazy idea for a different world where we all ran | federated networks and whatever. | | The real point of "local first" in our modern world is about | _data ownership_. If we can do anything as a community to help | move the needle and get to a better place, it 's building | applications where clients truly own the data and the server just | provides convenience and redundancy. Give clients | cryptographically strong identities. Use webauthn. Sign requests. | _Trust_ users with their own data. Help users be sovereign and we | solve lots of privacy and centralization issues all at once. | | /soapbox | muhaaa wrote: | IF you can solve data sync for your application, local first is | simple & easy to develop and feels very responsive for users. | Lots of business applications are now in that range. 10MB of ERP | data is like 1 year of operating a medium sized company is the | equivalent of a picture of my cat. | mensetmanusman wrote: | Latency, bandwidth, signal to noise, etc. are all different by | orders of magnitude | budoso wrote: | Sounds like an opportunity for a new JS framework, because nobody | wants to write this stuff themselves | samwillis wrote: | It's a bit like when smart phones happed we started doing ui | "mobile first" as it easer to scale up a mobile UI to desktop, | it's easier to start "offline first" and move to constantly | online (even collaborative) than to start online first and add | "offline" eventual consistency later. | | There is much chat about real-time collaborative apps, but the | reality is that most people are working async most of the time. | If you start with the concept of offline first, with eventual | consistency for collaborative work, you implement all of the same | conflict resolution as if you are implementing a real-time app | with conflict resolution. Then adding real-time collaboration | later is easy. | | This is where CRDTs (conflict free replicated datatypes) work | better than OT (operational transforms). OT need more supervision | from the server, the further you diverge from the servers state | the more likely there will be a corruption. CRDTs are inherently | designed to work with massive diversion and no central authority, | really they are offline first. | vrglvrglvrgl wrote: | [dead] | phendrenad2 wrote: | TL;DR: This is about offline _communications_ and not the world | in general. It also assumes that communication is achievable. In | the real world (offline and online), we have problems with that. | When you attempt to communicate online you are often redirected | "through the gift shop" so you can be shown the exact number of | ads such that you statistically won't give up and pick up the | phone (and I'm sure phonecalls will have pre-roll ads at some | point too). | | In fact, ad-hoc random person-to-person communications online are | gatekept by "the algorithm" which would rather answer your | question directly to keep you from meeting another warm body | online. | davnicwil wrote: | > Why can't we do this easily yet? | | Well, because it's distributed computing. Distributed computing | is hard... really hard! Especially for applications requiring any | level of real-time-ish interactivity between different users. | | Two computers talking to each other in a room via a server in | Virginia is not absurd. The physical distance is abstracted over | completely, the application engineer needn't think about that at | all, that's the beauty and point of protocols like tcp/ip. | | What cannot be abstracted over is the single source of truth in | the networked system (the server) that makes a whole class of | really hard problems go away. So as much as you can describe the | remote server as a problem, because of latency perhaps, it is a | vastly lesser problem than the distributed computing ones that'd | be introduced in the alternative! | | That is the basic reason why things are the way they are, it's | really not absurd or surprising at all, in my opinion. | aequitas wrote: | I think that boils down to CAP theorem and whether or not you | want to shift the problems onto the user. With collaborative | tools like chat or shared document editing. It's far easier for | the system to deal with and for the user to conceptualise an | availability error like not being connected to the WiFi or the | cloud provider being down for a moment. Than it would be to deal | with consistency errors like conflict resolution and asynchronous | communication, eg: high volume chat channels/threads where | responses arrive out of order or too late to be relevant. | | It's just easier to switch to a different tool like IM or phone | when one cloud tool is down so you can quickly discus the topic | there, that to postpone your mental train for when everything is | eventual consistent. Or to switch to the 'offline' tools we | already have, like e-mail, which require you to rethink your | train of though to the different medium. | | Also central authorization and authentication are not to be | overlooked. Those problems also suffer heavily when partitioned. | ftxbro wrote: | > "A lot of the time we're using the techniques to build aircraft | carriers when what we really need is a bicycle: something simple, | something personal, something that can take you where you need to | go and that responds to you alone (and is a heck of a lot easier | to maintain and operate)." | | sounds like | | "Linux is a semi-truck with 20 gears to operate. Windows is more | like a car. TempleOS is a motorbike. If you lean over too far, | you'll fall off. Don't do that." | amelius wrote: | "Never underestimate the bandwidth of a station wagon full of | tapes hurtling down the highway." | | https://en.wikiquote.org/wiki/Andrew_S._Tanenbaum | | The latency, however ... | systemtest wrote: | LTO-9 tapes do 45TB compressed, 18TB uncompressed. And uses | around 0.23 cubic decimeter of storage. | | A European station wagon with the rear seats folded takes 1555 | liters, with 95% utility that is 6422 tapes. That wagon can | hold 289 Petabyte of compressed data | | From Amsterdam to Rotterdam, it takes about an hour to get your | data to its destination. That is roughly 640 Terabits per | second. For comparison, AMS-IX peaked at 11 Terabits per second | last year. | seabass-labrax wrote: | A fair comparison with AMS-IX would perhaps need to factor in | the time spent reading/writing the tapes though. Compressed | LTO-9 tapes can be fully read in about 12.5 hours, so | assuming for sake of argument that your car contains 6422 | compressed tapes with a total of 289PB of data on them | already, and that you have (a rather expensive) array of 26 | LTO-9 drives at your disposal in Rotterdam, you'll need about | 130 days to fully read their data. The hour of driving across | Holland is rather insignificant compared to that. All in all, | you get 'only' 26 GB per second, limited to that only by | having 26 drives. | lozf wrote: | What happens when you add the time to restore that all that | data once you get to Rotterdam? | amelius wrote: | That depends on how many tape drives you have at the | destination. | CalChris wrote: | In related news ... Never underestimate the | bandwidth of a station wagon full of tapes hurtling down the | highway. | alberth wrote: | I've always thought of it as: _Offline is Persistent, Online is | Ephemeral_. | | e.g. physical books can last centuries, an online blog - not so | much. | wheelerof4te wrote: | Someday, in the far, far 90s, we had LAN. And everything worked. | | Now, you need 5Mbit speeds just to collaborate. Funny how the | tech "progressed". | 9dev wrote: | In other news, old man yells at cloud. You conveniently ignore | the changed reality: since the 90ies, the number of active | internet users, malware, services, goods sold, and customer | expectations have skyrocketed. | | What you have in stock is nostalgia, my friend. Everything | worked? Like Windows 95 crashing if you looked at it sideways, | Linux requiring you to compile drivers for pretty much any | device yourself, like fifteen competing printer protocols all | incompatible with each other? You might want to get a reality | check :) | genewitch wrote: | in the 90s, there was microsoft messenger. real time, point | to point (and maybe ptmp) chat, audio, and video. What | replaced it? I have to run a coturn (STUN) server just to be | able to talk to my friend in a private way, which means now i | gotta deal with some provider for hosting both coturn and, | say, Matrix (Synapse). | | I also run a PBX, just in case coturn decides to stop working | from lack of use. Now i gotta make sure i start the PBX app | (3cx) once a week otherwise android helpfully removes | notifications for me! | | AIM, ICQ, etc were great - and i'm discounting "presence", | because that was a small part of it. realtime communication | for "free". I've been running chat servers for over a decade, | and right now, there's three people on my matrix server, me, | wife, and my best friend. there's five people on my PBX, same | three plus my youngest child without a SIM card, and grandma, | so grandma can call kid and vice versa. I've run ircd, | matrix, rocket.chat, mattermost, a couple of the jabber | systems, ventrilo, teamspeak, hand-rolled garbage. | | we've had people sign up and chat once, but as soon as | notifications stop working we never see them again. Heck, i | have 3 PUSH accounts just to make sure that notifications go | through everywhere. | | Meanwhile, 20-25 years ago, load up trillian or AIM/ICQ and | there was everyone, literally everyone. I know facebook ate | that lunch, but i refuse to have any facebook apps on my | phone, and most people i know refuse as well, so that's a | non-starter. Texting is _still_ spotty, because VoWiFi tends | to just magically stop working if you leave the wifi area a | couple times in a day, so texts will sit in limbo until you | realize. Phone calls are the same way (except via PBX, those | always seem to work for some reason...) | | running out of IPv4 and the ubiquitousness of CGNAT have | killed what the internet was. And that's sad; "nostalgia" | isn't necessarily a negative thing. It used to be better, at | least in the West. Maybe wechat and signal and telegram and | whatever work better for the rest of the world now than any | of our stuff from 25 years ago, i wouldn't know, because i | know exactly _zero_ people on any of those services - i 've | checked, once every couple of years. | zamnos wrote: | But have you tried to move any users over to, "wechat and | signal and telegram and whatever"? Getting users onto your | own system wasn't trivial. If you want to move to a more | supported system like, say, Signal, then you have to pay | the platform switching costs, which includes moving your | group of people. Which involves having the social capital | to do so, which is unfortunate for the less social of us. | | There are many things that killed what the Internet was in | the 20-30 years hence. IPv4 exhaustion is regrettable, but | entirely predicted, and for those in the west, not a huge | deal. I can pay any number of cloud providers a small fee | to host me a box with a publicly routable IPv4 address. | CGNAT is annoying, but the number of libraries which will | punch a hole in that NAT has also expanded by a huge margin | since the 90's. So those up things are unfortunate, but I | think there are many other things that changed the | Internet, some for the better, some for the worse. | genewitch wrote: | > But have you tried to move any users over to, "wechat | and signal and telegram and whatever"? | | no, because everyone uses something different and there's | no "trillian" or meebo for all the shiny-tech. If we're | going to play "encrypted chat", that no one can agree | what that means, or what service to use, may as well use | my own. Hopefully matrix becomes more popular (it | probably won't, unfortunately*), but if not, i still | won't use the likes of telegram or FB messenger or tiktok | DMs or anything of that nature. there's not a good IRC | client for phones, last few times i checked over the past | 15 years. | | * Matrix has the curse of being good enough on the client | side, but kind of a PITA on the server side. Synapse, the | reference implementation is in python, which is single | threaded, so joining a large room "as-is" out-of-the-box | is not feasible. You have to split each of the synapse | elements into a microservice that gets its own python | instance, but the documentation was (and probably still | is) quite sparse. I'm sure there's a _discord_ where i | can get help. | blowski wrote: | In the late 90s, I used to collaborate with about 10 people, | all in the same office on the same LAN, for production of a | magazine that sold IT stuff. | | We used the "Excel Shared Spreadsheet" functionality. The | file was hosted on a network drive. It corrupted or crashed | so frequently - even when only one person had it open - that | we took to copying it to your local machine, making the | network copy read-only, editing the local copy, then copying | back onto the network drive. Even this was buggy, so | possession of a stuffed octopus represented a lock on the | file. Microsoft themselves got involved at one point, as we | were a reseller for their products. Their solution was no | better. | | So if there was a halcyon period for collaboration at some | point in the past, I'd like to know when it was. When I see | 100 people live editing the same Google Sheet, I think | perhaps we are in the golden age. | birracerveza wrote: | Please tell me you called it locktopus | tonyarkles wrote: | Heh, we had a similar process for modifying the schema | for an Access database or... something adjacent to it. | There was a bunch of XML that needed to be versioned and | if two people modified it, committed to SVN, and merged, | there was almost certainly going to be huge breakage. I | went out for a cigarette after one of the moments of | frustration, saw a nice maybe 2kg rock, and the Lock Rock | was born :D | goodpoint wrote: | > You conveniently ignore the changed reality: since the | 90ies, the number of active internet users, malware, | services, goods sold, and customer expectations have | skyrocketed. | | Now our printers, cars, and soon fridges are DRM-locked and | doing surveillance. | | And they can stop working at any time if the manufacturer | goes bankrupt or simply stop supporting them. | JaimeThompson wrote: | >Linux requiring you to compile drivers for pretty much any | device yourself | | It's not much better on modern Fedora. The drivers do come | precompiled but you have to reboot sometimes twice per week | to install updates. | phkahler wrote: | I rarely do updates and don't get notifications for them. | Windows OTOH will demand I update, or decide to when I | don't want it to. | prmoustache wrote: | Nothing forces you to reboot it twice per week. | worthless-trash wrote: | Agree, they deliver updates and fixes, its good to have | the option. | radiospiel wrote: | so young man yells at old man yelling at cloud? TBF, software | in the past handled fluctuating connectivity much much better | than todays, probably because back then this was normal. Once | you got a thing working (a printer driver, say) it typically | worked. | | Today, with spotty internet, software you have or could have | on your device might or might not work. Just recently I have | seen a website which loaded, but was non-functional until 2 | mins later a cookie warning was also loaded. | | Nothing in there is about | | > the number of active internet users, malware, services, | goods sold | | but about not building for applications only loading half | (because we are still waiting for some obscure JS or CSS from | not the original domain that noone really never needs.) | govolckurself wrote: | [dead] | usrusr wrote: | At least the printer protocols have stayed true to | themselves, the more the merrier. | | Picking a random example: "AirPrint(r), Brother iPrint&Scan, | Mopria(tm) , Cortado Workplace, Wi-Fi Direct(r)". | | Will a lists like that be enough to overcome your fear and | skip the costly upsell to exactly the same printer, but it | also understands PCL6? (likely a bit flipped in the | firmware...) You decide. It's like a reverse confidence | trick: "look, it's 2023 already and it's awesome, you really | don't need PCL6 anymore. Trust me." | phkahler wrote: | Haha I got a WiFi direct printer. It made no indication of | working with Linux but it just worked out of the box. It | came with a driver disk, and it's needed to get it working | with windows .. | usrusr wrote: | Nice to hear! I'm not really doing Linux on the desktop, | but in this age of almost-but-not-quite paper free, I | like to think of printers in decades. And on that time | scale, "no special fiery hoops to jump through on Linux" | is really the only thing that has any value as a | predictor of future usefulness. After some googling my | vague conclusion was that a full complement of wireless | protocols would indeed be a tolerable substitute of PCL6, | but I'm glad for the confirmation. (even if I recently | dropped out of the printer market again, turns out that | the day I gave up on my ca 2001 Samsung I just wasn't | sufficiently desperate to tease it into accepting an | empty page as something to print on) | genewitch wrote: | "paper free" sounds un-fun. I have a brother laser, that | replaced a 2 decade old HP laser that my youngest broke | when he was 2 or 3. We go through about 3 reams a year, | more when one of us is going for a degree. I print maybe | 5 things a month on average, usually recipes. I wouldn't | forego a printer for any reason. | | you can use gimp to take images and make them into | coloring book pages, you can print instructions, | calendars, drawings, diagrams; prompts for writing, your | own writing to make sure that the "screen" isn't tricking | your brain making you miss editing/grammar errors. | Coloring pages, maps of countries, and other educational | things are more fun if you can hold them and put them on | your wall, if my kids are any indication. Having a | scanner and a copier and a networked printer in a single | box for what they cost - that makes it difficult to see | the aversion. | | I have had fancy e-readers since the original kindle, and | before that a Clie and two palm pilots with acrobat and | an epub (or whatever) reader. and i still prefer dead | wood. I read more books on paper than e-ink. I read more | on a computer screen than books, though. | [deleted] | imadj wrote: | Too bad you can't use LAN to work from home | qtzfz wrote: | You use VPNs with more or less the same result. | bayindirh wrote: | Well, every WAN is a LAN when looked from a sufficient | distance. | | DSL & Cable encapsulates Ethernet. City-wide networks are | again Ethernet. In fact, everything is Ethernet with some | routers between. | | So, you're actually using a mixed-carrier Enthernet LAN with | a couple of NATs in the way. You can build another LAN on | your LAN with VPN, too. | imadj wrote: | I know you can use ethernet to build a network but if you | build a global network with 90s technology, you'll get | what?... the internet like we know today but worse. What | problem was solved? | | That was my point responding to OP. We actually progressed | and we are facing new challenges. | bayindirh wrote: | We're still using 90s technology. We only have faster | switches, quicker routers, a couple of standards for | faster connections, and some tools which disguise or | repurpose deep packet inspection as "software defined | networking". | | A country wide router still can stay in service for a | decade. Residential FTTx installations consist of a TelCo | class switch, maybe a router, compact DSLAMs if you have | DSL service and a couple of fibers in, tens of fibers out | for FTTH customers. | | It's faster hardware on the same stack. Nothing more, | nothing less. | | ...and, oh, link-speed (transparent) DPI equipment in key | places for lawful interception. | MichaelZuo wrote: | Theoretically, if an entire major city's connection with | the outside world was cut off, could all the | infrastructure within the city function as a really big | city-wide LAN? | bayindirh wrote: | Yes. You might need a dhcpd on a laptop though, if your | city's IP management is outside the said city (Cable/DSL | modems needs their own IPs, unless they are static). | | ...and possibly a small DNS server (or a hosts file | somewhere easy to get). | | That's all you need. | | If you want to navigate via IPs only, you can do with a | DHCPd. | blowski wrote: | It's electrified rocks all the way down. | cesarb wrote: | > Too bad you can't use LAN to work from home | | Depends on what you consider "work from home". You might not | be able to chat with your co-workers without a WAN connection | (unless you go really old-school and use a telephone), but | you can for instance develop software from home without any | working network connection (and git makes it easier by | allowing you to create commits while offline; see also the | "git bundle" subcommand). I've done so occasionally when the | Internet connection goes kaputt. | imadj wrote: | That's kinda my point replying to OP. We've indeed | progressed. I'm not sure if you are denying that? | nicce wrote: | Now you need 5Mbit speeds so that your Windows' boot time is | not slowed down. | excalibur wrote: | Relevant xkcd: | | https://xkcd.com/2224/ | toss1 wrote: | >>>It almost sounds like a form of resilient design (i.e. | progressive enhancement) if you think about it -- the cloud as an | optional, layered enhancement of your application. Now that's a | paradigm shift! | | This is literally what was pioneered by Lotus Notes 32 years ago. | When everything was local, their rich-content databases could | work just fine locally and also replicate on any desired schedule | with other copies of the same databases/apps. The model was | explicitly Seldom-Connected, so you could run stand-alone in a | remote location for weeks and send/receive updates whenever you | got to a phone line, or could have it collecting/distributing | updates every N seconds on a persistent connection. | | A vastly superior model to everything I've seen since, and it is | too bad that they, and especially IBM blew it with the weird | programmability models and corporate-extract-every-dollar | approach. | | Acting as if this is a somehow new concept is just a display of | cluelessness, but it is good to see good concepts getting some | attention (again). | trevorg75 wrote: | SaaS has ruined the development landscape. | pyinstallwoes wrote: | Offline is just online with 0 degree lightcone. | samstave wrote: | One thing that seems to have gone out the window, to a _certain_ | extenet, is the idea of DR, Business Continuity and resiliency | for a few key reasons: | | 1. Cloud is not cheap, so doing a proper DR in a loud environment | is going to price out small/medium businesses. | | 2. Most customers don't have staff skilled in the realms of "what | if" disasters, and have not tooled to spin up a copy quickly in a | new region/ _provider_ should their site get nuked. | | 3. Most cloud customers have zero plan for what to do when cutoff | from their cloud providers, because of above. | | - | | It would be cool to pay for "ghost infrastructure" (I dont know | if this exists already) | | But... the idea would be that as you build out your VPC/whatever | environment, the cloud provider creates a ghost version of that | infra in every other reegion (meaning all the configs and | everything are mirroed to a repo at the other locations and allow | one to spin up a complete copy of primary infa wherever one | likes, and youre basically paying a small amount for a clean, up- | todate DR copy of the environment as "a cost of doing business" | but in the event you needto, load a snapshot of everything (sans | actual data - thats extra) to just launch the environment... | | We built this manually in the past (manually meaning the ability | to launch an instant VPC and migrate traffic to it... but this | was a few years back and I am sure that its far more mature in | the real world now... | | So what options do people have today? | muyuu wrote: | The other way to see it is that offline is the outmost possible | edge computing. | | Or that offline is zero network latency for the stuff you have on | your computer. | | Or that offline is, when functional, like online but without | surrendering all control over your computing to someone else. | | All these metaphors have their own limited scope where they are | true and most appropriate. | marginalia_nu wrote: | Alexa, write me a witty response mentioning IP over Avian | Carriers. ___________________________________________________________________ (page generated 2023-04-19 23:00 UTC)