HackerTrans
TopNewTrendsCommentsPastAskShowJobs

colinchartier

no profile record

Submissions

Show HN: GPT4 Powered Multiplayer Jeopardy

aijeopardy.org
1 points·by colinchartier·3 jaar geleden·0 comments

Show HN: Webapp.io - Free firecracker-based full-stack hosting

webapp.io
120 points·by colinchartier·3 jaar geleden·43 comments

A Million WebSockets with Go

medium.com
4 points·by colinchartier·4 jaar geleden·0 comments

comments

colinchartier
·3 jaar geleden·discuss
Postgres can be tuned to 10k inserts per second, Kafka is definitely overkill for 200/s
colinchartier
·3 jaar geleden·discuss
Reminds me of this video about the origin of the name Tiffany: https://m.youtube.com/watch?v=9LMr5XTgeyI

"I didn't fly across the Atlantic to... Of course I did"
colinchartier
·3 jaar geleden·discuss
Reminds me of the ghost Unicode character saga: https://www.dampfkraft.com/ghost-characters.html
colinchartier
·3 jaar geleden·discuss
Nested virt doesn't work with some things like OS snapshot/restore, so they might not support it to allow those features.
colinchartier
·3 jaar geleden·discuss
We got around this at my company by just pooling all of the LISTEN/NOTIFY streams into a single database connection in software, here's a sample implementation:

function software_listen(channel, callback):

  if not channel_listened(channel):

    sql("LISTEN " + channel)

  listeners[channel].append(callback)

function on_message(channel, data):

  for listener in listeners[channel]

    listener(channel, data)

function unlisten(channel, listener):

  listeners[channel].remove(listener)

  if len(listeners[channel]) == 0:

    sql("UNLISTEN " + channel)

Here's the actual go implementation we use:

https://gist.github.com/ColinChartier/59633c1006407478168b52...
colinchartier
·3 jaar geleden·discuss
As far as I understand, that's 100 shared queries across all users.
colinchartier
·3 jaar geleden·discuss
Paul Graham would say for exponential growth, 10x better is the bar
colinchartier
·3 jaar geleden·discuss
Sure, I meant "docker" here as a simplification for the OCI format.
colinchartier
·3 jaar geleden·discuss
Will add those to the landing page - they got lost in the Figma design
colinchartier
·3 jaar geleden·discuss
It looks like all of the auth data is empty - maybe you logged into an account which doesn't have permission to install on that repository?

If you email me at [email protected] with your GitHub account name, webapp.io account (if any), and the name of the repository, I can take a look for you.
colinchartier
·3 jaar geleden·discuss
Practically - We don't actually require you to use Docker, and we don't use it under the hood. The configuration (which looks like a Dockerfile) can run multiple containers in the same VM:

FROM vm/ubuntu:22.04

RUN (install docker)

RUN REPEATABLE docker-compose build

RUN BACKGROUND docker-compose up

EXPOSE WEBSITE localhost:8080

You can also just run entirely non-docker services:

RUN BACKGROUND redis-server

- The DSL will watch which files are used for each build step to skip everything you haven't changed, so builds are much faster - You can use us to clone VMs and run Cypress tests in parallel, then promote one of the clones to a preview environment, and another to a production environment - We're more declarative (in my opinion), we don't have a CLI. Everything is done by editing a Layerfile and git pushing it

TL;DR, we focused on a declarative configuration format to quickly build, fork, and hibernate VMs, where Fly is more focused on building/shipping docker containers (though the products do fill a similar niche)
colinchartier
·3 jaar geleden·discuss
We do have a caching anycast proxy like fly, render, and other webapp-focused PaaS providers.
colinchartier
·3 jaar geleden·discuss
We don't actually host docker containers - the configuration DSL is based on Docker, but has crucial differences

In particular, you can do things like

RUN BACKGROUND docker-compose up

EXPOSE WEBSITE 8080

This is super important for most use-cases, since otherwise you have to deal with networking and version control.
colinchartier
·3 jaar geleden·discuss
It's two environments per unique account - though you can email support to prove you're a real person and get this moved up.

We haven't had to formalize any policies, but they'll be similar to other cloud free tiers:

- HTTP only (no terabytes of videos or images exclusively)

- No crypto mining

- No phishing sites

- No sending emails, attacking others, etc

We currently do about a million builds a year, so 99% of projects shouldn't cause problems for us.
colinchartier
·3 jaar geleden·discuss
We actually just migrated to NextJS this week - so there's still a few hairy bits with the frontend. Thanks for the report, should be fixed now.
colinchartier
·3 jaar geleden·discuss
Webapp.io's money making part (which facilitates this) is a DevOps company (CI/CD, preview environments, etc) which is already hammered with that sort of thing - see this post (from when we were called LayerCI) discussed by TravisCI for context: https://blog.travis-ci.com/2021-10-20-mining
colinchartier
·3 jaar geleden·discuss
Hey HN,

We recently finished our firecracker-based webapp hosting platform.

It's like if Vercel and Docker had a baby: You write VM configurations in a language that looks like a Dockerfile, and every commit creates a preview environment which can be "promoted" to a production site.

Here's an example configuration:

``` FROM vm/ubuntu:18.04 RUN curl -fSsL https://deb.nodesource.com/setup_12.x | sudo -E bash RUN apt-get install nodejs COPY . . RUN npm install RUN npm run build RUN BACKGROUND npm run start EXPOSE WEBSITE localhost:3000 ```

This product combines our firecracker-based hypervisor (200ms cold starts) with a global CDN written in Go (using Caddy for TLS termination)

We can offer everything for free because we charge for the DevOps side (CI/CD & preview environments) - we have no intention of getting users and then upselling people for hosting.

We're obviously very excited about this launch, and would love to hear your feedback.