3,698 karma · joined June 3, 2011
Previously at Era Software, Thorn, Webflow, Playlist.
jacobwgillespie@gmail.com
https://jacobwgillespie.com
https://github.com/jacobwgillespie
https://twitter.com/jacobwgillespie
[ my public key: https://keybase.io/jacobwgillespie; my proof: https://keybase.io/jacobwgillespie/sigs/F-KFv_EcnLeEUyxHBMSuyDH8bw4t5-4sfhrxE-zbdMs ]
Depot is the fastest place to build software. We accelerate builds for customers using GitHub Actions, Docker, Bazel, Gradle, and more. We're seeking our first Enterprise Support Engineer to become a customer-facing expert on build optimization.
We're looking for someone with DevOps / CI consulting experience - you'll work directly with customers as the subject-matter expert on best practices, helping migrate legacy infrastructure, and working directly with the founders on product gaps.
Bonus: experience with Docker buildx, API integrations, or previous CI consulting.
For more details, and to apply: https://www.ycombinator.com/companies/depot/jobs/NdCr76D-ent...
Eventually you realize, IMO, that doing the bin packing yourself is just competing with AWS, that’s what they do when you launch a non-metal EC2 instance and it’s best to let them do what they’re good at. Hence why we’ve focused on optimization of that launch type, rather than trying to take over the virtualization.
There’s other security and performance reasons too: AWS is better at workload isolation than we can be, both that the isolation boundary is very strong, and that preventing noisy neighbors is difficult. Especially with things like disk, the strategies for ensuring fair access to the physical hardware (rate-limiting I/O) themselves have CPU overhead that slows everything down and prevents perfect bin-packing.
From a performance / efficiency perspective, we generally recommend using ECR Public images[0], since AWS hosts mirrors of all the "Docker official" images, and throughput to ECR Public is great from inside AWS.
- Configured a block-level in-memory disk accelerator / cache (fs operations at the speed of RAM!)
- Benchmarked EC2 instance types (m7a is the best x86 today, m8g is the best arm64)
- "Warming" the root EBS volume by accessing a set of priority blocks before the job starts to give the job full disk performance [0]
- Launching each runner instance in a public subnet with a public IP - the runner gets full throughput from AWS to the public internet, and IP-based rate limits rarely apply (Docker Hub)
- Configuring Docker with containerd/estargz support
- Just generally turning kernel options and unit files off that aren't needed
[0] https://docs.aws.amazon.com/ebs/latest/userguide/ebs-initial...
Depot is a build acceleration platform that makes Docker builds and GitHub Actions faster. We've already helped companies like PostHog, Wistia, Semgrep, and Secoda save thousands of hours in build time every week.
We're looking for our first marketing hire to define and execute our go-to-market strategy. If that's you, you'll own everything from content creation to demand gen, with a focus on developer audiences. We're growing rapidly with 500+ paying customers and double-digit monthly growth.
Requirements:
* 5+ years marketing experience with a focus on developer audiences
* Experience with content marketing, SEO, social, and email campaigns
* Comfortable with analytics tools (Google Analytics, ahrefs, PostHog)
* Experience with paid channels (LinkedIn, Reddit, etc.)
* Strong communication skills and ability to work asynchronously
Apply here: https://www.ycombinator.com/companies/depot/jobs/307RqGp-fou...
Tech stack: Remix, TypeScript, Go
We're a small, remote team building developer tools we wish we've had. If you're passionate about developer productivity and marketing to technical audiences, we'd love to hear from you.
Like somebody not trying to be deceptive would say "we started talking about trademarks and a commercial relationship in February 2023", but that's not what this post says, and that's not the answer Matt has given in interviews, it's always this strange list of dates instead.
If you do want to run your own registry, there's some great OSS projects including https://github.com/project-zot/zot, https://goharbor.io/, and of course https://github.com/distribution/distribution.
If that customer has a 2GB image, they want to build the image and then pull it into 10 separate matrix jobs (think like parallel Cypress tests), and they have 1,000 commits in a month, then the AWS data transfer costs are $1,800/mo, just for that one customer to pull their images.
With R2, it acts both as a CDN and since Cloudflare does not charge for egress, reduces the cost to only storage + the one-time transfer out of AWS.
Unfortunately very few of the registry clients actually support this, critically containerd does not[1], so this means your regular `docker push` and a whole lot of ecosystem tooling does not work.
This also means that the single PUT must be able to support very large pushes as a single request, possibly even larger than what R2 or S3 would allow without using multipart upload. This means you actually need a server to accept the PUT, then do its own chunked upload to object storage or otherwise stage the content before it's finally saved in object storage.
This rules out presigned URLs for push too, since the PUT request made to the presigned URL can be too large for the backing object storage to accept.
There's also other processing that ideally happens on push (like hash digest verification of the pushed layer) that mean a server somewhere needs to be involved.
[0] https://github.com/opencontainers/distribution-spec/blob/mai...
[1] https://github.com/containerd/containerd/blob/192679b05917b5...
We are running a registry that does store content on R2[1], and today this is implemented as the unholy chimera of Cloudflare Workers, AWS CloudFront, Lambda@edge, regular Lambda, S3, and R2.
Pushes go first to CloudFront+Lambda@edge, content is saved in S3 first, then moved to R2 in background jobs. Once it's transited to R2, then pulls are served from R2.
I would so love for Workers + R2 to actually be able to accept pushes of large layers, unfortunately I have yet to talk to anyone at Cloudflare who believes it's possible. Especially in this era of AI/ML models, some container images can have single layers in the 10-100GB range!
[0] https://developers.cloudflare.com/workers/platform/limits/#r...
[1] - https://docs.github.com/en/rest/using-the-rest-api/rate-limi...
From the "self-hosted" perspectively, interestingly what we're seeing at Depot (https://status.depot.dev/clyrvud6i57402igofm6jtb7id) is API requests to provision new runners or receive runner jobs are receiving rate limit errors, but without the regular rate limit status HTTP headers[1].
I imagine the GitHub API / Actions control plane is rather overloaded at the moment with the outage.
[1] https://docs.github.com/en/rest/using-the-rest-api/rate-limi...
My impression of the YC application process was that it was way more holistic than just educational background.
> So we're just doing it on our own.
IMO if you can become a $100M household name without VC, that's absolutely the way to do it.
Even if you do take the VC path, YC for me was a massive boost in network, knowledge, and resources that I didn't have before, but it's also not the only way to acquire those things. You can even find that YC knowledge online, e.g. https://www.startupschool.org/.
That said, if anyone's even considering applying to YC, I'd recommend it, at a minimum it's a forcing function to think more deeply about your idea or business when assembling the application.
But besides just compute, I think the bigger long-term unlock for build performance is a new distributed compute engine, to free build workloads from single machines. We've started building this for our container build product, and plan to integrate Actions jobs as an input as well, starting with the cache integration we have today.