HN user

minaguib

408 karma

Mina Naguib, firstname at lastname dot ca, https://www.linkedin.com/in/minaguib/

Posts4
Comments125
View on HN

Cool intro and visuals.

Where it ends "how do we calculate the weights ?" is fairly simple.

Start completely randomly and compare output to known truth. When it's incorrect, you beat the model up pretty badly and repeat again. Eventually you get the correct answer pretty consistently.

... and by "beat it up" I mean tweak the weights - totally randomly will work but will take a long time (brute force), so we add a bit of intelligence to see which direction to tweak via some algorithms (backpropagation, gradient descent).

Agreed with the main message.

... but

An incoming message to an IPv4 NAT router will not be forwarded to a LAN device unless it matches a known flow (typically continuation of a conversation, typically initiated by the LAN device, which is expected), or the user set up a DMZ forward to a particular destination. There is actually no reasonable way for non-DMZ LAN devices to be exposed to the noise.

For non-NAT IPv6, sure a firewall might be on by default, but it can be turned off - and therein lies the potential exposure to every LAN device to directed traffic.

In other words, the risky zone for IPv4 NAT tends to be setting up a DMZ exposing 1 device, while the risky zone for IPv6 non-firewalled tends to be exposing all of the devices behind the router.

Entirely unrelated to the topic, but my mind was blown when I recently learnt that clamp() can be implemented via .median(val, low, high), and the param order doesn't matter!

Perion | Advertising Technology | https://perion.com/ | Hybrid (Onsite+WFH)

Hiring software engineers across different locations and teams:

-

Tel Aviv:

Back End (Go) developer: High-performance edge ad auction systems

Data Scientist: Multiple ML and AI initiatives (internal systems as well as client-facing)

-

Montreal:

Data Engineer: Advertising (big data, for real!) data processing systems

Back End (Python) developer: Working on a (tastefully-designed) set of python transactional microservices serving the core business web application and APIs

-

If you see yourself as a good fit for the roles in the above locations, please browse the job descriptions on our web site ( https://perion.com/careers/ ) and reach out to me directly - my contact info is in my HN profile bio.

Agreed with you. I've always told people all code "rusts" (not a language reference) - in multiple ways: the original author's mental model, the contributors, institutional knowledge, and the supporting ecosystem and dependencies. All code atrophies towards being legacy and debt. The more the worse. AI Vibe coding simply creates much more of it, much faster.

No it's intentional. The highlight is what I call a "known prefix"

It's a hint to tell you the word starts with "s", but since you didn't narrow it down to "su..." or "sv..." it's not giving you more hints.

Once you narrow it down further, say, "sub..." and "sun..." it'll highlight the known prefix "su"

I've always been a backend/systems kind of guy.

For the frontend for this I used Vue.JS as a learning experience. Overall it was straightforward and quite pleasant.

The hardest part was the mental process of giving up on server-side business logic enforcement (such as anti-cheating). At the end of the day ... "it's just a game" :)

I have a decade's worth of guess statistics per word.

Unfortunately, I just converted it to a frontend-only app to eliminate hosting costs, so I have no good location to keep tracking these stats.

Theoretically, "Oxford English Dictionary estimates that there are around 171,476 words currently in use in the English language", the log2() of which is around 17.38 - I have no historical data for 'volatile'

It's a random word each game (but the URL is shareable with a friend to play the same word).

TBH I've had it up as-is for a decade as a classical web app, but just converted it to a frontend-only app to eliminate most hosting costs.

In _this_ particular case, you could just tell curl to internally timeout the request (via `-m`) instead of trying to manage the timeout on the process level

As someone who has been designing, writing, and operating high-performance systems for decades, I can guarantee you that it does not boil down to "laziness".

Everyone starts with the best of intentions. malloc() and free() pairs. Then inevitable complexity comes in - the function gets split to multiple, then across modules, and maybe even across systems/services (for other shareable resources).

The mental overhead of ensuring the releases grows. It _is_ hard, and that's most definitely not a lie beyond any trivial implementation.

Surprisingly "just design systems that manage their memory correctly", as you said, is a very legitimate solution. It just so happens that those systems need good language support, to offload a good chunk of the complexity from the programmer's brain to the machine.

Hivestack by Perion | Montreal, QC (Hybrid Office/Remote) | Full Time Industry: AdTech, specializing in Digital Out Of Home

I'm hiring for two engineering lead positions (senior/staff level):

* Edge Discipline Lead (Ad Bidding & Delivery): This position leads the team responsible for the high-volume low-latency ad bidding and delivery systems - a particularly good fit for someone who enjoys systems performance engineering, architecture, while still being hands-on

* Application Discipline Lead (Backend APIs) - This position leads the team responsible for the key platform APIs our frontends as well as external clients interact with - a particularly good fit for a python afficionado who also enjoys architecture, microservices, databases, while still being hands-on

Full job descriptions: https://www.hivestack.com/careers/

If you're interested, get in touch :) (contact info in bio)

That's a lot of rules.

Ask everyone to cement their thoughts in a computerized form ahead of the meeting. Bonus points if done immediately after the interview ends.

It can be freeform, or discrete items, or a mix of both. It also acts as a good paper trail for any future interactions between your company and the candidate.

Hivestack by Perion | Montreal, QC (Hybrid Office/Remote) | Full Time Industry: AdTech, specializing in Digital Out Of Home

I'm hiring for two engineering lead positions (senior/staff level):

* Data Discipline Lead - this includes driving the architecture and technical roadmap, and the implementation of various technologies to support adtech-scale ingestion, transport, processing, warehousing, and reporting.

* Edge Discipline Lead (Ad Bidding & Delivery): This position leads the team responsible for the high-volume low-latency ad bidding and delivery systems - a particularly good fit for someone who enjoys systems performance engineering, architecture, while still being hands-on

Full job descriptions: https://www.hivestack.com/careers/

If you're interested, get in touch :) (contact info in bio)

Hivestack by Perion | Montreal, QC (Hybrid Office/Remote) | Full Time

Industry: AdTech, specializing in Digital Out Of Home

We are hiring in multiple positions in R&D:

* Senior/staff-level data engineer to lead our data discipline - this includes driving the architecture and technical roadmap, and the implementation of various technologies to support adtech-scale ingestion, transport, processing, warehousing, and reporting.

* Back-end developers (python & Go) to work on both the application/transactional portion of the platform as well as the high-performance edge layer

Full job descriptions: https://www.hivestack.com/careers/

If you've got the chops, get in touch :) (contact info in bio)

Hivestack | Data Discipline Lead (Senior/Staff-Level Position) | Montreal, QC (Hybrid Office/Remote) | Full Time

Industry: Adtech, specializing in Digital Out Of Home

We are hiring a senior data engineer to lead our data discipline - this includes driving the architecture and technical roadmap, and the implementation of various technologies to support adtech-scale ingestion, transport, processing, warehousing, and reporting.

Full job description: https://boards.greenhouse.io/hivestack/jobs/4341464006

If you enjoy big (and small) data, get in touch :) (contact info in bio)

I agree with the author that the non-deterministic portion of it is mildly insane.

Imagine a junior admin who installs a new certificate (without the intermediate). Tests on their Chrome which happens to have cached the intermediate, validate LGTM and moves on.

Meanwhile it gets deployed and some portion of the site's users don't have the intermediate certificate cached = dungeon collapse.

This is more common than you think. So long as you know what you want as an outcome, don't overthink it. Unless you're working with higher-than-average levels of sociopathy, you'll find that you can talk about it and transition to something you find more rewarding.

Also try not to frame it as something shameful/step-down. Individual Contributors and Management are entirely different jobs - clearest evidence of that is what your calendar and day-to-day look like. There's some overlap, but it's a pivot, and that's okay.

(P.S. Stick with the personal trainer and running group :)

Good luck.

I'm not a frontend dev, but from cursory reading of htmx docs, it seems your example implying every chat message would require sending the full log to every user is a bit of a stretch - a more natural way would be to transmit only the new messages and use one of the "before" or "after" swap settings to insert them where appropriate.