aalhour

Joined 11 years ago

Karma
286
Submissions
167
Member since
Jul 28
https://aalhour.com
View on Hacker News

Recent submissions

Comment · 8 months ago
Location: Germany (Munich)

Fully remote: Yes (and open to hybrid in Munich)

Willing to relocate: No

LinkedIn: https://www.linkedin.com/in/aalhour/

Website: https://aalhour.com/

GitHub: https://github.com/aalhour

Resumé/CV: available on request (has personal contact info)

Email: a.z.alhour(at)gmail(dot)com

Technologies: Go, Python, Java, k8s, docker, AWS (backend/data infra)

About me: A software engineer with 15 years of experience (ex-Shopify, ex-HubSpot), with prior engineering management experience. I work on the backend, did data engineering in the past and am looking for a role in backend/data infra.

Comment · 1 year ago
Martial arts, reading, long walks, lifting weights.
Comment · 1 year ago
No,
Comment · 1 year ago
I worked as a manager at a local German company in Germany with a strong Worker's Council team. Performance Management was run through them, they had comments, the process was adapted and managers were onboarded. This is not to say that performance management doesn't suck in general (because once you start having metrics, people start gaming them and you're almost superimposing it on people's way of working), but the Worker's Council didn't block it, because at the end of the day it was neither invasive nor exploitative.

EDIT: typos.

Comment · 1 year ago
Comment · 2 years ago
No worries, I think your solution coverges with @Someone's above, if I am not mistaken. You're multiplying the probabilities for all values of j up to i for all values of i.
Comment · 2 years ago
I was aware that the Random function call gets evaluated in Python (and C) every time the loop iterates, I just couldn't imagine the probability distribution myself, I had assumed that all numbers are uniformally distributed but didn't cater for the sums. You're a legend! Now I see it. I wrote the following code to check out your argument and it checks out indeed :thumbs-up:

  def p(n):
    total = 1
    for i in range(1, n):
      total *= (100-i)/100
    return total


  for i in range(1, 100):
    print(f"p({i}) = {p(i)}")

The first 13 results:

  p(1) = 1
  p(2) = 0.99
  p(3) = 0.9702
  p(4) = 0.9410939999999999
  p(5) = 0.9034502399999998
  p(6) = 0.8582777279999998
  p(7) = 0.8067810643199997
  p(8) = 0.7503063898175998
  p(9) = 0.6902818786321918
  p(10) = 0.6281565095552946
  p(11) = 0.5653408585997651
  p(12) = 0.503153364153791
  p(13) = 0.44277496045533604
p(12) sits at 50%, of course it will be the mean! :D
Comment · 2 years ago
Yes, that's true. I don't want an average of 50. My initial guess of 50 is wrong. I am trying to understand why the average turned out to be approximately 12.
Comment · 2 years ago
Not sure that adds up, I translated the right side of the equality into a Python statement and it returns a number I am not sure how to interpret:

  1/99 * sum([(i-1)*i for i in range(2, 100)])   # 3266.666666666667
Both the median and mean are around 12 for 10K runs of the loop.
Comment · 3 years ago
me too please?
Comment · 3 years ago
I just changed the DNS on my unrooted Android to AdGuard's, went into the YouTube and I still saw the ads. What am I missing?

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton