nivertech

Joined 16 years ago

Karma
1,978
Submissions
1,840
Member since
Apr 23
[ my public key: https://keybase.io/nivertech; my proof: https://keybase.io/nivertech/sigs/TSPizHrahhxd9Q1ZrIOFu3_73baE_0_XgUQTWapr4Zs ]

  - Distributed Systems
  - DDD / CQRS / Event Sourcing
  - Erlang/OTP, Elixir/Phoenix/Absinthe/LiveView, Elm
  - kdb+/q
  - GraphQL, MQTT, Pub/Sub, WebSockets, Long Polling, etc.
  - PostgreSQL, Redis, DynamoDB, Riak
  - AWS / GCP
  - GPU Computing (OpenCL, CUDA)
  - Agent-based Modeling/Simulations (ABM), NetLogo
View on Hacker News

Recent submissions

Comment · 19 days ago
Compiler compiled it.
Comment · 21 days ago
> Indo-European ethnicities/language families

language families, not ethnicities

Comment · 1 month ago
yes, that was another one I had in mind.

  /ən ˌɛs.kjuːˈɛl ˈkwɪri/
  vs
  /ə ˈsiːkwəl ˈkwɪri/
Comment · 1 month ago

  “a San Francisco startup” /ə ˌsæn frənˈsɪskoʊ ˈstɑɹtˌʌp/
  vs
  “an SF startup” /ən ˌɛsˈɛf ˈstɑɹtˌʌp/
i.e. you have to mentally pronounce the phrase before choosing which form of the indefinite article to write
Comment · 1 month ago
> Q. How do you port an OS from one language to a new one, pre-LLM?

A. you reduce impedance mismatch, but making the new language using similar concepts and mechanisms

--

You're right, this table is just a coincidence, probably derived from the standard math notation, and used in many PLs like FORTRAN and Python ;)

  PDP-11        C
  
  INC R         ++i
  DEC R         --i
  ADD src, dst  dst += src
  SUB src, dst  dst -= src

  (R)+          *p++
  -(R)          *--p
  X(R)          p[x]
  @(R)+         **pp++
  @X(R)         *p[x]

  BR label      goto label  ; near jump
  JMP label     goto label  ; far jump
Comment · 1 month ago
Comment · 2 months ago
Now we know who built the Silo
Comment · 2 months ago
> 50 is the hardware limit

this can't be true, If that hardware can run Django and Phoenix, it for sure can handle orders of magnitudes more concurrent clients than 50 even before you start tuning the OS and the runtime.

> Playwright headless Chromium

maybe you mean you're unable to generate more than 50 concurrent clients using Playwright+Chromium - but that's the wrong tool for loadtesting.

Loadtest should run from a different machine or cluster of machines/VMs. You can generate up to ~ 64K outgoing connections per IP address / alias. With 17 IP addresses/aliases you can generate up to C1M.

Comment · 2 months ago
Your "Concurrency" benchmark ends at 50 concurrent clients. Continue testing at C1K, C10K, C100K, C1M, C2M, etc.

That's for a single node.

Then try multiple nodes / cluster - C1M, C2M, C10M, etc.

Also, all concurrent clients should send periodic pings / keepalives and do something useful (e.g. some CPU work, not just being idle).

Then you'll have to change your conclusion from:

> The data answers my original question: yes, Django LiveView holds up against Phoenix LiveView. In day-to-day operations they are practically equal.

to

> The data answers my original question: yes, under *toy* load Django LiveView holds up against Phoenix LiveView. For *toy* operations they are practically equal.

Comment · 2 months ago
Comment · 2 months ago
Comment · 3 months ago
It doesn't matter CRUD, REST, 2PC, or middleware in general. From my PoV they're all technical solutions used to avoid deep modeling of the domain and its workflows, and instead trying to model the real world using generic primitives without understanding it first, or maybe with surface-level understanding only

The dichotomy is generic vs custom/bespoke:

- generic (CRUD / REST / RDBMS+SQL+ACID Tx / Tx Scripts / 2PC / BPMN / Admin UIs) - also SmartUIs/Fat Clients (VB, Delphi, SPAs, etc.)

vs

- custom (DDD / CQRS/ES / Sagas / Process Managers / Durable Executions / TBUI)

Also, learning data engineering and BI helps one better model the real world than generic methods. It's somewhat similar to CQRS/ES, but with much more prior art

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton