I Was Wrong About Offline
medium.com
medium.com
Facebook has (had?) a program to address this called '2G Tuesdays' [3]
[1] https://backchannel.com/how-the-web-became-unreadable-a781dd...
[2] https://uxdesign.cc/show-your-work-dont-forget-loading-indic...
[3] https://code.facebook.com/posts/1556407321275493/building-fo...
"Programmers with fast computers write slow code" has been my justification for always buying a cheap shitty laptop, and my excuse for still not having a SSD...
Similarly: "Programmers with reliable Internet connections write unreliable code."
Silicon Valley's obsession with high-powered boutique notebooks and the high-frequency replacement cycle of Apple products is in part why so much software that comes from the region is inaccessibly slow.
That said, I'm fine with folks using top of the line computers for developing, just not for testing. Nothing will frustrate you more than attempting to use an IDE on a memory and CPU starved system with a spinning rust drive. Nothing prompts you to silly shortcuts more than having a minute plus code/build/test cycle.
But once the coding is done, pull out that netbook from 2012 and make it run fast on that platform.
When I run it through a minifier, optimize a few things, remove the debugging code, and run it on a "recommended" spec device, things run so much faster, and it's nice. It gives a nice feeling of accomplishment in addition to the other benefits.
It also lets us say no to UI features that would run too slowly early on instead of wasting time on trying to get them running on the lower spec hardware.
It's a problem that's been around forever. I dunno how we solve it, but I applaud Facebook for at least trying.
I like this explanation (somewhat down the page) of why Twitter changed in 2012 from a single-page app to more server-side rendering. http://tomdale.net/2015/02/youre-missing-the-point-of-server...
I have regularly seen apps link to third party social network libraries synchronously. The problem is that corporations will routinely block things like Twitter. You have to wait for the connection to timeout because the domain is blocked.
Also http connections are often closed prematurely by proxies and firewalls and can take seconds to restablish. Apps will often lack sufficiently robust keep-alive so the user will suddenly have an unreposive site.
It's the same for most of Google's web services. They built them for themselves, and neglected to assure that they would work on the majority of the install base of PCs. It reflects poorly on Google's software development process and the quality of its management.
I built a product that embraces offline completely. It permits companies and individuals share files in their LAN over Wi-Fi. File sharing shouldn't be limited to the 'cloud'.
Like phone works only in a certain part of one room, or works but sensitive to movement, or works fine, but you'll have multiple outages between home and work. Leads to missed calls, texts, and plays havoc with apps that mostly assume perfect connection. My attempt to adopt Google Play music was over in a week or two.
I wouldn't mind if I was in the wilds, I'd expect it, but that's in towns of 100k+ - 1m+. Crap signal and breaks isn't some rare edge case, it's common.
Facebook (and everyone else) need barely works and often doesn't Thursdays and Fridays to go with 2G Tuesdays!
Took part on a project that should be used nationwide (i.e., not costumers, but clients would have to use it). So much care was taken in consideration about some few users that didn't have reliable connection, could go offline for days, etc., that the project reached a dead end after some months.
Lesson learnt (for me, at least): sometimes you have to take care of 95% of your users first, developing as fast as possible so that they benefit, and then take care of those last 5% afterwards, even knowing that they will cost a lot, perhaps as much as the 95% users costed. Trying to solve slightly different problems with just one solution might escalate until becomes unpractical.
Power (backup batteries, generators) Servers (multiple power supplies, storage, memory, NICs) Datacenters (multiple servers, internet connections, power suppliers)
All this to serve an app site, why stop at the first connection hiccup.
(I did make a demo of how using React & Redux can help sync UI state from offline to online but it's not a comprehensive solution https://medium.com/@firasd/interface-from-data-using-react-t...)
> Developer Experience Is More Important Than UX — Wrong
When would "developer experience" ever be more important than "customer experience"?Nope. That's just more ignorance of what is out there piled on (plus peddling your own stuff aka content marketing).
The platform is expanding fast and lately it's getting harder to find developers for my teams. Many of the most experienced developers are working on project abroad where rates are much higher (Benelux, the Gulf, United States).
As a developer platform it really makes you more productive. I was working with .NET before and I think I became 10 times more productive (of course this could mean that I sucked as a .NET developer).
However licensing is expensive, so it's not for every customer and also not for every project. For enterprise business apps that need to change often I know nothing better.
I'm probably biased, but I'd say it's nice for these kinds of enterprise apps. You get a bunch of core modules for free, which you can then adjust to your needs - saving you the time of building yet another stock management app or whatever - and even for new modules, the framework provides most mechanisms for regular CRUD, so you can literally define a class with just the data fields you need and a menu, and all the UI will be generated on-the-fly to let users create/edit/delete records. Then you can extend and override at will.
It's not without its flaws, but for building the typical backoffice app, it's a pretty sweet spot between a regular framework that just provides the basic tools and a closed application which you're forced to "configure" with hacks and still only does half of what you need.
EDIT: By the way, I don't know about OutSystems, but Odoo is all made and extended in Python (and JS for frontend, but I rarely need to use it).