Hacker Newsnew | past | comments | ask | show | jobs | submit | methodsignature's commentslogin

"Rules" often contradict each other. For example, in software development, "keep it simple" often directly conflicts with "dont repeat yourself" as it takes increased complexity to achieve reuse of code. I often see keeping it simple take a back seat in newer developers as they slavishly follow the don't repeat yourself trail. The end result is routinely a brittle, rigid, and overly complex solution.


DRY and KISS talks about different things.

DRY is about knowledge management. The intention is to not avoid duplication of code which is a knowledge representation of the same thing. It does not mean every coincidentally similar looking code must be made into a function, as it would result in a premature abstraction, etcetera etcetera. It's why "minimum three duplication" principle is effective, because it filters which duplication represents the same knowledge and which does not.

KISS is (ironically) a more complex topic. C2 wiki talks about this in an interesting way. https://wiki.c2.com/?KeepItSimple


DRY I would argue doesn't conflict nearly as much with a nuanced approach. "Apply Aggressive Compression to Your Code" certainly flies in the face of many other nice features of code as a working body, though

My more nuanced take I guess is "don't duplicate logic, except if it may in fact be mutable data". It does take some forward thinking to think that this e.g. list of 10 rules should be unrolled and not compressed by meaningless helpers, etc


> For example, in software development, "keep it simple" often directly conflicts with "dont repeat yourself" as it takes increased complexity to achieve reuse of code.

KISS and DRY are different paradigms, i.e. come from different schools of programming.


KISS -

Most people would not recognize simple code if it hit them I'm the mouth.

KIES (keep it easy, stupid) is what they mean, and that means following idioms, frameworks, that are familiar.



Don’t repeat yourself or making code “DRY” sounds/sells so much better than tightly coupled.


Probably high for them are usage issues, like broke buttons in their UI or chopped text.


They may have noble intent, but they also have conflict of interest given Google basically signs their paychecks. [I do use Firefox regardless]


Self plug / just wrote a thing.


> but a properly security-paranoid home automation aficionado wouldn't be caught dead giving some proprietary black box power and network inside their own home.

That sounds like the definition of a cell phone.


Don't even get me started. :( It gives me pangs of cognitive dissonance every time I use my Android phone to type up a rant about how creepy Google is. I'd love to walk the talk, but my impression is that FOSS Linux phones aren't really viable yet if you're interested in things like, you know, functional power management or a Bluetooth stack that actually works.


Google Chrome UI: "We aren't tracking you". Google Terms: "We are absolutely tracking you". Google: Fingers were crossed; doesn't count.


Sure, if data from US would be enough to understand and fight disease. Otherwise, you need to create some sort of world health organization to share meaningful data and investigate inside all country participant without the appearance of [or actual] invasion of sovereignty.

Thus, we have the WHO. You wanna replace it, it's gonna take a decade to get to another agreement if one even is made. Then it will have its own set of issues. During a pandemic, seems better to me to work with and hold accountable the one we have... kinda like the WH is doing today.


We don't need it for this. Intelligence organizations know that biological threats like this are intelligence problems. They just didn't think them likely or that the sick guy would be our enemy.

However, now we know the adversary is truly an adversary. China will suppress information on pandemics started within its borders.

The game has changed. You don't listen to China about whether China is sick. You listen to Keyhole and your guys on the ground.


I posit that it is capriciousness, not hypocrisy.


Also "Frictionless sharing and collaboration" seems not valid at all when it exists in the closed ecosystem that is Apple. Probably the decision is to follow with Android and web [windows+linux].


Software development technology is getting close. A couple few more years maybe and that problem will start to go away fairly rapidly [relatively speaking], like possible 30-40% cross platform by the end of maybe 5 years-ish. 12 year android dev here seeing the light at the end of the tunnel with some newer performant (dev wise and user wise) frameworks and architectural patterns. Of course this all depends on Apple not saying FU to the entire industry in a dramatic, squashing those frameworks with their iron fist sorta way.


> Software development technology is getting close.

That was the sentiment about wxWidgets and QT in 2006. Reality is, native platforms will always be a moving target.

QT in particular has come a long way and is used today for a lot of enterprise software, but it’s not the panacea that was once envisioned.


The conventional wisdom in those days was that users wanted native look & feel. The success of Electron has pretty much disproven that.


The conventional wisdom was that accessibility was something worth caring about.


It’s totally possible to build accessibility into web apps, including Electron apps.

Accessibility does matter. It’s a fundamental element of usability.


How could they? It's not like they tend to use undocumented APIs, do they?


Something along the lines barring the compilation of iOS apps with 3rd party tools or some such in TOS or blocking apps made with them from the App Store outright. Not saying the would, but if they had reason to fear they are losing control of something in their ecosystem, no telling what they would do. Just would not give a zero chance of something crazy as such happening.


They started off like that and got rid of that rule a few years in.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: