Data Structures is one of the best CS classes I've taken so far. I can now easily solve problems that would have seemed nearly impossible beforehand. I enjoyed it so much that I'm planning on taking an optional class next semester that goes over lesser-known and more advanced algorithms.
Once you know a lot of these algorithms, it becomes painfully obvious which developers haven't learned about them. For instance, I know someone who works as a driver for UPS and they have a piece of software that automatically plans a route to each delivery and pickup. There's a lot of variables such as certain packages that have to be delivered before noon, business deliveries that have to be done before the business closes, etc. The software they are currently using is not efficient at all. It will have them deliver to a building, drive down the street and deliver somewhere else, and then drive back and deliver to the building next to the first one. It's so painful to hear about this software because I've solved a very similar problem in under an hour at a programming competition using Dijkstra's Algorithm and Traveling Salesperson. Obviously, my solution didn't have nearly the same level of variables, nor was it held to "enterprise" standards. However, considering the level of inefficiency the software constantly produces, I'm convinced that it isn't using any standard algorithms but instead some hacked-together solution from a programmer who hadn't learned the established way to solve similar problems.
I guarantee that UPS has had teams of computer scientists, mathematicians and probably statisticians working on package scheduling and routing over the decades. The traveling salesman problem, which UPS package routing is, is an NP-hard problem, which means that guaranteeing an optimal solution is going to take an exponential amount of time. There is no "established" way to exactly solve NP-hard problems with large inputs in a reasonable amount of time. Rather, there are approximate approaches which use domain-specific information to inform what kind of heuristics one can use to achieve a tolerable result.
Totally agree with you. Oddly enough I am currently doing a market research project on commercial applications for Quadratic Unconstrained Binary Optimization (QUBO) and also Constrained Binary Optimization. Anyway we were talking about UPS, and just for reference if I search my 3 degree network on LinkedIn for the combination of CPLEX (an IBM optimization package) and UPS I got almost 400 hits. Now admittedly some of those people used to work at UPS, some work there now. But there are clearly many, many computer scientists, operations research scientists and mathematicians working on these and other optimization problems at UPS.
On the other hand the grandparent comment just illustrates how even with all those optimization resources individual "decisions" may still be stupid in the moment even though the overall solution is "good enough".
I know this personally because I took Computer Information System in college and not Computer Science. So we covered databases, but more or less glossed over a lot of important algorithms which I'd have loved to have later in life.
Though there is some benefit to having a business degree as well so it's not all bad.
Mark Rober's dart board was much, much harder to create. The projectile was smaller and faster, and the board had to move to a much more precise location. Shane's backboard only has to track a normal speed basketball and has a decently sized margin of error. Not trying to discount Shane's work at all, it's still very impressive, but not nearly as difficult a problem as what Mark Rober solved.
I've been using Teams at college for over a year now and at work for a couple months. It baffles me that there are simple, obvious bugs that have remained all that time.
For instance, on the Windows desktop app, the word "I've" gets marked as incorrectly spelled. When you click on it to see the spelling suggestions, it suggests "I've". Clicking on the suggestion does nothing and it continues to flag it. This has been an issue in the app for over a year and I refuse to believe that the developers are unaware of it. It's a very common word to be typing.
Another problem is sending files or images. You have to wait for it to finish uploading before it will let you send the message. Not only is it pretty slow (I would estimate 1MB/s, whereas Discord uploads at my full 12MB/s), but sometimes it won't let you send for a couple seconds even after it finishes uploading.
A couple months ago Teams added read receipts, which is really nice, but they don't always work. My work has them globally enabled and everyone is on the latest client, yet each person only sees them for certain other people. I don't see them for anyone, but my coworker sees them for about 50% of our staff.
Notifications are also buggy. Teams will just randomly decide to not give you notifications for messages or calls. I've missed multiple messages in Teams for days because it never alerted me. I had to actually open the specific chat with that person before I saw the message. I've gotten into the habit of checking Teams every 15 minutes because of this. Teams for Android also seems to send notifications a good 30 seconds before the desktop app does, so I usually keep my phone on my desk solely for Teams notifications.
I would also like to point out that Microsoft built a general-purpose notification system into Windows, yet Teams uses a completely custom notification system. This completely baffles me as they aren't even following their own company's best practices.
> For instance, on the Windows desktop app, the word "I've" gets marked as incorrectly spelled. When you click on it to see the spelling suggestions, it suggests "I've". Clicking on the suggestion does nothing and it continues to flag it. This has been an issue in the app for over a year and I refuse to believe that the developers are unaware of it. It's a very common word to be typing.
The spelling situation gets better than this. You're actually forced to use the Teams one. For example, on MacOS, text fields get "free" spelling and grammar by the OS, which honour whatever settings you've configured. Of course, Teams doesn't use MacOS text fields, so they're on their own.
I live in France and so use French in Teams, but I absolutely hate having programs in several languages so all my programs are in US English. If I set Teams to use English for the interface, guess what language it uses for spelling? I'm still looking for a way to tell it in which language to check spelling, but we'll have probably switched to the next shiny thing until this happens...
I'm fine with paying over $60 as long as the game is well made and does not contain non-cosmetic micro-transactions. I think the recent influx of micro-transaction-heavy games and incomplete games is a sign that the current standard triple-A price tag is too low and the developers are having to ship early or use other monetization schemes to support themselves.