Regarding state management, have you tried MobX? It makes state management almost ridiculously simple. I've noticed a slight performance hit using it for deriving values for 60fps animations on React Natuve but in normal usage you'd never notice.
Absolutely agree, this is one of the biggest benefits I have found since I started working with Typescript (that, and the ease of refactoring).
Of course Flow/Typescript's approach to typing isn't as complete as Elm's, but you can still gain some of the benefits by using one of them; and for many of us, introducing Flow/TS at work is a lot more likely to happen than introducing Elm.
Ironically, Elm's type system is actually one of the simplest out there. No subtyping (unions or intersections), no flow-sensitive typing, just plain first-order type constructors, Hindley-Milner type inference and nice records. Much of the complication in Flow and TypeScript's type systems comes from the need to accommodate existing JavaScript idioms.
Good point. I suppose what I meant was more that types are at the core of Elm and pervade every part of the language, whereas TS/Flow are adding types on top of a dynamic language and there are parts where it may be difficult or impossible to maintain type safety to the same degree (especially when interacting with non-TS/Flow code)
No one has really figured out nominal subtyping + type parameters with good type inference support. The best we can achieve seems to be scala, which still requires more type annotations than many are comfortable with.
The real issue is not nominal vs structural typing. Its the subsumption rule (which says that you can freely use a subtype anywhere a supertype would be expected).
Mixing subtyping with subsumption and parametric polymorphism (type parameters) is really very difficult though. From a theoretic point of view, type inference and type checking are harder. From an usability perspective, the programmer now has to deal with variance annotations (for example, in Java `class List[+T]` means the T parameter is covariant) and bounded polymorphism (for example, things like <? extends T> in Java).
Sure. As a member of the extended ML/Haskell family, Elm is inherently typeful, whereas in TS/Flow types are opt-in. But, as it turns out, pragmatically, typefulness actually limits the extent to which a language can become complicated, because the complexity ends up showing in the type system, and that's useful feedback for the language designer that he or she is going in the wrong direction. OTOH, the designer of a non-typeful language can “hide the ball” by not reflecting complexity in types.
I thought the very same thing, as I can see the benefits to both having a single atomic commit for ease of reading history, and to being able to see the individual commits that made it up to avoid losing valuable information about changes.
It turns out that the Github "Squash and Merge" option for Pull Requests does basically this – you review the PR as a bunch separate commits, when you click "Squash and Merge" a single commit is created in the target branch with all the commits squashed, but you can still go back to the original closed and merged PR (e.g. by following a link in the commit message) to view the individual commits.
Obviously this doesn't help if you want to bisect among more granular commits, but (without having actually used it), it sounds like a good middle ground to me. The previous workflow I was used to involved squashing and force pushing to your branch, therefore overwriting the individual commits in the PR for ever.
Now your history is in two places and can't be inspected from a cli. If you ever stop paying github (for a private repo) or github goes out of business your data is lost.
Or you can use git to track this with merge commits and it comes along wherever you go.
I was going to say the same, Discover Weekly frequently really impresses me with some of its selections and I have discovered some excellent artists through it. I'm into electronic music - not what I would consider really obscure stuff, but certainly not mainstream - and many other recommendation systems seem top lump anything electronic together with mainstream "EDM" etc. (which is nothing like what I enjoy) whereas Discover Weekly makes intelligent recommendations of quite obscure stuff.
I downloaded and tried Spacemacs out of curiosity, after seeing your comment.
While I'm sure it adds a lot of usability features compared to the default Emacs config and it looks pretty cool, it's nowhere near as immediately accessible as Atom or Sublime - for example, I have no idea how to close an open file without Googling whereas in Sublime or Atom it's either click the "X" or use the standard Cmd-W shortcut. I also have no idea how to open a project or search for a file, and don't really know where to start discovering those things, whereas in both Sublime and Atom you can browse through the menus, or hopefully quickly discover the Cmd-P command launcher which lets you type a command.
If I wasn't somewhat familiar with Vim, I would have absolutely no idea what was going on as by default it uses Vim's modal keybindings. I also noticed an annoying lag when pressing spacebar to bring up the command list thing - slower than any lag in Atom!
It does look intriguing and I'd love to learn to use it more, but I don't think you can really say the usability of Atom/Sublime and of Spacemacs to a new user are anywhere near equal, never mind "how would they justify their choice?"!
- the binding menu idle time is configurable with the variable `dotspacemacs-which-key-delay`, check the docstring.
- The key binding you missed (should be listed in the quick start guide) is `SPC h SPC` which is used to find various info like FAQ, layers, packages config, dotfile variables etc... try it for yourself: `SPC h SPC which-key` and choose `dotspacemacs-which-key-delay` then RET, you can now modify its default value of 0.4sec to 0.
- `SPC :` to access _all_ interactive commands of Emacs (`SPC SPC` in develop, shortcut configurable of course).
- to discover how to close a window just press `SPC` then look for `window` and so on, it takes 10 seconds to discover it ;-)
- If you were not familiar with Vim you can choose to opt for Emacs key bindings and `SPC` becomes `ALT-m`, everything else is the same. But you are familiar with Vim so I don't see what issue you want to raise.
I wasn't trying to raise an issue at all, merely state that Spacemacs isn't as obvious to a new user as Atom - but I'm not saying that that's a bad thing, obviously (Spac)emacs has a lot more power under the hood potentially and I am sure is worth the additional effort to learn.
I have to say I'm impressed with what a good job you have done of making it user friendly :)
>I have no idea how to close an open file without Googling whereas in Sublime or Atom it's either click the "X" or use the standard Cmd-W shortcut.
You can just use the menu bar for that.
>I also have no idea how to open a project or search for a file, and don't really know where to start discovering those things, whereas in both Sublime and Atom you can browse through the menus, or hopefully quickly discover the Cmd-P command launcher which lets you type a command.
You can, as it tells you, use the fuzzy command search by typing M-x. Same as Atom, just a different command.
Honestly, and sorry for sounding rude, to me it just seems like you intentionally tried to not understand in order to prove a point; Just because in your mind you have this idea of emacs just having to be inferior in some way.
> Honestly, and sorry for sounding rude, to me it just seems like you intentionally tried to not understand in order to prove a point; Just because in your mind you have this idea of emacs just having to be inferior in some way.
Not at all and I didn't mean it to come across in that way, apologies if it did. Thanks for pointing out those things - I actually for some reason didn't think of using the menu bar at all, I guess because it looks like a non-GUI app. That's my fault anyway!
I was just interested in the "absolute newcomer" user experience, as that is how a lot of people will judge things, which for me after a few minutes was "I can't work out how to do what I need to do" and so I stopped. I'm sure that with an hour or so playing around, I would get used to it, and I intend to!
A text editor is a tool. I don't think accessibility matters that much - it's something that can and should be sacrificed for improved efficiency of working with said tool. You spend 5 minutes Googling up (oh, omg, reading the built-in manual or running the tutorial that happens to be shown pretty much on startup) how to do some things and now you can do those things much more efficiently than by clicking around "discoverable" menus and toolbars.
I understand the point here and agree to some extent, but on the other hand I think using a standardised set of emojis makes sense for cross-platform communication apps such as Whatsapp, as I think the meaning of some of them is reasonably subtle and those subtleties are very much influenced by the specific design - for example, the Apple "person with folded hands" shown in the article clearly represents prayer to me, whereas the original Google one looks kind of creepy with its screwed up face. I found this to be an issue when I had a windows phone - for better or for worse, emoji are used quite a lot, and I sometimes had to think back to the iOS equivalent to make sense of them, as they looked so different.
In my opinion Apple's take on emoji is both the most visually attractive (the proportions of the old Google ones are way off and the "slug" creatures quite visually unappealing) and the richest, so it's no wonder they have become the de facto standard. In fact, I'd wager emoji wouldn't have taken off anything like as well as they have if everyone saw the original Google versions, for example, as they lack the "cuteness" and charm of Apple's versions.
What might be nice is if Apple were to make them fully open source - I've wondered before what the legal status of apps like Whatsapp embedding them in their app is.
> the Apple "person with folded hands" shown in the article clearly represents prayer to me, whereas the original Google one looks kind of creepy with its screwed up face
I don't think Google's version of the character is supposed to represent prayer, but rather asking for a favor (which seems much more useful):
yeah it's supposed to be the typical Japanese "pretty please?" pose. Extra reason why I really don't get what apple was trying to accomplish with the prayer hands.
Your thoughts echo mine exactly (right down to submitting a story that got no votes!).
The fact that this kind of bug would have a lower impact on Android (i.e. wouldn't disable major functionality due to the ability to switch out default apps), along with a general sense that Apple's software quality and support is becoming less reliably good (I would certainly have expected a quicker official response to this issue) and a slight feeing that Android is creeping ahead of iOS in terms of interesting new functionality is making me seriously consider the switch (partially as a kind of "protest" move, partially because I'm really annoyed about a major part of my phone breaking randomly, and partially because I'm curious to try it out), which I definitely wasn't seriously giving any thought to before this. Could work out to be a good thing in the end ;)
Good to hear someone has got to the bottom of this. Been unable to use Safari for a few days due to it. I haven't updated any apps for months (I don't trust auto update to not leave my apps in a half downloaded state so I just let them mount up until I eventually download hundreds of updates!) so iOS must periodically check this list automatically rather then just when an app is updated/installed.
The combination of a lack of an official response from Apple yet, the fact that this was apparently found by beta users (not that the issue is related to 9.3 directly, but it was reported as a beta issue by some), and the inability to change default browser leaving my phone in a pretty broken state has got me seriously considering a switch to Android though, where at least such a bug could probably be worked around through changing defaults or worst case flashing a new ROM.
The iOS 9.3 release suggests Apple's QA process is rather lacking and incidents like this won't help confidence in their devices - it's okay for users who know how to work around it and understand what is going on, but my parents would probably think the whole internet was broken!
Rant over, glad to see this on HN as it has been p*ing me off for a few days :)
>> The iOS 9.3 release suggests Apple's QA process is rather lacking
You can say that again. My battery runs down far more every day than it did before, my email doesn't fetch on schedule or push anymore, and things crash that never crashed before. 9.3 has been a mess so far.
Here is my weird 9.3 behavior: go to a mail inbox and do the pull-to-refresh and nothing happens. If I go to the page with all the inboxes displayed and do pull-to-refresh, it actually refreshes. Battery is a huge issue for me too.
Same here. I hesitated to upgrade to 9.3 when prompted but went ahead anyway, guess what I'm going to do next time...
It baffles me that Apple let this bug go live when it was reported multiple times during betas. And the impossibility of avoiding the issue by using a different browser only adds to injury.
Then get ready to have to daily respond to an unwanted popup dialog trying to force you to update. It's infuriating that Apple thinks it's ok to repeatedly harass you to update with NO option to turn off the prompts.
This issue alone has made me want to switch to Android and I'd never thought I would say that.
I'm not sure if Android is any better. My Samsung phone would have an update popup several times a day it seemed like. One day I was in Chrome, about to click on a link and the update poppped up right under my finger causing the phone to update.
I don't understand why everyone loves Samsung... I always go for a Nexus... Which at least has fast updates and is the best type of Android Phone in my view.
Updating is vital for the security of your device, and Apple has been repeatedly praised for getting literally hundred of millions of people to timely update their devices.
Sometimes, an update can be broken, and Apple better be fast at fixing it. It doesn't change a thing on the fact that Apple must continue forcing users to update as soon as possible their devices.
Most people don't connect unpatched devices as easy pickings for fraud and abuse.
I was at the mechanic the other day, and this loud-mouthed boor bragged about never doing updates. The kind of guy whom would surf for porn on iOS 6 Mobile Safari and wonder why his contacts complain about X-rated spam.
For users like that, Apple has to just force people to update without their permission some number of years out because they won't do so willingly. Maybe enterprise-provisioned should have a greater exclusion, but not much more.
The annoying login and update prompts are going to push me to Android faster than anything.
I get prompted to log in to iTunes or iCloud literally 5 or 6 times just opening the Music app, navigating to a playlist, and clicking on a song. It's infuriating.
I actually rolled back to 9.2.1 manually but this didn't fix it anyway, which was even more disappointing! Also the restore from backup was sooooo slow over the weekend, presumably because of all the 9.3 downloads, that after 24 hours my 2 gb backup was still stuck on estimating, so in the end I rebuilt from scratch. I'm glad that I have everything backed up elsewhere and not just in iCloud, which is of course the real moral of this story....always have multiple restore options!
Apple leaves the signing window for older versions for usually a week after the newest version drops.
Go to a site like https://ipsw.me/ and find your device. If the iOS version in the drop down menu has a green background, you can still restore to that version. You download the ipsw file and hold shift + click restore/upgrade on iTunes to manually target the ipsw you want to downgrade to.
Thing to note is that I didn't have the bug in 9.2.1 so I assume that something else changes within the upgrade process (i'm no iOS expert plainly) whether it be firmware of whatever, which doesn't get downgraded.
I find it somewhat questionable that I can revert to a previous version and still have that the problem the upgrade caused. I'm guessing this is my lack of understanding about mobile devices though. The whole process made me feel rather impotent compared to troubleshooting a PC or similar.
edit: (I should point out that I had to go to a laptop to post this comment, since the reply link still won't work on the iphone!)
The current theory according to the article is that booking.com's app downloads a 2.4mb file of links for its "universal links" data (that annoying thing where you get taken to an app rather than a website and you can't disable it without removing the app...) which causes the database to slow down/become corrupt.
Therefore if you've not got booking.com's app installed, you should be okay (for now). Needless to say the fact that a third party app can break such a core OS feature rather shatters iOS's reputation for security above all else...
Technically it's not insecure (the app doesn't get to set data it shouldn't), it's just a DOS.
Seems odd that they wouldn't test this particular case (or put a predefined limit on it). This seems like exactly the kind of thing someone would do without thinking about it too hard (I'll just write a script and....) and cause an issue.
I'd really like to have more control over the feature anyway. I want to redirect Twitter links to a 3rd party app and turn off these links for Amazon and a few other apps.
You're right, I guess "stability" is probably more accurate.
At the end of the day, it represents app(s) breaking the phone in very fundamental ways, in spite of the sandboxing iOS enforces (obviously this is a different vector in reality, but from a layman's point of view the end result is the same), in a way more severe than any Android app (which arguably have a reputation of being "less secure") has broken that OS as far as I am aware.
This stability/security was one of the reasons I've stuck with iOS for so long, but this particular issue has forced me to reevaluate my thinking somewhat, as I'm sure it will for many others.
To me it's just a bug, they'll get it patched. None of my data was at risk. For security I won't worry about it.
Now the inability to click links on my phone would drive me NUTS. Seems to me like a case of 'someone did something crazy, Apple wasn't ready, these things happen'. But I may have had a different tune if it hit me.
There are some annoying bugs I hit from time to time (especially involving CarPlay), but they haven't driven me off yet.
Yeah, you are right. It's just a particularly annoying bug because: 1. It broke my phone pretty fundamentally, 2. It was a third party app that broke core functionality (in a roundabout way), which shouldn't be possible on iOS, 3. Lack of response from Apple, 4. Such a bug would be much lower impact on Android due to (IMO) silly restrictions on iOS. These factors combined with a lingering slight dissatisfaction with iOS has left me a bit annoyed (but I'll probably forget all about it soon!)
I'm not a fan of the app launches from Safari. If I wanted to use their app, I would have opened their app. App launches (especially those opening up the App Store) seem eerily similar to pop up ads of the late 90s.
I believe iOS updates the app associations when either the app is updated, or the OS is updated. If you don't update the OS and don't update the app, it doesn't fetch a new site association, which is why the problem didn't surface until the release of iOS 9.3.
It's happened to both me and my girlfriend. It's not very common but seems to happen sometimes when software is updating when it has a good signal/wifi and you move into an area of no signal. Having been caught out a couple of times being unable to access important apps because of it (one time being in an unfamiliar area with a half downloaded Google Maps and insufficient signal to download the app again), I just don't risk it any more... Which is a shame as otherwise it makes sense to stay up to date obviously.
I did report this as a bug to Apple, who requested a device log of some kind when it next happens, but it's hard to reproduce manually.
Probably a practice best to run iOS updates fully charged, plugged into power and over stable Wi-Fi. Also an iCloud backup beforehand and an iTunes full-backup where possible seem like good ideas.
Hmm, while I do update outside the house/office, e.g. when I'm bored at some place, I never update apps on the move (e.g. in a car, walking etc), so that could be a factor...
I had the same problem today - what a mess! Likely good business if you're a browser app vendor. I tried several browsers I'd never heard of - Puffin worked.