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

Incredible that the top reply is a cop out.


Perhaps people have grown tired of repeated bait and switch tactics?


For one moment there I thought Amazon had done a good thing!


Pet peeve: companies that appropriate a dictionary term for their name, e.g. Apple, Google (& Alphabet), Amazon, Oracle. It's really not too hard to create a new name for your company, e.g. Microsoft, Facebook and Nvidia.


Microsoft doesn’t belong in this list after they trademarked Windows, Word, Works (remember, Microsoft Works is an oxymoron) and others.


Microsoft Works was such a weird product because it was just half-assed Microsoft Office, but Microsoft Office already existed.


No. Works predated Office by 3 years at least. The first versions of Works ran under ms-dos.


Several other vendors had office "works" suites too. ClarisWorks, AppleWorks, seems like there were some others for the variety of platforms in the 80s/90s but I can't recall them offhand.


Lotus symphony.


As I understand, Microsoft Works was primary aimed at retail buyers, but Microsoft Office was aimed at enterprises users. MW was probably half the cost of MO. It is market segmentation, as I see it.


If you count Google as an appropriation of Googol, surely Nvidia appropriates Invidia?


Nah. "Google" is pronounced the same as the English word "Googol", so I do consider it appropriating. Meanwhile, Invidia is a latin word, which as a dead language, and it is pronounced differently from "Nvidia", so I don't consider that the same as appropriating a living language word.


"invidia" is an Italian word, so it does survive in living languages.

https://en.wiktionary.org/wiki/invidia

"Nvidia" as "officially" pronounced in English is not significantly different from some of those pronunciations.

https://en.wikipedia.org/wiki/Nvidia

And the founders seemed to be well aware of the existing usage when they chose the name.


Those are different though? At no point in that sentence was I confused about which word meant what. Unlike Amazonian datacenters deep in the Amazon's Amazon.


Related - companies named after animals or use animal names as part of their name /logo /mascot should at least contribute a share of their profits to its conservation


Facebook isn't a new name either. Some schools would publish and distribute a book of student photos with names at the beginning of the school year, to help recognize peers; these were called a facebook. Yearbooks are similar, but published at the end of the year and also have a lot of content about what happened that year and organizations and sports.


didn't know that... In that case I should count "Facebook" as another violater.


I don’t think Google should be on that list. The word is “googol.”


Not to mention, even “googol” is a word almost no one uses (unlike “apple” and “Amazon”).


A face book is a generic term for a school directory with photographs. That's why Zuckerberg called it The Facebook to differentiate it from all the other face books.

https://en.wikipedia.org/wiki/Face_book


> Pet peeve: companies that appropriate a dictionary term for their name, e.g. Apple, Google (& Alphabet), Amazon, Oracle.

Hard disagree. Consider "Oracle," a truly inspired name for a database company. It's an admirable choice. Here's the computer science definition.

> In complexity theory and computability theory, an oracle machine is an abstract machine that can query a black box called an oracle, which is able to give an answer to any instance of a certain problem in a single operation.

There's also the wealth of linkages with classical oracles, e.g., Delphi, Cumae (technically a Sibyl), Dodona, etc. [1] Taken together, it's hard to think of a better name.

[0] https://en.wikipedia.org/wiki/Oracle_machine

[1] https://en.wikipedia.org/wiki/Oracle


nVidia comes from the Latin word invidia, which means things like envy, or jealousy.

Microsoft (originally Micro-Soft) is a portmanteau of microcomputer and software.

Facebook, as others have mentioned, is a compound word that was borrowed from what literal books of faces [and names] were called.

When I think of non-dictionary names, I think of things like Mosptnspg.


portmanteaus are great, actually.

Didn't know that about facebook.

Non-dictionary names don't need to be as wierd as Mosptnspg. Could simply be Frodel.


Wildberries


same - I was like "headline reads like PR but I guess it's good..." reminder to self: there was an Amazon before the bald bookseller


He also wasn't bald when he started selling books.

https://www.seattletimes.com/business/amazon/amazon-25-the-m...


I thought for a moment this was some kind of reference to "no more destroyed Amazon Ground trailers on underpasses"...


Selling you dirt-cheap goods with next-day delivery isn't enough for you?


I had the exact same reaction for a moment. But no, of course not.


Exactly this is very reminiscent


Put yourself in a position where it is your problem/responsibility, where you cannot depend on another to do it for you. You'll be learning every day.


If your hair is on fire, you don't ask how hot.


Inspiring article. Well written. Totally feeling it!


The ability to read is all it takes to have AGI?


There's no lockfile or anything with this approach right? So in a year or two all of these scripts will be broken because people didn't pin their dependencies?

I like it though. It's very convenient.


> There's no lockfile or anything with this approach right?

There are options to both lock the dependencies and limit by date:

https://docs.astral.sh/uv/guides/scripts/#locking-dependenci...

https://docs.astral.sh/uv/guides/scripts/#improving-reproduc...


> So in a year or two all of these scripts will be broken because people didn't pin their dependencies?

People act like this happens all the time but in practice I haven't seen evidence that it's a serious problem. The Python ecosystem is not the JavaScript ecosystem.


I think it's because you don't maintain much python code, or use many third party libraries.

An easy way to prove that this is the norm is to take some existing code you have now, and update to the latest versions your dependencies are using, and watch everything break. You don't see a problem because those dependencies are using pinned/very restricted versions, to hide the frequency of the problem from you. You'll also see that, in their issue trackers, they've closed all sorts of version related bugs.


> An easy way to prove that this is the norm is to take some existing code you have now, and update to the latest versions your dependencies are using

I have done this many times and watched everything fail to break.


Are you sure you’re reading what I wrote fully? Getting pip, or any of them, to ignore all version requirements, including those listed by the dependencies themselves, required modifying source, last I tried.

I’ve had to modify code this week due to changes in some popular libraries. Some recent examples are Numpy 2.0 broke most code that used numpy. They changed the c side (full interpreter crashes with trimesh) and removed/moved common functions, like array.ptp(). Scipy moved a bunch of stuff lately, and fully removed some image related things.

If you think python libraries are somehow stable in time, you just don’t use many.


... So if the installer isn't going to ignore the version requirements, and thereby install an unsupported package that causes a breakage, then there isn't a problem with "scripts being broken because people didn't pin their dependencies". The packages listed in the PEP 723 metadata get installed by an installer, which resolves the listed (unpinned) dependencies to concrete ones (including transitive dependencies), following rules specified by the packages.

I thought we were talking about situations in which following those rules still leads to a runtime fault. Which is certainly possible, but in my experience a highly overstated risk. Packages that say they will work with `foolib >= 3` will very often continue to work with foolib 4.0, and the risk that they don't is commonly-in-the-Python-world considered worth it to avoid other problems caused by specifying `foolib >=3, <4` (as described in e.g. https://iscinumpy.dev/post/bound-version-constraints/ ).

The real problem is that there isn't a good way (from the perspective of the intermediate dependency's maintainer) to update the metadata after you find out that a new version of a (further-on) dependency is incompatible. You can really only upload a new patch version (or one with a post-release segment in the version number) and hope that people haven't pinned their dependencies so strictly as to exclude the fix. (Although they shouldn't be doing that unless they also pin transitive dependencies!)

That said, the end user can add constraints to Pip's dependency resolution by just creating a constraints file and specifying it on the command line. (This was suggested as a workaround when Setuptools caused a bunch of legacy dependencies to explode - not really the same situation, though, because that's a build-time dependency for some packages that were only made available as sdists, even pure-Python ones. Ideally everyone would follow modern practice as described at https://pradyunsg.me/blog/2022/12/31/wheels-are-faster-pure-... , but sometimes the maintainers are entirely MIA.)

> Numpy 2.0 is a very recent example that broke most code that used numpy.

This is fair to note, although I haven't seen anything like a source that would objectively establish the "most" part. The ABI changes in particular are only relevant for packages that were building their own C or Fortran code against Numpy.


> `foolib >= 3` will very often continue to work with foolib 4.0,

Absolute nonsense. It's industry standard that major version are widely accepted as/reserved for breaking changes. This is why you never see >= in any sane requirements list, you see `foolib == 3.*`. For anything you want to work for a reasonable amount of time, you see == 3.4.*, because deprecations often still happen within major versions, breaking all code that used those functions.


Breaking changes don't break everyone. For many projects, only a small fraction of users are broken any given time. Firefox is on version 139 (similarly Chrome and other web browsers); how many times have you had to reinstall your plugins and extensions?

For that matter, have you seen any Python unit tests written before the Pytest 8 release that were broken by it? I think even ones that I wrote in the 6.x era would still run.

For that matter, the Python 3.x bytecode changes with every minor revision and things get removed from the standard library following a deprecation schedule, etc., and there's a tendency in the ecosystem to drop support for EOL Python versions, just to not have to think about it - but tons of (non-async) new code would likely work as far back as 3.6. It's not hard to avoid the := operator or the match statement (f-strings are definitely more endemic than that).

On the flip side, you can never really be sure what will break someone. Semver is an ideal, not reality (https://hynek.me/articles/semver-will-not-save-you).

And lots of projects are on calver anyway.


Agreed, this is a big problem, and exactly why people pin their dependencies, rather than leaving them wide open: pinning a dependency guarantees continued functionality.

If you don't pin your dependencies, you will get breakage because your dependencies can have breaking changes from version bumps. If your dependencies don't fully pin, then you they will get breaking changes from what they rely on. That's why exact version numbers are almost always pinned for something distributed, because it's a frequent problem that you don't want the end user having to deal with.

Again, you don't see this problem often because you're lucky: you've installed at a time when the dependencies have already resolved all the breakage or, the more common case, the dependencies were pinned tight enough that those breaking changes were never an issue. In other words, everyone pinning their dependencies strict enough is already the solution to the problem. The tighter the restriction, the more guarantee of continued functionality.

I would suggest reading this comment chain again.


PEP 723 allows you to specify version numbers for direct dependencies, but of course indirect dependencies aren't guaranteed to be the same.


Are you an EU citizen?


Yes


Are you exclusively an EU citizen?

In certain EU countries, data center sovereignty criteria require the management and beneficiaries to also NOT be citizens of another state.


How does this compare to dbt? Seems like it can do the same?


Some similarities, but Bauplan offers:

1. Great Python support. Piping something from a structured data catalog into Python is trivial, and so is persisting results. With materialization, you never need to recompute something in Python twice if you don’t want to — you can store it in your data catalog forever.

Also, you can request anything Python package you want, and even have different Python versions and packages in different workflow steps.

2. Catalog integration. Safely make changes and run experiments in branches.

3. Efficient caching and data re-use. We do a ton of tricks behind to scenes to avoid recomputing or rescanning things that have already been done, and pass data between steps with Arrow zero copy tables. This means your DAGs run a lot faster because the amount of time spent shuffling bytes around is minimal.


To me they seem like the pythonic version of dbt! Instead of yaml, you write Python code. That, and a lot of on-the-fly computations to generate an optimized workflow plan.


Plenty of stuff in common with dbt's philosophy. One big thing though, dbt does not run your compute or manage your lake. It orchestrate your code and pushes it down to a runtime (e.g. 90% of the time Snowflake).

This IS a runtime.

You import bauplan, write your functions and run them in straight into the cloud - you don't need anything more. When you want to make a pipeline you chain the functions together, and the system manages the dependencies, the containerization, the runtime, and gives you a git-like abstractions over runs, tables and pipelines.


I see, this is a great answer. So you don't need any platform or spark or anything. Just storage and compute?


You technically just need storage (files in a bucket you own and control forever).

We bring you the compute as ephemeral functions, vertically integrated with your S3: table management, containerization, read / write optimizations, permissions etc. is all done by the platform, plus obvious (at least to us ;-)) stuff like preventing you to run a DAG that is syntactically incorrect etc.

Since we manage your code (compute) and data (lake state through git for data), we can also provide full auditing with one liners: e.g. "which specific run change this specific table on this data branch? -> bauplan commit ..."


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

Search: