HNHacker News
TopNewBestAskShowJobs

grun

770 karma · joined September 28, 2011

submissionscomments
grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Thank you for the great feedback. Ship ship ship.

Lighthouse score is now 91%.

* https://www.webpagetest.org/result/200227_RM_75b0bc807f4fc90...

grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
> Are you coding on PowerPoint?

One worse: Emacs. =]

grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Great feedback. Thank you.
grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Thank you for the great criticism. Iterating in real time while answering questions here.

Lighthouse score is now 91%.

* https://www.webpagetest.org/result/200227_RM_75b0bc807f4fc90...

grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Thank you for the Lighthouse test and great criticism. Iterating and fixing those in real time now.

* https://www.webpagetest.org/result/200227_RM_75b0bc807f4fc90...

Great questions.

> Ex how do you define the installable icon for the Add to home screen > icon ?

Pep tries to source the default icon from the site itself, eg a high resolution favicon, if possible.

If unavailable, or a different icon is preferred, the user is prompted for one. But by default, Pep tries to source such data and information the best it can.

> Or how do you choose what gets in the cache for offline access ?

Requests are observed, in the ServiceWorker, to determine which assets are requested on different pages and across the whole site. Those observations are turned into confidence scores, per asset, to determine which assets should be cached (and pre-fetched if not already cached).

You can, of course, pin certain assets for offline caching 100% of the time. But, by default, Pep does its best to cache requisite resources as determined by observed site activity.

grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
> Kudos for making it so easy. If PWA is the way forward, then services > like this will help accelerate adoption.

Thank you!

> On a separate note, how many users know about or bother to “Add to > screen”?

PWAs are relatively new. Not many users know about installing them yet. But that's changing. See the install flow videos here

  http://i.imgur.com/vVoDtbW.png
to see what installing a PWA looks like from the users perspective.

> Can the number of users launching from the home screen be tracked?

Definitely.

In the PWA's manifest, you can specify the `start_url`. This can include a sentinel to differentiate a PWA launch vs a browser session, eg

  "start_url": "/?launch=pwa"
That's actually a great idea to add to Pep. Kudos.
grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Just to make sure I understand you (explicit always better than implicit =]), an example of what? An example PWA?
grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Yep. Pep's definitely not married to Google nor its CDN.

If Google precludes certain users, we'll switch to something that doesn't.

grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Huh. How did Google screw you?

Pep's not married to Google's CDN. Which other CDN(s) do you, or would you prefer to, use over Google's?

Thank you for weighing in.

grun··on Show HN: Pep – Turn Your Website into a Progressive Web App
Hi guys!

I don't want to build native apps. So I built Pep. It turns your website into a Progressive Web App (PWA) with one line of code. It's kind of like Workbox (https://developers.google.com/web/tools/workbox), but with adaptive pre-fetching, CDN, and responsive asset batteries included.

I'd love your input; feedback is how good products become great.

grun··on Arc.io – A Crowdfunded Distributed CDN
Ansgar from Arc.

> It's asking website owners to install JavaScript that uses the website owner's visitors' bandwidth for purposes other than visiting the website.

We endeavor to create a communal web where everyone cooperates and benefits, and we want to make that as easy as just visiting your favorite website. Everyone shares a little surplus bandwidth to help each other load the web faster, sustain their favorite sites, and earn rewards. Everyone wins.

That's a different web than the current web. Right now, with the current web, no one shares and nothing is shared with you. The web isn't communal; it's adversarial. Ads interrupt you and trackers stalk you. We want to change that.

It will take time. Just like how the once frightful notions of getting into a stranger's car (Uber) or sleeping in a stranger's house (Airbnb) are now banal. These things take time.

But, of course, if preferred, an opt out is two clicks away. Sites with Arc must display Arc's widget in the lower left so visitors can learn about Arc and easily opt out (or back in).

> I think that puts me in a dangerous position just for surfing example.com.

When one visits nytimes.com, they don't know what files will be downloaded and cached on their computer before they hit [enter]. They trust nytimes.com not to hand them inappropriate content (porn, violence, etc).

Arc has that same responsibility -- to only cache appropriate, legal content. It's our responsibility to get that right. And we will.

  - Sites, and their content, are reviewed and vetted before they get access to Arc's CDN.

  - Automated checks are run on assets for appropriateness, a la Google's SafeSearch Cloud Vision API. Inappropriate content never enters the network.
On top of that, only fragmented, encrypted data is cached on devices. Devices never receive the full puzzle -- only a single, fragmented puzzle piece, scrambled beyond recognition.

Hope that helps.

Also, and wholly unrelated: big fan of Movie Code. =]

grun··on ImmortalDB – A resilient key-value store for the browser
> what caused you to write this library?

On smaller devices, a few kb of important data in LocalStorage was periodically deleted without user intervention.

> do you believe it will be used for nefarious purposes?

If one is nefarious of heart, https://github.com/samyk/evercookie supersedes ImmortalDB.

grun··on ImmortalDB – A resilient key-value store for the browser
Yep. WebSQL is unmaintained. https://www.w3.org/TR/webdatabase/

Though many browsers still support it. https://caniuse.com/#feat=sql-storage

grun··on ImmortalDB – A resilient key-value store for the browser
Hey guys. I'm Ansgar. I built ImmortalDB.

Don't hesitate to let me know if you have any questions or comments about ImmortalDB. Feedback is how good products become great.

grun··on Show HN: IronDB – a resilient key-value store for the browser
> save all values everywhere: why not select the one that would last the longest (that people delete least often)?

For improved resiliency.

You can also configure IronDB to only use any two datastores of your choice, if you so desire: IronStorage's constructor takes an Array of storage implementations of your choice. See https://github.com/gruns/irondb#api.

> So you delete data when the user wants to delete data. Which database doesn't have this feature?

A database where the data therein can be deleted without warning. Browsers unceremoniously delete IndexedDB, LocalStorage, and SessionStorage under storage pressure. See https://developers.google.com/web/fundamentals/instant-and-o...

> doesn't use Flash, Silverlight, or Java -- which do?

Evercookie, a similar library, uses Flash, Silverlight, and/or Java.

See https://github.com/samyk/evercookie.

> No offence to the author but all this sound malicious. Perhaps this is why evercookie isn't maintained?

No offense taken.

Thank you for your feedback, kreetx. Don't hesitate to let me know if I can answer any other questions, or if there's anything else I can do for you.

grun··on Show HN: IronDB – a resilient key-value store for the browser
Awesome.

If you find any bugs, or have any ideas to improve IronDB, don't hesitate to let me know.

grun··on Show HN: IronDB – a resilient key-value store for the browser
localForage only uses a single datastore. E.g. LocalStorage or SessionStorage or IndexedDB. Thus, stored data is lost forever if the browser unceremoniously purges that datastore due to storage pressure.

https://developers.google.com/web/fundamentals/instant-and-o...

IronDB redundantly stores data in multiple datastores -- cookies, IndexedDB, LocalStorage, and SessionStorage -- and self-heals if the data in any thereof is deleted or corrupted. For example, stored data is safeguarded in the event the user clears their cookies or IndexedDB is purged due to storage pressure.

tl;dr: IronDB is resilient in the face of data deletion. localForage isn't.

grun··on Show HN: IronDB – a resilient key-value store for the browser
Wonderful.

Don't hesitate to let me know if there's anything else I can help with, bazizbaziz.

grun··on Show HN: IronDB – a resilient key-value store for the browser
Cookies are frequently cleared by users, and the other datastores -- IndexedDB, LocalStorage, and SessionStorage -- can be unceremoniously purged by the browser under storage pressure.

See my other comment, here: https://news.ycombinator.com/item?id=18297177

I'll explicate this in the documentation. Thank you for your feedback, bazizbaziz.

grun··on Show HN: IronDB – a resilient key-value store for the browser
Persistent storage requires explicit user permission.

IronDB doesn't.

See https://developers.google.com/web/updates/2016/06/persistent....

Great point, though. I'll highlight this in the documentation. Thank you.

grun··on Show HN: IronDB – a resilient key-value store for the browser
Clearing cookies is a common user action. Even for relatively non-technical users.

And under storage pressure, browsers evict data stored in IndexedDB, LocalStorage, and/or SessionStorage. See

https://developers.google.com/web/fundamentals/instant-and-o...

IronDB is resilient in the face of such events.

Thank you for your feedback. I'll add an explanation about such in the documentation.

grun··on Show HN: IronDB – a resilient key-value store for the browser
Evercookie's goal is to store data indelibly, regardless of user intention.

IronDB's goal is to store data reliably, e.g. in the face of storage eviction, but not against user intention. If the user clears all browsing data, that willful action is respected.

Thank you for your feedback. I'll clarify this in the docs.

grun··on Show HN: IceCream – A little library to sweeten debugging in Python
> I'd like to be able to easily remove all calls to ic from my code though, since I share my scripts with my team and try not to use non-standard packages so it works on a default python install.

That's a wonderful idea. I'll investigate the best way to accomplish this. Thank you.

Don't hesitate to let me know if you have any other ideas; feedback is how good products become great.

grun··on Show HN: Native apps for the browser

  - arc.io with documentation, demos, and examples in Python, C, Ruby, and Node.js.
  - Support for other developers to build and ship Arc apps.
  - Installer is 60MB, down from 140MB.
  - Updated to the latest VirtualBox v4.2.18.
  - Bug fixes, security fixes, and performance improvements.
49 days ago Arc was ready for a blog post. Now it's ready for laps around the track.
grun··on Show HN: Native apps for the browser
Gotcha!

Kidding. Arc is registered with launchd, Apple's daemon manager.

To halt Arc, unload it from launchd with

  launchctl unload ~/Library/LaunchAgents/com.arc.arcd.plist
grun··on Show HN: Native apps for the browser
arc.js uses WebSockets to converse with the Arc daemon.

And great suggestion; it could certainly be made clearer. Thank you.

grun··on Show HN: Native apps for the browser
Perhaps. Arc could also use Linux Containers (LXC) directly for the aforementioned benefits.

In the future, Arc will be agnostic and support multiple hypervisors. One could use LXC on Linux, HyperV on Windows, VirtualBox, etc.

grun··on Show HN: Native apps for the browser
The blog post is a little over a month old. The installer is 60MB now.

Arc is a daemon that runs on your system, like DropBox. Browsers can use arc.js and instruct Arc to run native code in lightweight Linux virtual machines.

Arc is a stronger approach than maintaining browser plugins. Arc apps, like web apps, are up-to-date every time they're opened. They also have full access to their Linux virtual machine and can use Linux programs as-is. Browser plugins can't provide that.

grun··on Show HN: Native apps for the browser
I chose VirtualBox over qemu for performance.

For size, Arc's installer will continue to shrink (it's down to 60MB from 140MB). A custom built VirtualBox should be quite small. However, VirtualBox does require admin to install while qemu does not.

In the future, Arc will be agnostic and support multiple hypervisors. One could use qemu, VirtualBox, HyperV on Windows, kvm on Linux, etc.

grun··on Show HN: Native apps for the browser
Absolutely -- Arc is coming to Linux and Windows soon.
← PreviousPage 2 of 3Next →