been in the python game a long time and i've seen so many tools in this space come and go over the years. i still rely on good ol pip and have had no issues. that said, we utilize mypy and ruff, and have moved to pyproject etc to remotely keep up with the times.
uv solved it, it will be the only tool people use in 2 more years. if you’re a python shop / expert then you can do pip etc but uv turned incidental python + deps from a huge PITA for the rest of us, to It Just Works simplicity on the same level or better than Golang.
Solved with direnv. Also - in my .bashrc in all of my (many) clients:
$ type uvi uvl uvv
uvi is a function
uvi ()
{
uv pip install $@
}
uvl is a function
uvl ()
{
uv pip list
}
uvv is a function
uvv ()
{
uv venv;
cat > .envrc <<EOF
source .venv/bin/activate
EOF
direnv allow
}
You're welcome to live in the 90s dark ages, I feel this attitude and the shape of the old linux distros like Debian that laboriously re-package years-old software have been one of the biggest failures of open source and squandered untold hours of human effort. It's a model that works okay for generic infrastructure but requires far too much labor and moves far too slowly with quite a poor experience for end users and developers. Why else would all modern software development (going back to perl's cpan package manager in 1995) route around it?
If not, do you develop software with source dependencies (go, java, node, rust, python)? If so, how do you handle acquiring those dependencies—by hand or using a tool?
Mostly no, sometimes I give up and still use pip as a separate user.
> If not, do you develop software with source dependencies (go, java, node, rust, python)? If so, how do you handle acquiring those dependencies—by hand or using a tool
I haven't felt the need to use Go, the only Java software I use is in the OS repo. I don't want to use JS software for other reasons. This is one of the reasons why I don't like Rust rewrites. Python dependencies are very often in the OS repo. If there is anything else, I compile it from source and I curse when software doesn't use or adheres to the standard of the GNU build system.
Thanks for explaining your workflow. It seems predictable, but like it really locks you into one of the few (albeit popular) programming languages that has many/most of its development libraries repackaged by your OS. There are plenty of very popular languages that don't offer that at all.
Go and Rust, specifically, seem a bit odd to be allergic to. Their "package managers" are largely downloading sources into your code repository, not downloading/installing truly arbitrary stuff. How is that different from your (presumably "wget the file into my repo or include path") workflow for depending on a header-only C library from the internet which your OS doesn't repackage?
I understand if your resistance to those platforms is because of how much source code things download, but that still seems qualitatively different to me from "npm install can do god-knows-what to my workstation" or "pip install can install packages that shadow system-wide trusted ones".
I very much appreciate the sentiment - and agree that random crap (particularly some of the insane dependency chains that you get from NPM, but also Rust) in which you go to install a simple (at least you believe) package - and the Rust/NPM manager downloads several hundred dependencies.
But the problem with only using the OS package manager is that you then lock yourself out of the entire ecosystem of node, python, rust packages that have never been migrated to whatever operating system you are using - which might be very significant.
How do you feel about Nix? It feels like this is a nice half-way measure between reliable/reproducible builds, but without all of the Free For all where you are downloading who-knows-what-from-where onto your OS?
In general I agree with you. But not for software dev packages.
The package manager I use, apt on Debian, does not package many Python development repos. They've got the big ones, e.g. requests, but not e.g. uuid6. And I wouldn't want it to - I like the limited Debian dev effort to be put towards the user experience and let the Python dev devs worry about packaging Python dev dependencies.
What’s the point of constraining oneself to what is in the OS package manager? I like to keep my dependencies up to date. The versions in the OS package manager are much older.
And let’s say you constrain yourself to your OS package manager. What about the people on different distros? Their package managers are unlikely to have the exact same versions of your deps that your OS has.
> What’s the point of constraining oneself to what is in the OS package manager? I like to keep my dependencies up to date. The versions in the OS package manager are much older.
I favor stability and the stripping of unwanted features (e.g. telemetry) by my OS vendor over cutting edge software. If I really need that I install it into /usr/local, that it what this is for after all.
> And let’s say you constrain yourself to your OS package manager. What about the people on different distros? Their package managers are unlikely to have the exact same versions of your deps that your OS has.
This is a reason to select the OS. Software shouldn't require exact versions, but should stick to stable interfaces.
Geospatial tends to be the Achilles heel for python projects for me. Fiona is a wiley beast of a package, and GDAL too. Conda helped some but was always so slow. Pip almost uniformly fails in this area for me.
Yeah I gotta agree here, I'm not sure I've seen someone so opinionated with python. I tend to try to use things built into python or official recs until I hit an actual problem that needs to be solved.
This is why I'm not posting this article to my team's slack. There's some good stuff in the article, but my team also has some well-meaning over-optimizers that will see this and start throwing in orjson even though json (de)serialization is an insignificant impact to our execution time, or loguru even though our code base has stupidly simple logging requirements, and they'll do it because they'll see this article stating authoritatively that those are the correct choices without considering the value of simplicity, the longevity of standard libraries, or whether the problems those libraries are trying to solve actually apply to us. And they'll do that because the author of this article failed to address or even acknowledge ANY of those concerns.
Google is making a huge amount of progress in UI and UX; the company has historically been rather mediocre in terms of it's UI and UX, while Apple was always the star. Over the past year or so the roles have reversed, and Google continues making strides towards unifying their applications in a single user experience and ui paradigm that allows for simpler app use, particularly for new users.
It's easy to get upset when things change, but keep in mind that change can be positive and/or negative.
> allows for simpler app use, particularly for new users
Are you kidding me? So called "flat design", with nondescript icons indistinguishable from the surrounding text, is the worst thing ever for new users. How am I supposed to know that I can click (er, I mean, touch) something?
I'm not saying every choice they made is perfect. One of my qualms is the lack of backgrounds for button selection in areas with 'ok' and 'cancel' - which is one of the most important areas to give the user clear direction.
I've had Lollipop for over a week and I generally don't find lack of affordance in the UI. It's very clear what is clickable and what isn't. (there are a couple of very minor exceptions I can think of)
Logging into youtube will, by default unless you know about it and turn it off, associate every video you view with your G+ profile for your gmail account, so every person you correspond with can look up your video history.
The other really frustrating thing is when you log out of Gmail, you are not actually logged out. You will be presented by a pseudo-looking login screen, which is really just an authentication screen to get back to Gmail.
What really happens is they keep you kind of logged in to collect as much data on your searches, videos, etc. The way to actually log out is:
- Click logout in Gmail
- Click "Sign in with a different account" (!)
- Click "Remove"
- Click the X next to your name.
- Click Done
It feels like they are trying to trick you into staying logged in by making the logout process extremely obscure and difficult, and I really hate it when I'm being blatantly tricked like that. With existence of evercookies (http://samy.pl/evercookie/) I am somewhat skeptical that even that obscure logout process actually logged me out.
This is pretty much the strongest reason why I don't use the GMail UI anymore (there are others, but this alone would have made me stop).
It appears to have changed in the last few months, and it didn't show full history, so I'll take it back slightly, but you can still see other Youtube users favourites/subscribed: https://www.youtube.com/user/whoever
Some people have a link from their G+ to their youtube, but it seems not to be there for everyone any more.
In some apps, yes, but in many others they are just as atrocious as they've always been—just adhering to material design a bit more. For example, Chrome on iOS has a pretty wonderful UX but Maps is a shitshow; it takes me several frustrated clicks to do what I want. You can never tell what a UI element does simply by looking at the screen.
Some big companies do, just not the ones you'd probably care to work at. If they make this choice they simply lose out on a certain set of individuals. Their loss, not yours.
Safari on OSX has always had the ability for a user to set their default browser preference (to chrome for example). I wonder if iOS will ever go this route.
I find it odd that Microsoft went to court for doing the same thing in Windows but it's okay for Apple to do it.
They should do it to make users happy. I'd like to be able to more easily use apps like Sparrow and Chrome, but it's tough when they can't be set as the default.
You mentioned the apple docs feel complex to you but I'd honestly recommend truly taking your time and working through them as they really are the best.
As a long time Obj-C/iOS dev, web service interaction frameworks and/or best practices have been lacking for some time now. While RestKit works, it's learning curve is a tad steep and the sheer size of it can be a tad frightening in terms of 3rd party component reliance. If AFIncrementalStore is as great to work with as AFNetworking itself devs may have found themselves a new standard.
If Microsoft could actually release a desktop operating system that is properly designed visually and in terms of user experience, people could actually admire their PC's like they do in all of their stupid commercials. Their market share is so massive that a success in the desktop space could then drive growth in mobile as they actually have build a good UX there.
They have. It's called Windows and it does have a properly designed interface which is very robust and flexible. People not only admire it, they adore it so much that they don't want Microsoft to change it in any way.
I suppose that you think OS X is better? Well, that's like, your opinion man. I disagree and so do millions upon millions of other people.
OP was talking about user experience, not user interface. I don't know anyone who admires the UX of Windows, but lots that enjoy the UI. Examples of the differences: Windows will still show you focus-stealing dialogs that may result in a total shutdown of the OS if you're busy typing. Windows will still by default reboot if you walk away for 15 minutes and it decides to update. Application installation and uninstallation is still a pain for most users. Multiple monitors are not supported well. There are no virtual desktops.
The user experience on Windows is distinctly subpar to every other operating system I've ever used. I know this is my opinion and I know that there are probably millions who disagree with me. But as I've said, I've not met any yet.
The OP was talking about both. They said "properly designed visually". That's the interface. Then he said "and in terms of user experience, people could actually admire their PC's like they do in all of their stupid commercials".
"I don't know anyone who admires the UX of Windows"
Well, I don't know any users who don't admire it. I know users who have the occasional gripe, but overall most people that I know are very happy with Windows and simply don't want to use anything else.
"The user experience on Windows is distinctly subpar to every other operating system I've ever used."
OK. The user experience on Windows is distinctly exceptional to every other operating system I've ever used.
I've used them all too and while Windows may not have every single feature that you personally want, the UX is leaps and bounds ahead for the most important features. Basically, it just works. I cannot say the same for OS X or any Linux desktop where you have to fight with them to get them to do what you want.
Windows has such a great UX, such that if you don't like something, you can change or add it. You can't say the same for OS X. Apple doesn't even allow developers access to the APIs that they use...for instance, for their Dock. So, if you want to replace the Dock with something better...you can't. If I want to replace Windows' taskbar with a Dock...I can do that.
That's the experience that I want. I don't want to fight with the company or the group, to get what I want. You want virtual desktops in Windows? Add them. You want "better" multi-monitor support? Add it. Being the world's most popular desktop operating system has the advantage that many people have developed solutions for your minor complaints.
"Windows will still by default reboot..."
Most people want updates to be applied when their not in front of the computer. If you're in the minority, change the setting.
Let's say I have 20-30 windows open on a laptop connected to an external monitor (I do, right now). Windows 7 has one taskbar, and so it becomes extremely difficult/near impossible to quickly determine which window is on which screen. This could be improved by adding a second taskbar (I think this is coming in Windows 8?) but I think more is needed.
Additionally: some application titlebars can be dragged so the window appears on a different screen, but some cannot. Excel, when maximized, cannot be dragged to another screen.
Back to taskbar issues: My biggest complain pre-Windows 7 was that you could not reorder items. I thought they fixed it, but they actually made it a lot more annoying with W7. I think Windows assumes that each window of an application is related to the other windows (never the case with my workflow) and so you cannot separate them by dragging. Say I have 5 Firefox windows with a few tabs each, where each window's tabs represent a collection of related topics. Now say I have some Word and Excel documents also open that relate to the browser windows. I'd like to arrange Topic 1 from Firefox, Word and Excel on one monitor with their taskbar items together, Topic 2 on the second monitor with their items together, etc. It's very unpleasant and difficult to manage windows on Windows.
Here's the thing...just because you aren't getting something exactly the way you want it...does not mean that the UX is somehow awful for every person using it.
Furthermore, Windows has left the hooks available for people so that they can change something if they don't like it. That's the best UX present any company can give you.
There are plenty of apps out there to modify Windows. As a matter of fact, there's very little that can't be modified. Why don't you just look around for some program to do what you want?
> does not mean that the UX is somehow awful for every person using it.
Oh I know - I was merely giving my own opinion.
> Why don't you just look around for some program to do what you want?
I'm not allowed to. This is a business computer, not a personal machine. Not everyone has the freedom to install third-party software to fix up bad UX in the OS they are using.
>My biggest complain pre-Windows 7 was that you could not reorder items. I thought they fixed it, but they actually made it a lot more annoying with W7. I think Windows assumes that each window of an application is related to the other windows (never the case with my workflow) and so you cannot separate them by dragging. Say I have 5 Firefox windows with a few tabs each, where each window's tabs represent a collection of related topics. Now say I have some Word and Excel documents also open that relate to the browser windows.
There _is_ usefulness to it if people would stop using it as a marketing/advertising tool and try to drive real value (which people need to be doing in general with mobile). We need to find uses within the enterprise or industrial space in combination with OpenCV.