| Tool / Project | Type / Architecture | UI / Dashboard | CLI / API | Multi‑node / Clustering | Auto TLS / SSL / ACME | Zero‑downtime / Rolling Deploy | Preview / PR Environments | Team / Permissions | Volume / Backup Support | Open Source / License | Heroku‑style Compatibility | Pros / Strengths | Cons / Caveats / Weaknesses |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dokku | Single‑server (extensions for multi) | Minimal (no central UI, though plugins exist) | CLI, plugin APIs | Via community / plugin / custom setups | Yes (Let’s Encrypt plugin) | Via Docker techniques / plugin | Limited, requires extra setup | Basic (single admin; community plugins) | Plugin / manual (e.g. volume backups) | MIT (fully open source) | Good: git push, buildpack style, plugins add DB, etc. | Very stable, mature, lots of community extensions | Scaling / multi‑node is manual; UI is weak; managing many apps / teams is harder |
| Dokploy | Multi‑node / cluster (Docker Swarm) | Yes (built‑in UI) | CLI + AP |
| #!/bin/bash | |
| set -eux | |
| ## Prerequisites: | |
| # * ICS v6.x | |
| # * Hermes v1.10.3+45a29cc00 | |
| # User balance of stake tokens | |
| USER_COINS="100000000000stake" | |
| # Amount of stake tokens staked |
| runner.dialect = scala3 | |
| runner.dialectOverride.allowSignificantIndentation = false | |
| # allows `if x then y` | |
| runner.dialectOverride.allowQuietSyntax = true |
| #!/usr/bin/env -S cargo +nightly -Zscript | |
| --- | |
| [package] | |
| edition = "2021" | |
| [dependencies] | |
| cargo-util-schemas = "0.1.0" | |
| serde = { version = "1.0.197", features = ["derive"] } | |
| serde_json = "1.0.114" | |
| toml = "0.8.10" |
Note: this was originally several Reddit posts, chained and linked. But now that Reddit is dying I've finally moved them out. Sorry about the mess.
URL: https://www.reddit.com/r/ProgrammingLanguages/comments/up206c/stack_machines_for_compilers/i8ikupw/ Summary: stack-based vs register-based in general.
There are a wide variety of machines that can be described as "stack-based" or "register-based", but not all of them are practical. And there are a lot of other decisions that affect that practicality (do variables have names or only address/indexes? fixed-width or variable-width instructions? are you interpreting the bytecode (and if so, are you using machine stack frames?) or turning it into machine code? how many registers are there, and how many are special? how do you represent multiple types of variable? how many scopes are there(various kinds of global, local, member, ...)? how much effort/complexity can you afford to put into your machine? etc.)
- a pure stack VM can only access the top elemen
| -- Defining a custom recursion scheme to manipulate two mutually-recursive | |
| -- types, in the context of a toy bidirectional type checker. | |
| {-# LANGUAGE DerivingStrategies, GeneralizedNewtypeDeriving, ScopedTypeVariables #-} | |
| module Main where | |
| import Test.DocTest | |
| import Control.Monad (when) | |
| import Data.Bifunctor (Bifunctor(bimap)) | |
| import Data.Bifoldable (Bifoldable(bifoldMap), bitraverse_) |
| #!/bin/bash | |
| set -eux | |
| ``` | |
| tee ${PROV_NODE_DIR}/change-voting-period.json<<EOF | |
| { | |
| "title": "Change voting period", | |
| "description": "Voting period", | |
| "changes": [ |
So, you want to build an idle/incremental game in JavaScript and you’ve read on the internet that setInterval is the way to go when it comes to handling resources that automatically generate over time.
You get started, you write down your setInterval function, you set it to trigger once every 1000 milliseconds, and every time it triggers, you add 1 to the player’s total resource count. Perfect. It works.
| #!/bin/sh | |
| # Required on macOS because cctools is marked as broken | |
| export NIXPKGS_ALLOW_BROKEN=1 | |
| nix run -f image.nix -c push | |
| docker run ghcr.io/piperswe/hello |
| // Main | |
| @main | |
| struct ChatApp_macOSApp: App { | |
| var body: some Scene { | |
| WindowGroup { | |
| Home() | |
| } | |
| // Hiding Title Bar... | |
| .windowStyle(HiddenTitleBarWindowStyle()) |