If you're a professional using them in your work, that's an entirely different story, and you are significantly more likely to appreciate the craftsmanship that goes into making them.
4,193 karma · joined May 26, 2013
My current venture is Semi-Decent, a software consultancy that helps businesses grow through intensely pragmatic software. https://www.semi-decent.com/
I also run a side business making bespoke, sustainable craft cocktails for events: https://www.theminimalmixologist.com/
Please get in touch! I'd love to chat.
sasha+hn@chedygov.com
If you're a professional using them in your work, that's an entirely different story, and you are significantly more likely to appreciate the craftsmanship that goes into making them.
In my experience, even simple CRUD apps generally have some domain-specific intricacies or edge cases that take some amount of experimentation to get right.
IME, it's also about being able to ensure that everyone has access to the same software. I worked at a company that used macOS-specific software for development (I think it was Sketch?) so I had to have a MacBook around, even though I primarily used a Linux desktop for work. Anecdotally, I don't think this is uncommon.
I doubt those impose very much (if any) overhead for just being present but unused. In any case, those aren't the things that the OP was talking about; there are plenty of layout-related standards like floats that are almost never used in modern web apps yet inhibit or prevent many optimizations that could potentially significantly increase rendering performance. For a more extreme example, imagine how much faster layout rendering could be if you removed all types of layout other than grid—you'd be able to remove a bunch of checks and all the code that handles edge cases, significantly simplifying the happy path.
Nobody (to my knowledge) has done this because it's not as simple as forking Chromium and removing code. Without the mentioned optimizations, I don't think you'd see much benefit.
You have to remember that, besides the extra engineering effort, having a separate, native UI for each platform also increases the support burden for dealing with people having issues with the program. Companies the size of Logitech bend over backwards to reduce their support costs, so it shouldn't be surprising that they opted for the path of least resistance here.
As someone who has used The Internet™ as a reference for more projects than I can count, I strongly disagree with this. There is definitely a middle ground where you know just enough to do some basic things on your own and feel comfortable venturing a bit deeper, but not without some help.
> It will not help you because bathroom fans may have different ways to disassemble them, car belts may have different bolts position etc.
I dunno, I can usually find at least one guide online for how to do a specific thing with a specific model of something. Search "change timing belt $year $make $model" and you'll get at least a handful of videos walking you through the whole process.
Having said all of that, this entire discussion is a bit moot because it's easy enough to download YouTube videos or tutorials locally ahead of time and pull them up on a tablet without internet access.
To be fair, you received a service for free that you may have otherwise had to pay for. I'm not saying it's just, but to say you didn't get anything in return is disingenuous.
The thing is, those things are easily fixable after the fact. A bad architecture is not, and without practical experience designing systems in the real world, you don't have those instincts to guide you towards the correct choices because you haven't made any mistakes to learn from.
This was the main thing, as by that point, all native code was being compiled to Arm and not x86. Using x86 meant that some apps, libraries, etc just didn't work.
But even if they didn't, it's a cheap way to get people to show up and potentially order other, higher margin items. If your machine is broken, you lose that funnel and your customers go elsewhere.
Unless I'm misunderstanding what you're saying, this isn't true at all. At $day_job we have an Expo app with a custom native library and it works just fine; you just have to write an Expo-specific adapter for it and can't use Expo Go in that case.
Can you expand on this? How does Expo prevent or make it harder for you to ship media- and VOIP-related features?
This level of granularity probably isn't worth it to most people, but I found it useful as an exercise to do once because it opened my eyes to insights about my expenses I never would have thought about otherwise. And if there were software that made this super easy to do (<1 minute per entry), I might still be doing it.
With that said, I learned quite a bit as a result of that level of granularity. When all expenses at Amazon, Walmart, etc go into the same bucket, it's really difficult to truly understand what you're spending your money on and if you have a problem you need to curb. Seeing "$X in spending at Amazon" isn't really that useful without knowing how important or frivolous any of those expenses were.
[0]: I'm sure exceptions exist. I've never met one.
This is, by far, the most important reason to practice continuous deployment. I've been part of enough of these fire fighting sessions following big releases to see that it's not a sustainable way to deploy software. And yet, I've never been able to convince any boss I've ever had to adopt CD because they're worried it'll introduce more regressions into production.
Isn't that the point of this exercise?