This is an opinionated handbook on how I migrated all my Rails apps off the cloud and into VPS.
This is how I manage real production loads for my Rails apps. It assumes:
- Rails 7+
- Ruby 3+
- PostgreSQL
- Ubuntu Server 24.04
- Capistrano, Puma, Nginx
| #!/bin/bash | |
| git clone https://github.com/just-js/lo.git | |
| cd lo/ | |
| make lo | |
| export LO_HOME=$(pwd) | |
| ./lo build binding bestlines | |
| cd .. | |
| lo/lo build runtime test-dlopen | |
| ./test-dlopen |
| #include <stdio.h> | |
| #include <sys/inotify.h> | |
| #include <sys/time.h> | |
| #include <sys/epoll.h> | |
| #include <errno.h> | |
| #include <linux/memfd.h> | |
| #include <sys/mman.h> | |
| #include <sys/syscall.h> |
| GOAMD64=v2 go build foo.go |
This is an opinionated handbook on how I migrated all my Rails apps off the cloud and into VPS.
This is how I manage real production loads for my Rails apps. It assumes:
| WITH RECURSIVE transitive_dependencies AS ( | |
| SELECT package_id AS dependency_id, package_id AS root_id | |
| FROM dependencies | |
| WHERE kind = 'runtime' | |
| UNION ALL | |
| SELECT d.package_id, td.root_id | |
| FROM dependencies d | |
| JOIN transitive_dependencies td ON td.dependency_id = d.package_id AND td.dependency_id <> td.root_id -- Avoid self-joins | |
| WHERE d.kind = 'runtime' | |
| ), |
| <%@ language="Javascript" %> | |
| <script language="javascript" runat="server" src='json2.js'></script> | |
| <script language="javascript" runat="server" src='stringExtensions.js'></script> | |
| <script language="javascript" runat="server" src='contentNego.js'></script> | |
| <script language="javascript" runat="server"> | |
| (function() { | |
| // In an ASP scenario, this fn gets "exported" |
$ cd /dev/shm/
$ git clone git@github.com:denoland/pm-benchmark.git
$ cd pm-benchmark/
$ mkdir testbed
$ cp -R fixture/* testbed/
$ cd testbed/
$ sync
$ sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
[sudo] password for andrew: | // will be called via bun-parallel-setup.ts | |
| let i = 0; | |
| Bun.serve({ | |
| port: process.env.PORT || 8000, | |
| development: false, | |
| // Share the same port across multiple processes | |
| // This is the important part! |
hi, i'm daniel. i'm a 15-year-old with some programming experience and i do a little bug hunting in my free time. here's the insane story of how I found a single bug that affected over half of all Fortune 500 companies:
If you've spent some time online, you’ve probably come across Zendesk.
Zendesk is a customer service tool used by some of the world’s top companies. It’s easy to set up: you link it to your company’s support email (like support@company.com), and Zendesk starts managing incoming emails and creating tickets. You can handle these tickets yourself or have a support team do it for you. Zendesk is a billion-dollar company, trusted by big names like Cloudflare.
Personally, I’ve always found it surprising that these massive companies, worth billions, rely on third-party tools like Zendesk instead of building their own in-house ticketing systems.