HN user

bem

80 karma
Posts3
Comments16
View on HN

This post from fly.io [1] has a pretty comprehensive survey of the tech available for running users' code safely. It's a good read.

I've been investigating something similar for a feature I want to launch. I'm currently leaning towards running users' code in Kubernetes using Firecracker or gVisor.

My main takeaway has been that while there are good solutions for isolating users' code, there's going to be a lot of worked involved in orchestrating it at scale. I.e. building and storing images, spinning up containers, managing storage, tracking/billing minutes and bandwidth, killing timed-out containers, etc. I have not found a good library for that. It seems like a good use-case for a Kubernetes operator, so I think that's what I'll wind up building.

[1] https://fly.io/blog/sandboxing-and-workload-isolation/

Looks like a useful product! I think it's neat how you built it directly on Google Sheets. I'd love to hear more about why you made that decision (versus building an independent tool).

Some feedback on the landing page:

- Would be nice with a 2-3 minute demo video

- Put the screenshots (or demo video) closer to the top, so they're visible without scrolling

- Some of the copywriting could be clearer. For example: "Pre-built financial models for SaaS companies, with plug-and-play software built directly in Google Sheets" could be just "Financial models for SaaS companies, directly in Google Sheets"

I think you could find some inspiration in cryptocurrency exchanges. Most of them expose public websockets for prices, order books, trades, etc. They're high volume with lots of subscribers.

For example, check out the docs for the Binance websockets (they use both snapshot and delta messages): https://github.com/binance/binance-spot-api-docs/blob/master...

If you could tell me a little more about the data format, data volumes, number of subscribers, and how you get the data on the backend, I can try to give you some more concrete advice.

Checking for null on every method call certainly sounds nuts to me. Furthermore I would argue that doing so decreases consistence in your program. For example, in Objective-C I can count on nil being returned every time I call a method on a nil object. The opposite is true for other languages. The point is, it renders me able to make certain assumptions about how my code will behave, and thereby reduces the amount of code and tests I have to write.

Now if the language you're using behaves opposite of your wish, you're either using the wrong language or doing things the wrong way.

I guess I should elaborate on my statement about Wordpress because it came out wrong. I realize Wordpress is powerful, extremely powerful. What I meant was that this comes at an expense. This power means one has to deal with a very extensive API. This is great for someone who needs it (or knows it), but when building a personal site, dealing with an API requiring more than a couple of pages of documentation seems wrong (to me). Something like having to keep af functions.php with a 20+ sloc function to generate the current page title.

Obviously Wordpress does not suck, it is one of the most used blogging platforms. The feeling I got when tweaking it to do something different from the standard themes was that I was using a chainsaw to slice a loaf of bread. It was certainly powerful enough and it could certainly get the job done, but it wasn't easy and it wasn't elegant.

And here is an overview of the files in my custom wordpress theme: http://dl.dropbox.com/u/3240627/wordpress_folder_structure.p... :)