3,162 karma · joined September 28, 2012
A more practical approach is to work along the grain of JS while getting inspiration from fp. A common snippet would be:
function maybeUrl(str) {
try {
return new URL(str);
} catch (err) {
return null;
}
}
This is much more straight-forward and interoperable. Dealing with something like Left<InvalidUrlError> where you've created an entire error subclass and wrapping function for an unrecoverable failure that will be discarded is way overkill.The unreliablility of thrown values in JS is a valid concern, but instead of trying to wrap all my code in a container construct, I simply wrap/convert the untrusted errors themselves if I need to use properties on an error reliably.
If third party App Stores are ever forced onto iOS devices, that market vanishes completely. Crashes, slowdowns, battery drain, malware, and information theft will become the norm. Go no further than your gaming PC to witness the nightmare that is multiple app stores all competing for CPU and control/surveillance of your system, all needing to bring their own flavors of information-harvesting/exposing DRM.
This new round of digital YIMBYism is profoundly anti-consumer and stands to destroy the trust that Apple has built with its customers. I sincerely hope that those of us who have trusted Apple with our data will start to speak out before Google-backed lobbyists tranform iOS into a malware-ridden hellscape.
It's true that the highest levels of play include teams of researchers and computers that develop 30+ move preparation, but what we're also seeing as a result of that are games that are more precise, which IMO is a fundamental component of chess "beauty". Some notable games that were deemed "beautiful" in the past are now seen as less-beautiful as it became apparent that play was suboptimal. Chess beauty now is less about flashy combinations and more about qualities of a position and reverse engineering the "logic" behind certain AI moves, which is still great but admittedly requires more of an investment on learning the game than a spectator might care about.
That framing, though, leaves out the massive benefit that AI has had in training and improving new players. It used to be that you needed to hire a chess master to play against and learn from in order to improve. Now your phone can easily give you a challenge of master-level strength, as well as analyze your games over the board to look for improvements.
[1] Fields, Karen E, and Barbara J. Fields. Racecraft: The Soul of Inequality in American Life. 2012.
Because when requirements change and your hover animation needs some additional flare to it in certain cases, you'll be glad that you had automated unit tests to verify original behavior still works along with your customizations.
1. You submit your app bundle and your credentials to Apple for notarization.
2. Apple records your information and goes through each library, framework, and your code, checking the code signing info and "fingerprint" of each for known malware.
3. Apple issues the ticket for stapling to the app bundle.
Now say, for example, that libffmpeg-0.1.2-beta2.dylib is found to mine cryptocurrency:
1. Apple goes through their database and finds the app where the malware was reported.
2. Apple marks that fingerprint as malicious.
3. Apple now flags any other apps that use libffmpeg-0.1.2-beta2.dylib (by checking the fingerprint) and disables any versions of any app running that version. Additionally, any other attempts to notarize apps with the malicious dylib are rejected.
Notarization provides 2 major benefits for devs that I can see:
1. Apple doesn't need to revoke your entire certificate just to block one version of an app.
2. Apple's audit trail of who notarized the app (and from where) prevents cases where stolen credentials result in a DoS of the victim (e.g. your account being locked, your name and address permabanned, and funds frozen).