HN user

arianvanp

4,128 karma

Stalk me: http://arianvp.me

Posts20
Comments866
View on HN
gist.github.com 8mo ago

Native Secure Enclave backed SSH keys on macOS

arianvanp
459pts192
blog.phnx.im 2y ago

The Privacy of Push Notifications

arianvanp
3pts0
tweakers.net 2y ago

How does the revamped Teletext work? NOS about the brand new, old system

arianvanp
2pts0
wire.com 5y ago

Wire closes $21m Series B funding

arianvanp
2pts1
www.vn.nl 5y ago

How three Dutch hackers gained access to Donald Trump’s Twitter account

arianvanp
8pts0
github.com 6y ago

Dutch Health Minister makes commit on GitHub for contact tracing app

arianvanp
4pts0
tech.channable.com 6y ago

Opnieuw: A simple and intuitive retrying library for Python

arianvanp
71pts45
www.volkskrant.nl 6y ago

Netherlands played crucial role in infecting Iran with the Stuxnet virus

arianvanp
41pts27
dhall-lang.org 7y ago

Dhall: a non-reptitive typed configuration language

arianvanp
12pts0
twitter.com 7y ago

Dutch Railway system crashed due to integer overflow

arianvanp
1pts0
rampageattack.com 8y ago

RAMPAGE AND GUARDION Vulnerabilities in modern phones enable unauthorized access

arianvanp
1pts0
blog.pivotal.io 10y ago

Sslip.io: A Valid SSL Certificate for Every IP Address

arianvanp
167pts112
arianvp.github.io 12y ago

Show HN: Weekend project: Google Stalker – Learn how much Google knows about you

arianvanp
3pts2
foldr.me 12y ago

Fun with the halting problem

arianvanp
4pts1
npmjs.org 12y ago

Npmjs seems to be down half of the time

arianvanp
5pts0
news.ycombinator.com 12y ago

Ask HN: Help, I'm stuck on HN

arianvanp
87pts52
flamingdangerzone.com 13y ago

Text is text is text

arianvanp
2pts0
github.com 13y ago

A cross-platform, scriptable speech recognizer.

arianvanp
2pts1
torrentfreak.com 13y ago

Pirate Bay Founders Case Rejected by Human Rights Court

arianvanp
3pts0
theprogrammersblog.tumblr.com 13y ago

It's alive

arianvanp
1pts0

"find out with opencv what the hidden message is."

Skill issue on promoter side.

Fable oneshotted it for me.

""" Reveal a motion-camouflaged message hidden in video noise.

How it works: The background noise scrolls vertically at a constant rate (a few px/frame), while the noise inside the letters does not follow that motion. Any single frame looks like pure static. The decode is:

    1. Estimate the background's global motion between consecutive frames
       with phase correlation (this is the "optical flow" step - the motion
       is a pure translation, so one global vector suffices).
    2. Motion-compensate: shift frame t+1 back by that vector so the
       background lines up with frame t.
    3. Take the absolute difference. The background cancels almost
       perfectly; the letters (which don't move with the background)
       light up.
    4. Average the residual over a SHORT window of consecutive frame pairs
       (long windows smear the letters, because the text itself drifts
       slowly over time), blur lightly, and threshold with Otsu.
Usage: python reveal_hidden_message.py input.mp4 [output.png] """

import sys import cv2 import numpy as np

PAIRS = 5 # number of consecutive frame pairs to average (keep small!) BLUR_SIGMA = 6 # spatial blur of each residual, in pixels START_FRAME = 0 # where in the video to start

def load_gray_frames(path, count): cap = cv2.VideoCapture(path) frames = [] while len(frames) < count: ok, frame = cap.read() if not ok: break frames.append(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32)) cap.release() if len(frames) < 2: raise SystemExit("Could not read enough frames from the video.") return frames

def main(): if len(sys.argv) < 2: raise SystemExit(__doc__) src = sys.argv[1] dst = sys.argv[2] if len(sys.argv) > 2 else "revealed_message.png"

    frames = load_gray_frames(src, START_FRAME + PAIRS + 1)
    h, w = frames[0].shape
    acc = np.zeros((h, w), np.float32)

    for i in range(START_FRAME, START_FRAME + PAIRS):
        a, b = frames[i], frames[i + 1]

        # 1) global background motion between the two frames
        (dx, dy), response = cv2.phaseCorrelate(a, b)
        dxi, dyi = int(round(dx)), int(round(dy))
        print(f"pair {i}: background shift = ({dx:+.2f}, {dy:+.2f}) px, "
              f"response = {response:.2f}")

        # 2) motion-compensate frame b by integer (dxi, dyi), then
        # 3) residual = |a - b_shifted| on the overlapping region
        ys = slice(max(0, -dyi), min(h, h - dyi))
        xs = slice(max(0, -dxi), min(w, w - dxi))
        ysb = slice(max(0, dyi), min(h, h + dyi) if dyi < 0 else h)
        # simpler: crop both to the common overlap
        a_ov = a[max(0, -dyi):h - max(0, dyi), max(0, -dxi):w - max(0, dxi)]
        b_ov = b[max(0, dyi):h - max(0, -dyi), max(0, dxi):w - max(0, -dxi)]
        resid = cv2.GaussianBlur(np.abs(a_ov - b_ov), (0, 0), BLUR_SIGMA)
        acc[:resid.shape[0], :resid.shape[1]] += resid

    # 4) normalize + Otsu threshold + light cleanup
    u8 = cv2.normalize(acc, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
    _, mask = cv2.threshold(u8, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
    mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

    out = 255 - mask  # black text on white
    cv2.imwrite(dst, out)
    print(f"wrote {dst}")

    # optional: OCR if pytesseract is installed
    try:
        import pytesseract
        text = pytesseract.image_to_string(out, config="--psm 6").strip()
        print("OCR result:\n" + text)
    except ImportError:
        pass

if __name__ == "__main__": main()

Permanent Residency -- not citizenship.

Residency is purely about taxes, health insurance and right to work. You e.g. don't get voting rights in national elections.

EU citizens automatically get permanent residency in any EU country regardless of language.

E.g. I'm a permanent resident in Germany as a Dutchie.

(However I did end up picking up German and speak it now. But never had to do a language test)

Euhm what the hell are you on about. This is a fixed output derivation. The output per definition is reproducible. It either returns a value that matches the hash or it fails.

The whole point is that it allows introducing controlled side effects as long as the output is reproducible.

Bur you're extremely annoying to talk to so I'm not gonna continue engaging. Probably an LLM

Your second example i dont understand what you're getting at.

This is just a mechanism for the builder to inject credentials during fetch time. The derivation is still content addressed (it's a fixed output derivation).

The derivation isn't even marked as impure or whatever. There is just an environment variable that gets injected by the builder into the build env so you can authenticate.

This is required to talk to hugging face

What are you on about?

Or do you mean that the cas address of HF should directly be addreessable in nix itself?

Iroh 1.0 1 month ago

Are you able to do any form of highly available loadbalancing with this?

Yeh... This month has been especially tough. I'm both a customer of cirrus labs (now bought up by OpenAI) and garnix (now bought up by Shopify) and I'm scared that whatever competitor I switch to is also just gonna get bought out.

Now I have two CI providers to replace by the end of the Quarter

Sigh

Why do we do all these efforts making our build systems hermetic and we end up just using a global mutable cache across branches where the caller picks the key? Failure of industry as a whole. Actually insane.

Yes, updates were delivered using a flash drive.

PVC backing

Yeh. But wire's storage is based on Cassandra which handles replication of storage. So you could deploy it on local nvme drives as well using a local storage CSI.

That's also how the wire.com cloud is/was run. Large Cassandra cluster on top of EC2 Instance Store as opposed to EBS.

Working on the foundation of this (getting Wire deployed at and certified by the BSI) was my first job out of college 7 years ago and how I ended up in Berlin. And once you end up in Berlin you can never leave, it seems.

I was actually on site at the Bundeskanzleramt and they had requirements of being able to install the entire server stack airgapped. We ended up building quite a cool delivery method based on Nix to ship the whole closure of the system and the containers inside and spin up a Kubernetes cluster with it. I'm wondering if it is still being used.

Amazing to see it's still going strong :)

And yet GitHub has felt the most dead it ever did. Less quality contributions. Less feeling of community. All the open source projects are struggling.

They dont have a service usage problem they have a slop problem. Ban the slop and the platform will thrive

That's not true. Both AWS' as well as GCP's workload identity tokens are not bound to the VM. If you leak the credentials they're valid until they expire. on AWS the expiry is 6 hours (non-configurable). Even if your IAM role has a shorter expiration, the credentials assumed by the VM will always be valid for 6 hours.