These are fairly common problems for newer apps in Android which has been changing quite a bit in the recent years. There are multiple ways to do "safe area" viewport stuff. It's reasonable to make these kinds of mistakes.
More and more of the social networks are just the algorithm though - tiktok, X, Facebook, etc. How much of your feed does the average use personally know now?
In comparison it’s much faster to draw, infinitely more portable and much less distracting. I use pen and paper for self notes that are throwaway in nature or exploring ideas. For artefacts that are meant to be shared with others I use a computer
My daughter who is 3 is only recently poddy-trained. She now knows to go to the bathroom next to her room. Before she was trained we had a "portable" toilet (think plastic bowl sitting in a toy-like toilet shell basically) she would occasionally use in her room.
Similarly we've recently trained her when she's done with eating to bring the plate to me or my wife to clean/put up (she can't reach any countertops).
Today she had to go and my wife was in the shower so she couldn't use her normal bathroom. She used her portable toilet, picked it up, and brought it to me to clean :).
This sort of "logic" happens all the time every day and I probably miss 90% of it but I definitely thought of it when I read your question.
My daughter has a number of stuffed animals, and she's attached to one in particular named Eloise.
Often, when we're having trouble persuading her to do something, I can tell her Eloise wants to do that thing. I'll use teeth brushing as an example.
Eloise, being an independent 'person' of sorts in my daughter's mind, accepts the premise that Eloise would want to brush her teeth, (we remind her, Eloise doesnt want cavities, and my daughter agrees with Eloise: cavities are bad!). So we go and pretend to brush Eloise's teeth in the bathroom. Once Eloise is done, my daughter is usually all too ready to brush her own teeth.
As one might imagine, this tactic would not work on most adults. but toddler logic ontology imbues her stuffed animals with a sort of pseudo-agency (sometimes daughter insists Eloise does NOT want to brush her teeth or whatever, but that doesnt happen often, funnily enough).
If you work on an older and large rails code base, you can easily find the programmers who came from more "formal" languages like java.
They build layers and layers of code to "isolate" rails and end up with big ball of mud. Once you do that you have to keep wrapping and adapting, and commanding, and querying and it takes a gang of more than 4 developers to maintain a feature set that could be done with 1 good rails dev.
Code is liability. Features are the asset. Well written rails has one of the best bang for the buck for lines of code per feature.
> Could you give some examples of what the use cases are where Rails makes it hard to stray from the beaten path?
Rails is amazing for greenfield projects. It will automatically do things for you which will greatly reduce the amount of boilerplate you need to write as long as you follow the framework's conventions.
However, Rails has a less than stellar reputation from those who have maintained long lived projects which use it. Rails' conventions encourage the use of fat models where business logic is implemented in the models themselves.
With the default scaffolding Rails provides, every single model and all of this business logic ends up in the project's app/models/ directory without any separation between different features. Because the default doesn't cleanly separate business logic with well defined boundaries this means that Rails apps tend to evolve in a way where everything starts to become tightly coupled with everything else. When the business requirements for the application inevitably change this tendency towards tight coupling between models makes it difficult to make major changes to existing code.
I've also seen hacky workarounds used in Rails based apps which exist to make complex business logic work (e.g., saving one model doesn't implicitly trigger hooks for business logic on other related models). These hacky workarounds usually break the conventions Rails uses and ends up requiring extra boilerplate to be added elsewhere in the application.
Some developers try to avoid this by hand rolling more architectural layers (e.g., "Java/Go/Node.js/OOP like") on top of Rails to try prevent this, to varying degrees of success. Other frameworks (e.g., Django) try to encourage developers to separate different features into distinct modules to try and prevent them from being tightly coupled with each other.
> Long-lived rails apps are a nightmare to work with, in exactly the same manner as long-lived java, python or php apps
Agreed that tech debt and bad architecture is everywhere. However, from my experience there is a difference in how much work it takes to evolve a project towards something that's less of a nightmare to work with.