Readit News logoReadit News
eddd-ddde commented on TikTok's 'addictive design' found to be illegal in Europe   nytimes.com/2026/02/06/bu... · Posted by u/thm
jamesblonde · 4 days ago
I gave a talk at PyData Berlin on how to build your own TikTok recommendation algorithm. The TikTok personalized recommendation engine is the world's most valuable AI. It's TikTok's differentiation. It updates recommendations within 1 second of you clicking - at human perceivable latency. If your AI recommender has poor feature freshness, it will be perceived as slow, not intelligent - no matter how good the recommendations are.

TikTok's recommender is partly built on European Technology (Apache Flink for real-time feature computation), along with Kafka, and distributed model training infrastructure. The Monolith paper is misleading that the 'online training' is key. It is not. It is that your clicks are made available as features for predicitons in less than 1 second. You need a per-event stream processing architecture for this (like Flink - Feldera would be my modern choice as an incremental streaming engine).

* https://www.youtube.com/watch?v=skZ1HcF7AsM

* Monolith paper - https://arxiv.org/pdf/2209.07663

eddd-ddde · 4 days ago
I have to say, it is _extremely_ impressive when a tiktok I watched reminds me of some other tiktok, so I go and search for a very loose description of the tiktok, and the first result is 95% of the time what I wanted to find.

I don't think any single other platform has as good a search feature as TikTok does.

eddd-ddde commented on Any application that can be written in a system language, eventually will be   avraam.dev/blog/system-la... · Posted by u/almonerthis
carlmr · 14 days ago
>In particular, an error on one line may force you to change a large part of your code.

There's a simple trick to avoid that, use `.clone()` more and use fewer references.

In C++ you would be probably copying around even more data unnecessarily before optimization. In Rust everything is move by default. A few clones here and there can obviate the need to think about lifetimes everywhere and put you roughly on par with normal C++.

You can still optimize later when you solved the problem.

eddd-ddde · 13 days ago
Clone doesn't work when you need to propagate data mutations, which is what you need most of the time.

Another option is to just use cells and treat the execution model similarly to JavaScript where mutation is limited specific scopes.

eddd-ddde commented on The challenges of soft delete   atlas9.dev/blog/soft-dele... · Posted by u/buchanae
MaxGabriel · 21 days ago
This might stem from the domain I work in (banking), but I have the opposite take. Soft delete pros to me:

* It's obvious from the schema: If there's a `deleted_at` column, I know how to query the table correctly (vs thinking rows aren't DELETEd, or knowing where to look in another table)

* One way to do things: Analytics queries, admin pages, it all can look at the same set of data, vs having separate handling for historical data.

* DELETEs are likely fairly rare by volume for many use cases

* I haven't found soft-deleted rows to be a big performance issue. Intuitively this should be true, since queries should be O log(N)

* Undoing is really easy, because all the relationships stay in place, vs data already being moved elsewhere (In practice, I haven't found much need for this kind of undo).

In most cases, I've really enjoyed going even further and making rows fully immutable, using a new row to handle updates. This makes it really easy to reference historical data.

If I was doing the logging approach described in the article, I'd use database triggers that keep a copy of every INSERT/UPDATE/DELETEd row in a duplicate table. This way it all stays in the same database—easy to query and replicate elsewhere.

eddd-ddde · 21 days ago
I never got to test this, but I always wanted to explore in postgres using table partitions to store soft deleted items in a different drive as a kind of archived storage.

I'm pretty sure it is possible, and it might even yield some performance improvements.

That way you wouldn't have to worry about deleted items impacting performance too much.

eddd-ddde commented on Understanding C++ Ownership System   blog.aiono.dev/posts/unde... · Posted by u/todsacerdoti
HarHarVeryFunny · 22 days ago
It's really asking for trouble if you view it that way - that you are going to allocate something, then uniquely pass it to a single unique_ptr, or shared_ptr, to manage and release. Better really to use std::make_unique() and std::make_shared().

The smartness, limited though it may be, is just that since it "knows" it's the owner, it knows that it's responsible for releasing it at the appropriate time (reference counted in the case of a shared pointer).

A lot of the value isn't just the automatic release, but that these classes, unique_ptr, and shared_ptr, are built to enforce their semantics, such as literally not being able to copy a unique_ptr, but are able to move it, and copying a shared_ptr being allowed and increasing the reference count of the object.

Yes - they are just simple classes, but using them as intended does avoid a lot of common programmer memory management mistakes, and highly adds to the readability of your program, and ability to reason about ownership, since use of these types rather than raw pointers in effect documents who the owner(s) are, and enforces that this documentation is the reality.

eddd-ddde · 21 days ago
It's an important distinction, just like it's important to know that "const foo *" doesn't mean the foo is constant, just that YOU cannot change it.

Just because you build a unique_ptr from a raw pointer it doesn't mean that it is now magically owned by the object. You also have to ensure that no other place already did that, which unique_ptr simply cannot enforce.

eddd-ddde commented on Understanding C++ Ownership System   blog.aiono.dev/posts/unde... · Posted by u/todsacerdoti
jurschreuder · 22 days ago
I don't know why people use 'new' and 'delete' in all the examples how memory in C++ works because you never normally use them during coding only if you want to make your own container which you might do once to learn about the internals.

C++ by default creates objects by value (opposed to any other language) and when the variable goes out of scope the variable is cleaned up.

'new' you use when you want to make a global raw pointer outside of the normal memory system is how I would see it. You really never use it normally at least I don't.

A good rule of thumb is not to use 'new'.

eddd-ddde · 21 days ago
You need to if you want to create a smart pointer from some class with a private constructor.
eddd-ddde commented on I set all 376 Vim options and I'm still a fool   evanhahn.com/i-set-all-37... · Posted by u/todsacerdoti
eviks · 21 days ago
> - already exactly know where you want to go

Same as with moving down by 1x10? How are you even choosing cursor direction if you don't know where to go to?

> - figure out the relative distance either by looking to the side

Ok, how is that an issue? You also have to figure out the distance by looking down when moving down with the arrows, so eyes still move?

> move your hands to the numbers row to input numbers and back

No, you could maintain your hands on the home row and use a numpad layer containing it

> imagine you had to tell your hand "move 10 centimeters left"

Imagine you had to tell your hand "move 1 centimeter left 10 times"? The mouse is that extension where you don't "move by 1 pixel X times" and move in an analog way

eddd-ddde · 21 days ago
No one is doing 1x10 key presses. That's now how humans process information. You repeatedly press a key one time until what you see on screen is what you want. The further away you are the faster you do it.
eddd-ddde commented on I set all 376 Vim options and I'm still a fool   evanhahn.com/i-set-all-37... · Posted by u/todsacerdoti
eviks · 22 days ago
It's slower to "stop precisely"on key hold/release, so 10j still makes more sense, only for a few lines tapping J a few times makes more sense, but not 10-20
eddd-ddde · 21 days ago
I've tried so many times to make it work, I've really tried. But it just ends up being faster to spam j a couple of times instead of having to think about how many times I want to move, then type it, then be wrong, then try again...

For larger distances you wouldn't even see the text in the screen, so you don't even know how much to jump. In this situation I just spam ctrl+d, then tweak with j.

eddd-ddde commented on GitHub Incident   githubstatus.com/incident... · Posted by u/aggrrrh
phtrivier · a month ago
Fixed in about 30m to an hour.

Definitely annoying, but I'll try the hot take that, contrary to popular belief, GH is not critical infrastructure - or so I hope.

Please tell me no part of the Ukrainian air defense system depends on a gh action hook.

eddd-ddde · a month ago
You've heard of infrastructure as code, now presenting air strikes as code!

Need a new secret offensive operation? Create a new JSON file with the coordinates, make a merge request and get Commander approval, merge it, and our new proprietary GitHub action runner will deploy a drone in seconds!

eddd-ddde commented on Bubblewrap: A nimble way to prevent agents from accessing your .env files   patrickmccanna.net/a-bett... · Posted by u/0o_MrPatrick_o0
patapong · a month ago
I would also prefer not doing this. Does anyone know of any lightweight, cross platform alternatives?
eddd-ddde · a month ago
https://www.passwordstore.org/

You can easily script it to decode passwords on demand.

eddd-ddde commented on GitHub should charge everyone $1 more per month to fund open source   blog.greg.technology/2025... · Posted by u/evakhoury
securesaml · a month ago
The problem is more so maintenance.

The expectation of FOSS is that the users and maintainer work together to resolve bug fixes/features/security issues.

However many companies will dump these issues to the maintainer and take it for granted when they are resolved.

It's not a sustainable model, and will lead to burnout/unmaintained libraries.

If the companies don't have the engineering resources/specialization to complete bug fixes/features, they should sponsor the maintainers.

eddd-ddde · a month ago
A company finding a bug and opening an issue on an open source project _is_ contributing.

What happens next is completely irrelevant. The maintainer can 100% decide to just ignore the issue or close it.

Opening issues doesn't create unmaintained software. In fact it helps.

u/eddd-ddde

KarmaCake day1274June 8, 2022
About
life enjoyer, science enjoyer

meet.hn/city/ca-Kitchener

Interests: AR/VR, DevOps, Web Development

---

View Original