Guido van Rossum joins Microsoft
twitter.com
twitter.com
Congrats to him for finding something fun to do in retirement - dictators usually end up with a different outcome. ;)
I'm looking forward to seeing the future of Python - I think this move will be great for the whole community, and lets him push boundaries without being bogged down on the management side.
The biggest hurdle to python right now is the stupid package managers. We need cargo for Python.
I strongly suspect that devs' satisfaction with Python is strongly correlated with the size of the codebase they're working on. Generally people using Python for one-off projects or self-contained tools tend to be pretty happy. People stuck in sprawling enterprise codebases, with O(million) lines of code to wrangle, seem almost universally miserable with the language.
What I've observed a lot is that many startups or greenfield projects start with Python to get an MVP out the door as fast as possible. Then as the scope of the software expands they feel increasingly bogged down and trapped in the language.
But a plurality of the people I encounter in the Clojure community came there because leiningen (Clojure's package manager that uses Maven under the covers) "just works" and they got tired of having a tough time reproducing builds consistently on other platforms / OSs with Python; not to mention the performance gains of the JVM.
You don't want that. When companies "sponsor" things they try to take them over, unless it's a pure donation, which is rare. The community then drops out because a company is in control. Later the project is abandoned by then company. It's a slow death spiral.
I would love if Guido could create a new PEP for extending modules with generic namespaces, ala Perl/CPAN modules.
There aren't 15 different libraries for doing the same thing in Perl, there's 1. You never replace it, you extend it by making a new module in a hierarchical namespace. The same core library's code might not change in years while new extensions can keep popping up. So even if you think Requests sucks, you can make Requests::UserAgent which inherits Requests code and extends it / gives a better interface. And these can be written & packaged by completely different authors.
Then maybe Pypi wouldn't have 5,000 nearly identical yet mostly unusable modules, or modules with nonsense names.
https://guix.gnu.org/en/blog/2019/gnu-guix-1.0.0-released/
https://guix.gnu.org/en/blog/2020/gnu-guix-1.1.0-released/
(Although the maven package ecosystem seems ideal to me, Gradle is just "good enough" - it's mostly the standards around versioning and tooling dealing with versioning and everything being there that makes it good to me).
It should be heavily promoted as the official option and included with the distribution.
I was already in love with Python, but Poetry has definitely made me a much happier Python developer.
Need something like cabal. And a package index.
Have never used cargo - what can cargo do that conda cannot?
The XKCD comic on Python package managers/Python environments is not an exaggeration. I've always wanted to get more into Python but every time I attempt to, it's this hurdle that dissuades me.
Edit: Also, I guess Poetry is another thing that came along since my last attempt.
That is some reasonable way to deploy to someone who is not a programmer nor tech person.
Not sure how much has changed since this was written: http://effbot.org/pyfaq/can-python-be-compiled-to-machine-co...
PyInstaller.. well.. it works okay with std.. sometimes it does not. It is the Electron solution.. add pandas to a project and you get a 600MB install.
As developers we can manage to deal with package managers.
Same customer, another project, I'm experimenting with a deployment system based on git format-patch. It copies the patches on the server (we have only one server) and applies them with patch. Then restart the web app.
It's fun to learn the internals by rewriting the tooling but a good tooling to start with would be better.
If anything, this further corporate influence on Python development is not something to be applauded. I bet there will be lots of more churn in the next five years, big announcements and no results.
I guess he is going for a Diocletian cabbage farmer style retirement.
This is cool though. I'll be curious to see what he works on.
It's so ridiculous to see these replies. So Microsoft should've sent Guido van Rossum a note saying, hey study algorithm/DS for at least a month and do 100 leetcode before you come talk to us or it's a waste of time, thanks, bye.
Discussions of the industry tech interview process are now poisoned by these factors:
* There is an entire industry built around tech interview prep now (books, websites, practice/mock interviews). Many would defend this practice because their paycheck directly depends on it.
* Many see this as a hazing ritual that protects their high compensation and often their egos as well. These people are often young and will eventually see how harmful these interviews are when they get older and need to switch jobs. But by then there will be a new generation of young engineers defending the practice.
We use shitty algorithmic questions as a proxy for answering the above question (in the vast majority of cases).
Google bureaucracy expected from Ken Thompson (!) to pass a C language exam (!!).
https://www.theregister.co.uk/2010/04/21/ken_thompson_take_o...
"So Mr Thompson, you say you have some programming skills"
It'd actually be really, really cool if more than few people of Guido/Linus/etc's calibre did go in for some of the whiteboarding interviews (under an anonymous resume of course).
As both of them explicitly acknowledge - they don't (or no longer) consider themselves as top notch "coders" as such. Linus has said something like "I'm not even a programmer anymore" recently. And Guido said something like "I'm not the best Python coder by far - on a scale of 1-10 I'd say I'm at most a 6". Not because they're lousy coders of course. Just that (in recent years) they've had far, far, far bigger fish to fry.
So they go in, and "fail" the contrived Sudoku / Knapsack / "build me an Instagram clone, please" problem... then get strung along and gaslit for a while, before receiving an email 6 weeks later tell them that they're "not a fit".
That would be lots, and lots of fun to see.
Or you know... an algorithm and data structures class that's part of a serious Engineering/CS curriculum.
(Runs for cover)
I'd imagine no matter the problem he would breeze through an interview and leave the interviewer with some enlightenment on programming. It wasn't necessarily about whether the code was "correct". I remember once interviewing a ~20-year old for the summer program who when I gave him a problem he started talking about some linear algebra and geometry that I didn't even know were relevant but quickly made sense to me. But he was so humble about it, and looking to me like he wasn't sure if it was the right approach to take (It was hard to keep a poker face and not give away that he was a "definite hire" after about 5 minutes). His 5-liner to solve it had one bug but he clearly "passed" with flying colors. Unfortunately for us he ended up joining a startup in SV (and now is doing big things there).
Well, after seeing what happened to Leslie Lamport, i don't have high expectations.
And to be clear: If you are unable to solve these common algorithmic questions that companies like Microsoft ask, then that's not the right place for you to work. This is a tangent, but there are literally thousands of companies that won't require you to solve these problems. The thing is, at Microsoft & co. you don't just do this in an interview. You do it at your job too. We do foundational work in many teams and we need to solve algorithmic problems practically every week. If you are unable to code yourself out of a DP problem or scared of NP completeness and approximation algorithms, then maybe find a different job instead of complaining about the interview process?
1. This is Guido van Rossum. If I were him and asked to solve puzzles, I'd tell the hiring company to fuck off.
2. These quizzes aren't so bad, but the pressure and stakes make it incredibly stressful. There's no standard, and often times the interviewer is the one that sucks.
> We do foundational work in many teams and we need to solve algorithmic problems practically every week. If you are unable to code yourself out of a DP problem or scared of NP completeness and approximation algorithms, then maybe find a different job instead of complaining about the interview process?
I'm pretty sure your opinion here is not that of your employer.
I really just want to thank you for putting this useless mentality on display.
I had a Nobel Prize winner as a physics professor in college who got three successive different wrong answers when attempting a freshman physics problem in office hours. That doesn't mean that physics isn't the right place for him to work.
Google or Wikipedia can tell you who Guido van Rossum is.
(that said, my path to being hired did involve writing a sudoku solver, but that wasn't in an interview for a position at Microsoft)
Keep telling yourself that as you fix mindless bugs in some Advertising platform lol.
Oh so that's why the Azure Portal UI is such garbage. Their frontend developers are just busy solving knapsack problems...
""" Python's BDFL-emeritus, Distinguished Engineer at Microsoft, Computer History Fellow. Opinions are my own. He/him. """
Lol! I'd bet my year salary they didn't.
Programmer here. It's true. I deal with NP completeness every day.
No way they even considered doing it... That's for people out of college...
The problem is rewarding rote memorization in a whiteboard interview, at the expense of actual understanding, and ability to research the problem.
Senior engineers in such companies need to work and cooperate with hundreds of people. If they find solving such problems beneath them, or expect to be treated as a higher class of person, or not willing to get hands dirty, they will not be as valuable as employees. (Occasionally, the lone genius is great, but the lone genius is a worse employee than the genius that can cooperate well)
My company would keep doing such interviews, but the expectations change of course. A new grad needs to do these well. More senior people can do worse, and make up for it using other skills showcased in other interviews, or based on their record.
But if you find a senior person that finds solving algorithmic questions is beneath them, you might want to be careful about them and how they will interact with your company’s culture.
I mean, it's OK to ask for basic algorithms in interviews, to see if the interviewee has at least some understanding of basic stuff and/or can think on their feet and/or can reason about problems appropriately...
But I would still welcome it if instead of giving an interviewee a boring, memorizable problem like "invert a binary tree", the interviewer would find a more general problem and would see how the employee would tackle it, and if the interviewee refers to binary trees as part of the solution without writing out a full implementation from memory that's OK (as long as binary trees would be a valid approach to solve the problem, of course).
If you tried to implement those algorithms on my team without a very good reason, there would definitely be some serious conversations that followed.
In any case, vomiting algorithms on command doesn't seem to correlate strongly to programming ability. Almost all programming problems have a lot more to do with handling much higher-level complexity issues. The knowledge and art of knowing how to poke some undocumented third-party API to implement our system is much more practical. Knowing how to think at a high level is much more practical. Leave algorithm questions for research positions in that area.
We just need some PHP, Rust and Swift magic to complete the picture."
But as far as Java, JavaScript and C++, I am not who the luminaries are, that work at Microsoft. James Gosling and Stroustrup don't work for Microsoft.
Now that Microsoft Edge is powered by Chromium, there are many folks that also contribute/ have say in development of chromium and nodejs.
This is just a rumour, but Microsoft aggressively hired Chromium devs from Google.
Basically Microsoft wants to build the best tooling for the most popular languages. They have Github + VSCode. Who knows they may also acquire stackoverflow. It's in their realm.
For example Brett Cannon is also at MSFT, he is a core developer and member of steering council for Python, he also qualifies along Guido for this claim in Python.
They want a golden path from their developer-facing tools (TypeScript, VS Code, C#) to their monthly services (GitHub, Azure, Teams). They're going to make all of that work together as well as they can so you won't want to look elsewhere.
Frankly, it's ingenious. If it works, the hard-to-monetize value of open-source projects like TypeScript and VS Code will be captured in your monthly Azure bill.
Who is next? Ryan Dahl? Rob Pike? Larry Wall? Rich Hickey? DHH?
After a few years of competition, they can just shut down the teams working with the least effective languages.
Using this methodology, Microsoft will end up using the best tools for the job. And they can accept people from any subculture for a few years while the experiment is going on!
This is the "developers developers develop" we have all been waiting for!
The monopolistic DNA still runs strong in Microsoft. They are behaving nicely only where they have no advantage.
I don’t buy the “new Microsoft”, not one bit.
Having said that, aside from the pdf glitch I'd say it works very smoothly, exactly the way they intended.
Windows 10 should have been so much more and so much easier for Microsoft to rapidly evolve in a more beautiful fashion. But I guess there's just so much enforced backwards compatibility within it that their hands are almost tied behind their backs. Everything is ran in the same system on equal footing, from Windows XP era stuff to whatever the latest "app" trends are. Unsurprisingly it becomes a mess.
Windows 10X looked to be the right way forward where they finally decide to just run everything Win32 in light weight containers to shed all that dead weight for a more maintainable system, but it's sure taking a while to see anything and I hear the ARM edition that will be essential isn't going all too well. We're looking at a completely different, really troublesome, performance in 10X for x86 on ARM than macOS Big Sur and Rosetta 2 on Apple M1 that is already about to ship/shipping.
This. Just look at gaming. Xbox is losing, so they champion pro-consumer cross-platform multiplayer. Minecraft is popular, so they kill GNU/Linux support with Bedrock Edition.
Maybe MS could catch the wave of "old-school" versions that are all the rage (e.g. WoW, Runescape), and release a Win95 flavour of Windows that runs on current hardware.
I miss the "old-school" GUI conventions and simplicity of - gulp - 25 years ago.
My biggest problems with Win10 are far more mundane - the incomplete/buggy touch interface, the explorer bugs that are old enough to drink, the new signed-executable security model that is very OSS-hostile (but again, imported from mobile OSes). The fact that half the configuration screens are in the new Settings system and half are in the old Control Panel, where you'll even bounce back and forth to tweak a single component.
> hijacked the PDF association
Alternative: The person has an in-built PDF viewer without scouring the web for "PDF viewer" and downloading malware or a sketchy app
> used credentials stored in Office to log in to Microsoft.com “for convenience” without asking
Alternative: "Wow it's cool how all my Microsoft things are working well together"
I think there's room for grace about the experience of 99% of users who don't want infinite customization but something that works well with helpful defaults.
UWP is wonderful too.
They're making it more obscure, though
This isn't at all true. Accounts > Family & other users > Add someone else to this PC. Took me 20 seconds to find this setting.
It is their right, of course. But I don’t buy the “new Microsoft” ethos.
I feel like if I reached the FIRE point, I would continue to work, but entirely on my own terms, not as an employee of somebody else. Even at my favorite jobs, where I got to spend the majority of my time doing interesting things, having to deal with red tape, institutional slowness, upper management, etc. was not fun, and I can't imagine it getting any better when you know you are now working only because it's your hobby.
This is a rational position for folks like us who a) work to live, and b) probably haven't built anything to the level of the second most popular language in the world.
Now say you're Guido. I don't know him, but I feel like we're on a first name basis. Guido is clearly driven to invent, and has developed one of the major building blocks of modern tech. He's probably set for life financially, but Guido has the urge to innovate. Along comes Microsoft, who basically is paying him to do whatever he wants, however he wants. If you're Guido, you take that.
Now if you're me (and it sounds like probably you too), we don't have those kinds of offers, and I personally don't have that specific drive either. Ideal retirement for me is more time in my yard and also probably spending the cold months starting app projects that I'll never finish. The way life should be!
If you want do to something that impacts or depends on other people then it will never be solely on your own terms. Plenty of people burn out of OSS because they think otherwise and then the angry users eat away at them. Likewise being FIRE doesn't mean you have unlimited resources so if you want more resource you will need to get them on someone else's terms.
I've known a number of senior people at these companies that basically get to do whatever they want, pitch projects and then have teams whose job is to work out the details. Their name provides so much political clout that the org bends around them rather than the other way around.
Personally I work at startups as a hands on manager so generally haven't had much red tape, institutional slowness, upper management, etc. hassles to deal with. Would continue doing so if I reached FIRE although might cut down my hours.
ADDED: As Denvercoder9 writes, some companies/groups can be pretty good about being hands-off a senior person who they want and also know doesn't need the job. Others, of course, are not. Certainly many Sun folks did not sit well with Oracle.
I'm right there with you - this is my number one goal for FIRE, is basically to not have to put up with anyone else's idiosyncrasies but my own. The only way I could see that changing is if I see a group of people worth working with, or a project worthwhile enough to work with other people, or I would feel an obligation to be a mentor to others.
I still remember the first O'Reily pink Python book waiting on my desk back then when I joined.
Yes. Obviously people have different tastes, but many many people find Python to be tastefully designed.
> It basically ignored Scheme, ML, and Erlang dialects from its creation onwards.
Those are... all radically different languages from each other.
This is like arguing that a peanut butter and jelly sandwich would be better if it was more like sushi, chocolate, and pasta.
Makes you think about how important the syntax for a language is.
OTOH, there is no much benefit today in Clojure over other languages for database backed apps, most of what is considered good Clojure code is more about the methodology than the language per se. The real benefits IMO is when you paired it with Datomic avoiding the impedance mismatch in data structures, but Datomic is another can of worms.
They let Anders Hejlsberg have free reign over his languages, encouraged it in fact.
Anyway, congrats to both MS and Anders! This will be very interesting for Python.
That already exists, and van Rossum worked on it: http://mypy-lang.org/
EDIT: As mentioned below, also added Pyright [2] by Microsoft
[0] https://github.com/facebook/pyre-check
My wife used to work at Dropbox when Guido worked there. Apparently he was quite active on the company-wide mailing lists, even talking about mundane things like the food or parking.
So MSFT employees you may get a chance to chat with Guido!
Interesting that mypy is a Dropbox (GvR’s previous gig) whereas Microsoft has a competitor python type checker, pyright [0]. Anyone have experience with it?
Reason is MS doesn’t need to make money on the tool, because it has a halo of services it can sell in and offer perfect integrations for.
In addition, MS has GitHub and thus privledged ability to learn from new public code as it is pushed.
AI-based code completion offered by kite and tabnine is totally being slept on right now, and MS has the resources to offer a very refined and constantly improving take on this massive dev services opportunity.
Jetbrains has said it has a long term project focused on this but as of now there is nothing.
I am not suggesting abandoning Pycharm any time soon but it is going to take a bigger company than jetbrains to keep pycharm in the race against vscode.
I wonder if Guido will be ok with that. For me pylance looks like the biggest evidence that embrace-extend-extingish mindset is still alive in Microsoft, unfortunately.
Not really "instead of", since pyright is the typing engine for pylance.
I'd be thrilled if Guido and Microsoft could help make this better!
If non-programmers don't even want to run a few command in terminal like pip, why do they even want to start with python? The whole mentality is wrong.
As for installing apps written in Python - that's really down to the developer. A desktop app would normally just bundle Python for its own local use, similar to what Java apps do, and users are none the wiser - to them, it's just another installer. Some examples of such software on Windows include Calibre and CHIRP.
But I agree, it's a slog to set up everything on a computer, if you wish to install Python from scratch, along with some IDE.
Sorry, throwaway account! Apparently I was the one who was wrong!
I tried to convince Guido to do a P# April Fool's (I think in 2005 or 2006), but he disliked the idea so much I didn't do it myself either.
It has transformed since into: https://microsoft.github.io/coyote/
The finance folks I work with are fucking wizards. I'm convinced many of them would have made great engineers given what they can accomplish building applications in what might be the world's worst IDE.
It was one of my first usages of Python, and used that to create quite complex Spreadsheets
They did officially respond in 2018 and put out a survey for thoughts, don't think they've followed up since but they definitely know demand is there.
He must have no imagination. When I had a day job at a big company, I would start working on open source in the afternoon as soon as I got home from work then I would stay up late working on it. The next day I would be tired and depressed that I would have to go to the office to work on some useless product and could not wait to go back home to continue the real work.
Speaking of Python in particular, there are people at Microsoft who get paid for, among other things, working on Python itself.
All CPython alternatives stall do due to the widely used C API (required for NumPy, TensorFlow, etc). This API is very CPython specific.
There is some work on both sides, that might overcome the issue though: CPython is trying to decouple API from the implementation details, while .NET is working on better C interop story (.NET 5 just introduced ability to export managed functions as C functions).
Care to explain what's worrying you though?
There was also IronPython added when the DLR came out and is still updated to this day, latest works in .NET Core. [2]
It would be fun for Python to have more focus with Microsoft tools and some things on Azure or even another Boo/IronPython like CLR/DLR virtual machine language or more focus on IronPython itself as well as more of CPython. Having Guido at Microsoft is awesome.
[1] https://en.wikipedia.org/wiki/Boo_(programming_language)
Besides, while you lose out on Python's native ecosystem you gain access to all of .net's.
Full disclosure, I'm one of the <many> maintainers working on a subset of the Azure Python SDK. Currently, there actually _is_ a large-scale rewrite in progress to bring the various SDKs up to a consistent level of quality and python standards, since it's no secret the original batch of SDKs grew rather organically. As such, this is a VERY APT time to hear this sort of comment. (And yes, I'm taking it totally deadpan even if it wasn't necessarily meant that way :P)
Do feel encouraged to file issues on the azure-sdk-for-python github as well as things come to mind; there are more formal triage processes there than "I happened to read this over lunch" :)
Disclaimer: some (or maybe all?) of the things I'm mentioning here might be caused by the API itself, rather than the SDK. The order is in which it comes to mind, rather than importance.
1. Some kind of strongly typed errors. I've turned the SDK upside down, and the only error that seems to pop up 90% of the time is CloudError with CloudError data. So our SaaS application (which utilizes Azure IaaS heavily) has a bunch of regexes that parse the messages contained in CloudError and throw something from our domain. Wrapping SDK errors by the implementing clients is a smart thing to do, but not this way :). Some messages change from time to time, so we try to make our regexes more tolerant, but you get the picture. In general the error handling is very strange, a lot of low-level errors sometimes flowing into high-level calls.
2. Documentation with more examples. The easiest thing to do is sometimes looking at the API or CLI documentation, and try replicating it with the SDK. Parameters named differently etc.
3. For some reason the Storage API/SDK keeps changing and it's like it's from another world than compute and network, which look pretty similar. The storage portion is... wild.
4. Improved working with data disks. Updating the VM with an array of disks has shown bad performance (and Azure support helped us and said that it can't be improved because it's a cross-RM event) but also poor reliability. A separate set of methods to attach/detach disks to VMs would be great.
5. Because we heavily rely on asynchronous operations, what we usually do is make a raw HTTP request for an operation (like VM deployment), serialize it and store it, then after some time deserialize it and check if the operation is done. We do the same with hundreds of requests at the same time, being able to process a lot of cloud operations with not much resources on our side :) . It works, but I found the raw request and serialization is a bit clunky. We're also stuck with a couple of older SDK libraries because we've noticed the raw responses changed in the newer ones, so now we need efforts to find all of the differences and consolidate the serialization. For example, the headers have had multiple urls to check the deployment status, sometimes it's `async-url`, sometimes `location-url` etc. This probably isn't something the SDK is to blame, and this is a niche case, but serializable async responses would be nice :D .
I have to commend the effort to break up the libraries from the original SDK into independent units. The versioning and dependency management became easier than with than one monolithic "4.0.0" schema.
Maybe some of the things are out of scope and our use-case is disproportionately affected by some stuff, it's just my two cents. I'm less satisfied with Azure as a service, with its unreliability, sub-par support, idiosyncrasies and poor "hypervisor" performance, than the SDK, but it's the SDK that gets all the blame because it's the one we're interfacing with.
And Bob Dylan?
Van Rossum is famous for the Python language and language-related stuff for Python, but he did stuff in his career before inventing it and has done stuff since (for instance, a lot of his work at Google was on App Engine).
There's a phrase you don't see every day.
Wow, really? I'm a big fan of Clojure and F#, but IDK, I think there is a bias against functional languages since they, IMO, are harder to start doing stuff.
Maybe? A likely first step would probably be something like an Electron fork/distro with Python built in, along the lines of the abandoned PythonWebkit: https://www.gnu.org/software/pythonwebkit/
"Something went wrong, but don’t fret — it’s not your fault."
Took me a moment to realize that statement wasn't in reference to the statement "Guido van Rossum joins Microsoft".
About $200k/yr+, it's a good idea to find a lawyer or similar talent agent to workout the compensation package because they have the skills and can get away with things a hire cannot. I've done this before, it saved time, and ended up with a better package.
On a more serious note, I hope Van Rossum and Hejlsberg spend lots of quality time together and thoroughly pick each other's brains. This could result in great things in the programming language space.
I might need to branch out into other languages.