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

And so how do you sell iOS apps or in-app content then?


Release a free app that requires a user to log in. In order to access the content in the app, the user has to log into a web browser with that account and pay directly via the developer's website. Amazon Kindle and Netflix kind of do this. With Kindle, you have to buy the books with a separate app instead of a website, and Netflix has the option to buy inside the app as well as outside.


Apple has rules against circumventing their billing system. Netflix gets to do it because the service works if you don’t have any iOS devices.

I’m not sure someone like Fortnight could get away with bypassing it. If they did it would only be due to being a special case due to pull. No normal app could get away with it, you’d get pulled fast.


IIRC you're just not allowed to programmatically open a web browser; you have to tell the user to do it themselves.


Amazon does it all of the time. You pay for content by going on Amazon.com and you view the content via an app.


This may work for Amazon only because their own brand is also directly known to the user, and a lot of users would also be visitors of their website. But for a newcomer trying to sell digital goods via an app, good luck


They may have some sort of ‘free pass’ due to their size/influence. It’s eqsy to say that Amazon’s content is meant for Kindles too, and just happens to work for the iPhone.

But if you have an iOS only app? Good luck arguing your way out of the rule.


Udemy works the same way. You can buy content either in the app store or outside and it still works.


GSuite, Mailchimp, Sendgrid, Github, Sightengine, Travis, Twilio


Does anybody know what the existing open-source / free alternatives are? (that you could run on your own servers)?


The Kaldi toolkit is state of the art, but you have to know quite a bit about speech and natural language processing to create a comparable service that works well (or invest the time to learn it). Definitely not plug and play, though.

Then there are implementations of Baidu’s DeepSpeech (PaddlePaddle: https://github.com/PaddlePaddle/DeepSpeech, or Mozilla’s version).


Some of those optimizations become irrelevant (or downright bad) with http2. Inlining CSS ans JS is no longer best practice when you can do a server push of those and avoid sending the extra bytes once the files have been cached by the browser.

Some optimizations can backfire. Adding async to the external JS is a great tip.. unless you have dependencies between your different scripts (i.e. you need one to be loaded before the other one gets executed)


Relevant to http2 push but slightly off topic, I love how I can add a single line of code to my Django project (to include a middleware library I wrote) to have automatic http2 push. The middleware will parse the static media on the page and push them to the client, it's much faster with no effort.

The library is at https://github.com/skorokithakis/django-cloudflare-push if anyone wants to use it. It's slightly misnamed, as it supports any server that uses the Link header for push, not just CloudFlare.


Doesn‘t that mean I‘ll get all assets pushed to my client every time I visit any page of your site, regardless of the file‘s cache status?

That does not seem to be a good tradeoff, especially on mobile.


No, the browser cancels the download if it has the assets before they download.


That should take approximately as long as a client<->server ping, right? So shouldn't it be irrelevant for JS/CSS that loads within that time (say, 50Mbps & 15ms ping --> everything below 93KB gzipped?)


Yes, you'd download some things you don't need to. Last I heard, they're working on an extension so the browser can tell the server what media it has when it requests the initial page so they won't get sent at all.


You could use a cookie which contains the revision and then the server could selectively push things which have changed since then.


Didn't we all have this conversation years ago already with nocache query parameters etc.? Reminds me of number 6 in RFC 1925: "It's easier to move a problem around [to another protocol layer] than to solve it."

I still don't see how HTTP/2 Push is solving any real-world problems [1] besides Google being able to push ads so that it counts as an impression even if the client blocks ads.

[1] I don't count the slightly faster initial page load since I'm getting that junk on every page load via push even if I already have it, so I'm paying with my data allowance. If you want your site to load fast, just fix your goddamn bloat.


If you specifically discount the very problem it was meant to solve then yes, yes then there it is not solving "anything"


Unfortunately it doesn't. There is no mechanism right now for the browser to cancel the pushed resources. H2 Push's Cache Digest will introduce this ability, but it's still being designed.


Are you sure? SO seems to disagree:

https://stackoverflow.com/questions/29352282/does-the-browse...

And this feature shows as merged into ff56:

https://bugzilla.mozilla.org/show_bug.cgi?id=1367551

Cache digests are about the client telling the server what items it has cached so push doesn't even start, not about canceling pushes.


You might better be working on caching so that the resources are loaded only the first time. Otherwise you need some way to know whether the user has the resources cached or not (a cookie maybe?).


Definitely both true. I hadn't looked into enabling http2 on this site, I'll check it out.


Asynchronous JS scripts are a great choice. But you better makes this choice on early stage, because changing scripts from sync to async on a large legacy website can require a lot of time, there will be many bugs etc. You cannot just add "async" attribute.


That's something that really astounds me with this async thing.

Why on earth when they introduced it they didn't add a way to tell the browser the order of execution ? Or may be it exists and I haven't heard about it ?


There is a way: ES6 modules. If you can account for the order of execution (with modules or custom loaders) async is, in almost all cases, the best way to load your scripts. Defer (or body-end) scripts also specify the execution order, but only in a strictly linear fashion which usually has a performance hit.


But there is, it's called defer?!


You also need to hide JS controls before the scripts are loaded or you will get "dead" buttons that are visible but don't react to clicks.


I would also recommend a curated newsletter with AI / ML news and resources:

http://aiweekly.co


What would those article-writing robots use as their primary source of information?

If they write local news, will they use social media as their datasource? Other sources?


Important note: so-called "live" air quality measurements are in reality never "live" due to the nature of the measuring stations (taking measures takes time) and the way data is compiled and shared by the monitoring agencies. As a result typical delays range from 1 to 6 hours, which means you end up using "old" data or signaling a peak when in reality the pollution peak is already over.

This is solved by using models that predict air quality levels down to the hour. One option is to use https://plume.io


You are free to buy as much soda as you want.


And restaurants can offer as many free refills as they want, as long as the limit is less than infinity.

More of a violation against intelligence than against human rights.


iPhone 6 user here. Same issue for me, battery seems to drain much faster now and levels can suddenly drop from 10-20 to 0.

ÉDIT: as I was typing the comment, the level actually dropped from 22 to 1!! About to go dark :)


Any EBS storage price reductions? Those are pretty high at this stage.


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

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

Search: