Hacker Newsnew | past | comments | ask | show | jobs | submit | more BiteCode_dev's commentslogin

That's pretty much how all people working on tracking features at GAFAMS, all people working on algo manipulating people's behavior on social networks and shopping sites, and incidentally how people working on the manhattan project, moved.

They get into the interesting problems and miss the forest for the tree.

Plus it's fun to be among smart peers, and well-paid.

The author woke up from this, but many do it for their whole life and see no problem with it.

That's why I rejected interviews from Google and Facebook. Because I knew I would do the same. It's too tempting.


Yep, I -- an always very political, lefty, very critical person -- went down this trap. Nerd-sniped myself. Ended up working in ad-tech for some years and making pretty good money at it, and eventually ending (through acquisition) at Google because of exactly this. Because of intellectual interesting things... because of opportunity to do those things...

Copious quantities of impression data? Get to do big-data-ish things? Play with things like Cassandra etc (back then kinda interesting), k-means clustering and fun stats stuff and eventually ML?, high throughput & low latency transaction processing... shaving milliseconds off here and there... and lots of money in the sector... to hire devs, to do these things... which were at least back then somewhat intellectually challenging...

Especially for people not in the Bay Area, opportunities like this were/are hard to come by...

But then once you take a step back and look at how the sausage is really made, you start to feel icky.

Granted, that was ad-tech in 2010ish time-frame. It became much much worse.

Luckily within Google I was able to transfer out of ads, and into things that seemed on the surface much less icky (consumer hardware, etc.) But the thing is... no matter what you're doing at Google, that project is funded by ad-tech... So...


If you're using ad-tech money to do something actually good, does it matter that the money was made from ad tech?


Yes. In a sense, your behavior launders adtech’s poor reputation.

Think of it like this: what if I tried to argue with you “think of all the good we can do with the profits from the baby-pulping machine!” as an executive of the baby pulping company. Maybe I run a dog adoption agency with the profits, or a soup kitchen. I’m using acts of charity as a way to launder the horrific actions of my company.


The question then is not about the CEO but the people working in that dog adoption agency, is their work unethical?


That’s a question indeed! If you know your largest donor is baby pulping inc. is it ethical to take that money?


I mean, you're doing an "appeal to extremes" argument here... And I think it's a bit more subtle.

Almost everything we do as a consumer or worker in a capitalist market is tied somewhere down the line to a generally-agreed undesirable outcome somehow.

So the really tricky part that involves using your brain and heart is figuring out where that line is.

(And it's sad that in large part our voice in the world's operations is reduced to mostly ineffective "buy or not buy" ... )


By doing something good, do you mean buying a pile of synthesizers and vintage computers and gardening tools? Asking for a friend :-)

But seriously, I think there's a big difference between ad-tech in the strict sense of pre-"social media" ad tech and ad-tech now. When I was doing it, behavioural targeting was just getting started. One of the startups I worked at was trying to get knee deep into it (pretty incompetently, IMHO), but overall it was still "here's a stream of mostly undifferentiated impressions/bid-requests/clicks" and that was that...

Overall, it was hard to make a strong moral judgement at that point. Ads paid for the Internet as we knew it and most publishers could not survive without it.

But after about the Facebook IPO, we're talking about a very different thing, one that gets more much more morally grey-area, and sometimes outright just evil.

If the thing you're working on ends up with pushing even just one teenage girl into an eating disorder... How do you feel now about it now, even if you dumped your earnings into charity?


If you're using human trafficking money to do something actually good, does it matter that the money was made from human trafficking?


This type of genuine openness mixed with the excitement of passion is so joyful to read, especially from a high achiever with strong technical capabilities and a history of business success.

Salvatore is definitely high on my list of role models.


My experience with such tools is that when you do everything, you don't do anything right.

The chances that it doesn't leak greatly the underlying abstraction and creates troubles to figure it out when it will invariably fail is zero.

Because most people barely know in depth the packaging challenges for one ecosystem. In Python there are maybe a dozen in the world that have a good hang of __all__ of it.

And the devs of this tool would need to know so many.

Of course they don't, they wrap existing tools, which implies exactly what I said above.


I wonder if you misunderstood what mise is based on your mention of "packaging challenges". mise deals with language runtimes and dev tools—it doesn't manage dependencies or package anything.

I often hear suspicion about mise for this reason from people that haven't used it. I suppose it's not surprising. That said, I have spent over a decade in the developer productivity space as well as hundreds if not thousands of hours working on mise in the last 2 years—if there is someone that can build this I'm probably the right guy for the job.

Particularly with dev tools, it's long been the case that mise has solved this problem. Improvements are continuing to be made with things like improving supply chain security and ergonomics with python—though it's not like the python community itself has its DX figured out.

Of course I'm still fixing bugs pretty regularly and that probably won't ever change but there are hundreds of thousands of developers out there using mise (kind of a guess, but I'm pretty sure) and it's working great for them. It's in the top #100 tools in homebrew now: https://formulae.brew.sh/analytics/install-on-request/30d/

This definitely isn't some scrappy project—I've devoted much of my life to this problem and I think all evidence points it it being a resounding success.


I have to say, I've been reading your replies here (and your big reply in the just thread) and I'm super super impressed with your dedication to this project. I can tell just in how you write, the volume of responses in this thread, and your tone that this is a real passion project and you're deeply serious about this. I love seeing this. Thanks for your dedication!

(And now I'm off to go try mise....)


I really appreciate that. It's definitely something I get a ton of satisfaction about of building. Drop by our discord and let me know how it goes!


In all scripting language, packaging problems mostly stem from bootstrapping.

Nvm shims break, python path confusion, gem installed on the wrong ruby interpretters, etc.

Maybe you managed the impossible.

But in 20 years of python I've seen only one tool doing bootstrapping in the right direction, all the other ones have failed.

So I'm suspicious of something that does multiple languages.

In the case of mise, it delegates this complexity to the user. E.g: for python, you have to know the config choices, and choose the right backend like asdf, pyenv, or indygreg.

Then you better understand the consequences of that choice.

To me, that's alreay a leak of the abstraction.


> But in 20 years of python I've seen only one tool doing bootstrapping in the right direction, all the other ones have failed.

Which tool is that?


Specifically for Python, right now, uv is showing the most promises (and mise has an uv backend, btw) for bootstrapping.

They have carefully avoided 90% of the mistakes of all other tools, and I have a long list. They don't live in a bubble.

uv still has problems (like indy greg builds not having headers) and it's still below v1 so I can't recommend to use it yet. But I've been testing it in different contexts for months now, and it's doing exceptionally well.

I usually take a year of testing before recommending a tool, because I need to see it in action in Windows shops, in Unix shops, with beginners, with non coders, with startup, in a corporate settings, with grey beards, etc. Python versatility means the user base is extremely diverse and you find it in the weirdest envs.

I also interviewed Charlie Marsh:

https://www.bitecode.dev/p/charlie-marsh-on-astral-uv-and-th...

and it gave me a lot of confidence that he is actually not trying to do everything at once, but quite the opposite, nail to the death very specific problems.

I've tried everything in the Python world, with a good hundred of companies envs, and about a thousand people in trainings. Pyenv, poetry, pipenv, pdm, nix, pyflow, pdm, rye, you name it.

The number of ways they can fail is astonishing.

The uv team quickly identifies when there is friction, and fix it at astonishing speed. They just announced they took ownership of the WHOLE python-build-stand-alone project, and they contribute the improvement to it to cpython upstream.

Their dedication to a good doc and great error messages is quite amazing as well.

I'm impressed.


I think mise gets a lot right. I use it for environment variables, Python virtualenv creation and activation, and task scripts.

I've been a software developer for over twenty years and am usually reluctant to use new tools. But mise has been a fantastic addition to my dev workflow.


I have two problems with Mise: There isn't a page with the most common commands I might want to run, and whenever I try it, some Python imports mysteriously fail. Then I disable it, and everything is fine again.

I might be motivated to persevere if I only had one of the above problems, but with both of them together, it's too much of a hassle.


there's a list with common commands you might want to run: https://mise.jdx.dev/walkthrough.html

if you post an issue/discussion about the python thing I'd love to investigate it a bit


Oh, is that the page that resulted from the issue I opened? It looks good, thanks!

I'll open an issue for the Python thing, I can reproduce it reliably.


it's very possible, I don't recall when/why I added it


If you want to post a discussion on the mise GH repo, I'd be happy to help. Feel free to @ me in that discussion so I don't miss it.


I posted an issue about the documentation and I see that it was added, so thanks! If you want, I can post more issues of the type "as a new user of mise, I expect to be able to do _______ but I can't see how in the docs". I'll also post about my Python issue when I reproduce it next.


> Because most people barely know in depth the packaging challenges for one ecosystem.

I think you’re greatly overstating the problem, at least insofar as it relates to this tool.

For example, Python has its prefix (where packages are installed) baked into its installation. pip, ux, poetry — whatever — are going to install python packages there.

This tool is unconcerned with package installation — it is only concerned with getting the interpreters installed and managing which one is on your $PATH.

There’s literally nothing to leak.

And regarding “wraping existing tools” as proof of some shortcoming in mise (and/or similar) — if they reinvented the wheel, that’s where things could leak. And separation of concerns is a good thing.


Bootstrapping python incorrectly is the main source of packaging problem.

There is a lot to leak. For exemple, if you install a non wheel compiled extension, you'll need the headers, but some python distro don't provide it.

Then of course, on windows, is your python registered with the py launcher? How does it interact with existing anaconda installations ? On linux on existing system installation ? Is the shim (or path update for mise) affecting /bin/env ? How that works with .pyw association ?

The. what does it implies on the venv creation and activation ? And on using -m ? And .pth files ? user-sites ?

All those questions are linked to bootstrapping.

What happens then is pip install fail or import break, but the user have no idea it's related to his bad python setup because most people don't know how it works.

And now bootstrapping has broken packaging.

This is where most "python packaging sucks" things are born: from unkowingly botching the bootstrapping.

And the vast majority of tools to do it suck. E.g: Shims are all kind of broken (pyenv and rye come to mind).

To suceed, mise would have to know all that, pick the right tool, make a perfect abstraction, create fantastic error reporting, and test all those cases on ci on all platforms.

It's possible, but I know only one project that does this almost correctly. And even this one has a long way to go.

Saying "there is literally nothing to leak" is actually perfectly making my point most people don't know the topic deeply enough to know what they get into.

Then of courses there are all the modes of failure. This article has a good bit about that:

https://www.bitecode.dev/p/why-not-tell-people-to-simply-use

It's cover more than mise's scope, but the idea is there.


I'm trying to use rye on Windows, but it doesn't want to use the normal installed Python version, only the versions it downloads itself, and it cannot update them easily because it pins an old one to run itself.

So far I've wasted more time than I saved.


It might be useful for you to try the tool before complaining about it

I’ve used mise for years. It works perfectly well. I use it for Go, Node, Deno, Java, Python, Ruby, and Rust.


Your experience with "such tools" covers experience with Mise, or are you just making assumptions?

My experience with Mise is that it's a great tool.


>My experience with such tools is that when you do everything, you don't do anything right.

Does it matter? Even dedicated tools don't do everything right.

As long as it does the things one wants to do good enough, and offers a cohesive interface to them...


Example: I tried to convince our deployment system to deploy patch releases to simplify our hotfix solution. The code was in Node and the deployment tool in Python. I had to thread the needle to come up with a semver pattern that was legal in both Python and NodeJS. Not impossible but annoying. (Then discovered our deployment tool wasn’t using the semver parser in Python and it still didn’t work. Goddamnit.)


> My experience with such tools is that when you do everything, you don't do anything right.

As a long time Emacs user, I agree :-)


Exactly. A task runner for Node.js is already complex enough. And it's not just a task runner itself, but rather an ecosystem of things working together. Now you tell me this can somehow handle Node.js, Python and others. I'll need to see how it actually works in the real world to believe the claim.


ChatGPT can't read stereograms yet, so this would be a nice captchas, if only most humans could read them too.


Voight-Kampff test but it’s just staring at stereograms with sweat glistening on your forehead.

It’s unfortunate that so many humans were initially retired, but it was also helpful in motivating the population to finally figure out Magic Eye.


Oh, so the image was a tortoise upside down? Now I see it


Tortoise? What’s that?


You know what a U+1F422 is?


You mean that all theses stuff on my screen are also physical beings? Lol. And while we are it, women and Real World exist ?


I'm trying man. I just don't get how it works


Focus your eyes as if you're looking at a more distant object. You know how if you look at something a little further away and hold your finger in front of your eye it doubles? With a magic eye, the image is repetitive, and you're trying to get the doubles to overlap and "lock" together, tricking your eyes into thinking they've focused correctly. The repetition is varied in such away that it makes the illusion of a 3d object.

The kind of weird thing is that you can achieve the same effect with any repeated pattern - floor tiles, a fence post, etc. But there's no underlying illusiory image, so you just see basically the same thing but everything else is focused wrong.


I used to love paper books of these as a kid. I was taught to start with my nose practically touching the page and slowly backing my face away without changing my focus. Eventually I could do it without doing so (and the skill never faded!) but it's the best way to get started


For me, the secret is to relax my eyesight a bit. Kinda try to ignore the image and think of something else. "Space out" while staring at it.... and suddenly boom, you're in


I think you can decode a stereogram into the depth map with like 5 lines of Python, but it's been a while since I've played around with this stuff.

Meaning, maybe GPT can't (yet) see magic eye images, but it shouldn't have trouble building itself a prosthetic that allows it to see them.


just is not meant as a built tool, just a task runner. Those have vastly different goals.

make is a build system: it has targets, it has file deps, a dag resolver, etc.

But a task runner is basically a fancy aliaser with task deps and arg parsing/proxing.

And just is good at being that. Although I agree I not a fan of adding yet another DSL.


Well, it's also trained on scifi corpus where the ai acts that way. So it'ls logical it's in the weights.


Because it works. Even on you.


No, ads mean bad incentives, you have to please advertisers, not just your audience. It also encourages to ignore externalities.

Then it gives more power to those who already have the most of it.

It also normalizes lying, being intrusive, and manufacturing damaging social norms.

Tracking is worse, but all ads are toxic.


I was fine with ads in newspapers, in my TV news and on the sides of buses. While it always created incentives and questionable relations (E.g. do yo report the grocery chains' salmonella disaster in your news when the same chain advertises between that segment and the weather? What if they give you an angry call after the broadcast? does your news desk ever worry about what they should publish? as soon as they worry the damge is already done). I get that. But I'm not going to even hope we'll get the web to live up to higher standards than print and broadcast did for the last centuries. After all, internet media had significantly worse standards in this regard for as long as it existed. I'd be happy for it to just have normal media standards.


If you haven't coded serious projects in at least 5 very different languages, you likely adore one language because you just don't know better.

There is such a variation between js, perl, python, rust, C#, lisp, bash, haskell, erlang and sql that the blind spot is huge.

It's like eating hot dogs all your life and debating food merits with people that tasted japanese, indian and french food.


I’m mixing Python, C++, Java, Kotlin and shell scripting professionally. Used to work on enterprise C# project. Experimented on a hobby level with Elixir, Haskell, OCaml, Ruby, TypeScript, JS, Dart.


I'm recently enjoying F# a lot. What really sold it was partial application and absolutely bonkers type inference with gradual typing. You just write code and let type system infer the signature of the functions, only specifying the types when necessary. It's so much cleaner and I'm sorely missing it in C#.

It's a bit off-topic but if you liked Elixir it's kind of like Elixir but fast, and like OCaml but widely usable in production. It could also be familiar after Python due to mostly indentation-based scoping and not having to define signatures (except you go from something terrible and untyped to Hindley-Milner).


Python, C++, Java, Kotlin and shell scripting are all globally mutable procedural / imperative languages. Of course you'll also like JS.

Spend several years with LISP, Elixir, Haskell, OCaml, then you'd be in a better position to say you keep loving JS.

You are sticking to the same type of languages. This warps your point of view.


What an obnoxious and condescending response. They said they've used those languages. Consider that these languages have huge flaws of their own. Elixir doesn't even have a proper language server. Using niche languages does not automatically make you special on internet forums.


Elixir has two fully functional language servers and it's very far from niche, or I've been spending imaginary money for the last 9 years.

What I said still applies, the guy seems to have a familiarity bias and said nothing to show otherwise.

As for being condescending, your reply seems like a textbook example.


amen. there’s people that use haskell, ocaml, lisp… and then there’s rest of us that do actual real work :)


Oh yeah, that's not obnoxious at all. :D

Lost on your way to Reddit, I see.


you can dish it out but you can't take it, I see... :)


I said was that I believe the poster lacks the perspective to criticize certain languages. That was and still is the topic.

You are free to interpret it any flame-bait ways. I ain't biting though.

Peace.


did you actually read the post? where from his post do you get "poster lacks the perspective to criticize certain languages?"

and of course even more pertinent - which languages did he even criticize other than to point out things that are not possible in Scala/Rust (certainly not a critique, each language has its pros/cons...)


Maybe zig will become what rust is for python.

But JS needs a better compiled extension story for that to happen. The absence of a standard like wheels makes everything difficult.


I don't think that compiled extensions are a good solution for any particular task. Projects that need some code outside of JS ecosystem can compile it to WASM, project that need a lot of it should be done in that language instead.


The entire AI ecosystem, the scientific stack, the GIS crowd and 3D modeling community disagree with you.

And they went for python, not js, because of this.


You're providing examples of "project that need a lot of it should be done in that language instead". What would these projects even gain from using nodejs on backend and packing most of their business code into extensions for node?


Talk is cheap, they coded it.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: