The only difference is the bandwidth: vps in europe givr you 10 tiles that, unmeterred.
Very cool for training: I can make people log into those vm and deploy nginx just for learning.
24,628 karma · joined October 21, 2019
https://www.bitecode.dev/
Email: contact at bitecode.dev
The only difference is the bandwidth: vps in europe givr you 10 tiles that, unmeterred.
Very cool for training: I can make people log into those vm and deploy nginx just for learning.
Now I believe unzip releases the GIL already so we could already benefit from that and the rest likely don't dominate perfs.
But still, rust software is faster on average than python software.
After all, all those things are possible in python, and yet we haven't seen them all in one package manager before uv.
Maybe the strongest advantage of rust, on top of very clean and fast default behaviors, is that it attracts people that care about speed, safety and correctness. And those devs are more likely to spend time implementing fast software.
Thought the main benefit of uv is not that it's fast. It's very nice, and opens more use cases, but it's not the killer feature.
The killer feature is, being a stand alone executable, it bypasses all python bootstrapping problems.
Again, that could technically be achieved in python, but friction is a strong force.
- uncompressing packages while they are still being downloaded, in memory, so that you only have to write to disk once
- design of its own locking format for speed
But yes, rust is actually making it faster because:
- real threads, no need for multi-processing
- no python VM startup overhead
- the dep resolution algo is exactly the type of workload that is faster in a compiled language
Source, this interview with Charlie Marsh: https://www.bitecode.dev/p/charlie-marsh-on-astral-uv-and-th...
The guy has a lot of interesting things to say.
- the first and MAIN reason is excellent windows support. Nobody wants to say this, but it was the first unix friendly community for a good scriting language to not shit on windows users.
- batteries included is frawn uppon today, but it was a BIG deal back then
- python had the best c integration system after lua and got the Numric lib because if that. It became numpy.
- it was dynamically typed, but strongly typed. No ===.
- optional parenthesis for ruby and symbols from perls were a repellant to many C and java users.
- the error messages were better than the competition.
- lisp shell without lisp
- docstrings and help()
- the packaging ecosystem that everybody craps on today was actually the best at the time. Ruby's was AWFUL at the time.
- one of the first scripting language with good namespace. Ruby could have been that but killef it with monkey patching for years.
- python found ground outside of the web unlike php, js and ruby very early
- python devs were willing to work with os devs to improve integration, and so linux and mac got system tools written in python
- django and twisted were amazing at the time. The dev server without apache was a killer feature
- google advertised they used python for the search engine and youtube. Then HN successes like reddit znd dropbox. It became so famous.
It was not inevitable at all. Just a collection of random stuff.
Average time for 100 tests is hence 0.8 ms. Completely normal, and absolutely acceptable, especially for an operation as rare as routing.
Letting my previous comment as-is for historical purposes. And to remind myself I'm a dumbass.
A hundred regex tests, for example, is generally very fast. A quick Python script made them run in 0.85ms. A hundred Flask router tests is 2.64ms.
So I had no reason to think this API would be slow. Surely matching a URL is a subset of generalized regexes and can only be fast? And given that routing is not an activity you do a lot, why would it matter anyway?
But the performances were atrocious: it took 8 seconds to resolve the worst-case scenario on Firefox, and it locked the entire browser UI.
Ok, note to self, stay away from the URL Pattern API.
If the car's owner is a company, the company must declare a default conductor for this purpose.
If you go down to 0 points, your licence is suspended.
If you stay without a fine for long enough, you get back points.
Some countries have fines that depend on how much you make. Some countries will destroy your car if you really behave badly.
Still can't believe people buy their stock, given that they are the closest thing to a James Bond villain, just because it goes up.
I mean, they are literally called "the stuff Sauron uses to control his evil forces". It's so on the nose it reads like an anime plot.
Pyright/pylance were a boon because they were the first non-pycharm good implementation.
But they still have rough edges and will fail from time to time, not to mention the latency.
Sometimes you just need a little matrix shenanigans, and it's a shame to have to bring in a bazooka to get decent ergonomics and performances.
When when you have a problem that perfectly fits the bill, they are very good at it.
The problem is they are terrible at everything else. I/O, data validation, manipulation strings, parsing, complex logic trees...
So I feel like just like regexes, there should be an array language parser embedded in most languages, that you opt in locally for just this little nudge.
In Python, it would be nice to be able to "import j" like you "import re" in the sdlib.
The entire J code base, including utility scripts, a console, a stdlib and a regex engine, is 3mb.
I won't waste more of your time.
- Creation - 8-12x slower
- Lookup - 22-27x slower
- Contains check - 30-34x slower
- Iteration - 5-14x slower
- Merge - 32-158x slower
Except at 10k+ items, batchup dates on 100K+ items or inserting 100 keys.This is rarely the case in practice, most dictionaries and dict operations are small, if you have a huge dict, you probably should be chunking your load or delegating that to infra.
Not to mention pyrsistent's API is incompatible with dicts, so you can't pass it to external code without conversion.
You'd better have an incredible ROI to justify that.
This morning for example, I tested an object serialized through a JSON API. My test data seems to never match the next run.
After a while, I realized one of the objects was using a set of objects, which in the API was turned into a JSON array, but the order of said array would change depending of the initial Python VM state.
3 days ago, I used itertools.group by to group a bunch of things. But itertools.group by only works on iterable that are sorted by the grouping key.
Now granted, none of those recent example are related to dicts, but dict is not a special case. And it's iterated over regularly.
- a lot of C code out there is not safe, so the LLM outputs that
- C encodes way less of the programmer's intention, and way more implementation details. So unless the author is extremely good at naming, encapsulating and commenting, the LLM just has less to work with. Not every C code is Sqlite/redis/ffmeg quality.
- the feedback loop is slower, so the LLM has less chance to brute force a decent answer
- there is no npm/pypi equivalent for C on which to train the LLM so the pool for training is less diverse
- the training pool is vastly Linux-oriented, with the linux kernel and distro system libs being very prominent in the training data because C programs on Windows are often proprietary. But most vibe coders are not on Linux, nor into system programming.
Sure, you can vibe code in C. Antirez famously states he gets superb ROI out of it.
But it's likely you'll get even better results with other languages.
It's not just AI, it's a market fit and quality problem.
They don't need to solve it, however.
Their strategy has been quite clear: make it barely usable so that is passes muster to auditors, integrate it with systems that corporations need, and sell them on the integrations.
Teams and Azure suck?
So what?
Big companies will pay for that, because it's integrated with their ldap, has an audit trail, gives them the ISO-whatever stamp, and lets them worry about something else.
That the users are miserable is almost never the question for the ones signing the checks.
In a world where box-checking is paramount, this approach is a winning strategy.
Common at the time before flash took over.