Reminds me when I got banned from Amazon for suspected fraud (had an old account, but deleted my email and number since it was in a lot of DB dumps). After I got hired, I reached out to the guy in charge of the anti-fraud team at Amazon, and got unbanned. Emails to support etc. did nothing before I reached out internally (unbanned by 1am the next day).
Interesting. I still have a bricked phone from my onboarding at Google, and no internal people cared either. There's a tool I could have used to fix it, but it's accompanied by a message saying that if you use it without permission you'll be fired.
> accompanied by a message saying that if you use it without permission you'll be fired
Probably why none of the internal people cared either. They didn't want to be the person on the line in case it was determined that the usage wasn't valid.
I'm curious how you bricked it beyond repair though. Most devices have a way to enter a recovery/flash mode where you can upload your own firmware from the bootloader. And if you haven't unlocked the bootloader then I don't get how you could have bricked it unless there's an Android bug... which would have probably triggered a more serious look.
Most likely, the tool to upload the firmware from the bootloader required some sort of hardware signing key, which was present within the tool that he wasn’t supposed to use without permission.
> There's a tool I could have used to fix it, but it's accompanied by a message saying that if you use it without permission you'll be fired.
Sometimes I name certain APIs/function names/whatever with a "do_not_use_or_you_will_be_fired" suffix. Generally for hacks I don't want people to copy-pasta. I can't actually fire anyone, but it gets peoples attention (especially more junior folks).
I'd love for this to happen for me. I lost my Amazon account because they miswrote my phone number - having a single leading digit invalid for international use. So couldn't use text MFA and my phone with the OTP app had died the previous day.
If Google Maps would like to hire me so the km/miles switch can remember I only ever want to see distances in km, my contact details are in my HN profile.
I must have changed that back from miles once a fortnight since Google Maps launched 20 years ago. That's 500 times. Totally ridiculous for a company who core goal is profiling their users...
While you’re at it, can you find and punch the guy who thinks it’s a good idea to zoom the map to “actual size, 1cm = 1cm” mode for your entire trip?
I assume he’s also the one that taught it to spitefully let you drive off the side of the screen if you ever zoom out manually so that you can see more road on the phone than you can in real life. (With a “recenter” button that will zoom you all the way back in).
It's funny cuz is true. Except it'd probably be one long design doc with 10 rounds of review, 15 CLs (PRs) and months of rollouts later ... fails A/B due to declining user engagement.
When I was traveling in Mexico, it drove me nuts that even though I was signed in, Google Flights switched my currency from dollars to pesos every single time I opened a new tab! I think they really don't care.
I think they rely on ip for a lot of stuff they shouldn't. Getting a local esim switches me to km until I switch back to my old one. Have no idea about Australia.
Edit: after typing this realized this isn't ip, its provider. That maybe does make sense to cue off of.
Also accepting gmaps work, if only it could preemptively cache the return trip for any trip longer than an hour, so that I'm not stuck with no service trying to remember how I got there.
Wait, there's a setting for this? I've lived in Australia for over 16 years now but everything is still in miles instead of Kms and I have never been able to find a setting to change it (although it sounds like even if I did find itz it would be mostly useless).
Google Maps core functionality is sort of in maintenance mode, and things have been slowly bit rotting over the last 3-4 years.
Unless you want to launch some AI feature (used to be chat app for ten years and then Google got bamboozled by ChatGPT…) you’ll not find allies and your career will not progress.
Another issue with Google Maps is it not showing Plus Codes for some locations that highlight the entire area. If you however place a pin on that location, it provides a Plus Code. Pretty stupid IMHO.
Also it is really, really hard to search for "Nearby" places. Have to do it through "Directions". Really bad UX.
While you’re there can you add a ‘how much I value my time’ input field for tolls? Google suggests I spend $20 through 3 tolls to save a single minute. Constantly.
Edit: and while you’re there, move the ‘speed camera ahead, is it still there?’ Dialog. IT COVERS THE DAMN SPEED LIMIT ICON.
And also while you're there, if no car ever in the history of your app goes down the road at the speed limit ever it's a good indication you'll never be able to ever do it at that speed. e.g. small narrow single lane country roads which are only theoretically 60mph roads.
Imagine the data they must have on the speeds people actually drive on every mile of every road, they’d easily be able to warn you not that you’re “over the speed limit” as in driving 70 on the freeway, but more usefully, if you’re in the top X percentile of speeds usually or even currently driven, which actually is a decent measure of unsafe was and would also be a great predictor of likelihood to get a ticket.
I saw this video recently where the author set up a camera to record sections of highways and measure the speeds of drivers, and make cool graphs out of it.
If you are following a route in Google maps in Apple CarPlay you can’t search in the map without cancelling the navigation. So you need to use another phone or another maps app.
It’s true, except expand that to all big tech companies. The only time UX is changed it’s either to make ads more effective or to “streamline” things by shoving more and more of the functionality into an endless nested chain of ••• and More menus.
Clicking through the links in his article, I came across a guy who apparently did the same thing at Apple - he introduced the "auto remove" feature for expired passes added to your wallet, then promptly quit. I had no idea that's how that feature came about, but now I'm going to send a little mental thank you to him every time I get off a plane. That shit was FRUSTRATING.
Crazy because I remember that the first few iPhone OS versions had really bad autocorrect dictionaries, especially for German. The workaround for that was to make contacts for missing words because contact names never got marked as misspelled.
I need to get a job at Apple to stop “omw”-> “On my way!” (Complete with the `!`) from reappearing in my Text Replacements every month or two, no matter how many times I delete it.
(Try typing “I’m omw to the car” or something to see how annoying this is)
Apparently the current state of the art to fix this problem is to remove it and add an "omw" → "omw" text replacement in its stead. A friend recommended this to me and I haven't had problems with it since. Yes, it's nuts, but it is what it is.
True enough, but considering most websites these days consider "a comfortable margin" to mean "4-6 inches", I'm delighted to see a site which actually lines things up close to the left side of my monitor. Like I said, that's how text should be.
> I added an AbortController to the debounced search function, so that it aborts any previous queries when a new one is made. This means that the search results are always relevant to what the user is currently typing.
To me one of the most annoying things an application can do is go off and do something before I'm done telling it what to do. Filters that apply themselves without an explicit indication that I'm done setting them up, or searches that are constantly re-executing as I'm typing. Wait for me to stop.
I think a good middle ground is to wait a few hundred ms at least, for the user to stop typing, before sending off the query. Or maybe, still send the query, but don't populate results until they stop.
When I implemented search-as-you-type on my blog, I decided to wait for the current search suggestion request to complete before doing a new one. Seemed like a reasonable balance between responsiveness and not overloading the server.
The video showing the problem in the article seems to show an avalanche of queries towards the server, I'm surprised no one cared about it, but I guess it's frontend people thinking "It's the backend/ops that have to deal with the problem!".
I wait about 250 ms before firing the request, if the user (well, me) continues typing, then the timer gets cancelled and the app waits another 250ms.
Firing queries all the time is especially annoying if your users are in another continent, and you don't have proper state management to only show results for the latest query, as opposed to the latest response.
RTT from Europe to AWS us-* can easily get to multiple seconds during peak times.
When I implemented one I simply filtered the results that came back from previous requests to see if they matched what the user had typed in the mean time. That way the UI might get relevant results with lower latency than would otherwise be possible with no risk that a non-matching result would show up to confuse the user.
I hate this on booking websites. Especially if the filters are in a sidebar on the left and do not fit your viewport and every god damn time you change something it scrolls up, starts loading, puts filters into read only mode until it's done just so you can add the next filter...
The article says nothing about the hiring, which is kind of the most important part of the whole escapade. Right now, it's a bit "something was bugging me, and when the company hired me, I fixed it", which, great?
> It reminds me of George Hotz’s legendary single week at Twitter in 2022, where he joined just to fix a login popup that was bothering users, then bounced.
The author remembers this, uh, event differently than I remember it...
George Hotz boldly claimed that he could "fix Twitter search" faster than those lazy Twitter devs, only to bail almost immediately. Hubris!
On the way out, he removed that login popup as a sort of consolation prize.
Well, that's a bit of my time gone (re)looking into GeoHot, patent trolls, and now comma.ai.
Comma.AI by George Hotz sounds very interesting, it's basically a $999 "comma 3x" smartphone with an OBD-II connector and a $99 wiring harness that can add an equivalent of a Tesla Autopilot to many cars manufactured in the last 10 years (even Tesla's own cars, too), for a total cost of $1098, whilst being OSS and available on GitHub, and — get this — even having ssh access to your car! Optional cloud subscription plans are $10/mo for your own SIM, or $24/mo with bundled cellular data.
Sadly, it does NOT have an equivalent of Tesla Sentry Mode yet, https://github.com/commaai/openpilot/issues/29912, which is kind of unfortunate, because Tesla's own implementation of Sentry Mode is using 250W of power — depleting the entire 80kWh battery from 80% to 30% in like 7 days (".5*80kWh over 7 days" = 238W) — openpilot would have been a nice alternative at what'd presumably be around 5W or less ("40kWh / 5W" is 333 days).
I followed the whole saga on Twitter. He shared a video of his browser saying, "I fixed it in 5 minutes," and 5 days later he was still trying to figure out why his PR was failing the build. When Twitter engineers told him to write tests, he rage quit.
I specifically attempted to get a job at Discord so I could submit a PR to make giant emojis be a toggle setting rather than automatic. I know the feeling.
(If anyone works at Discord, please me and the rest of my server are begging you)
I don't know if this helps but I've been adding a full stop next to emoji exactly for this. It doesn't fix it for ~new people but it's something for yourself?
Discord is an electon app IIRC so in theory it should be possible to make a client side mod which fixes this. Not sure if that would result in your account getting banned though...
In the reverse situation, I've worked at places where the IP lawyers basically made it impossible to submit PRs to open source code.
But sometimes explaining the exact inputs and the line number where you know the problem is can grease the wheels enough that you can convince someone else to write the fix for you. I didn't technically give you any code. But I did give you free QA.
Good PR, but AbortController doesn't really help with stopping the server from processing the request. I have seen so much of this type of search that just continues processing in the backend even if the client has long gone caring.
There's nobody who really has a library that's set up to feed a sequential task into and have it force a synchronous call to be async with breakpoints to check for early termination.
This seems like a problem Sorhus should have a library for, but he does not.
I've had the conversation too many times in the last couple months about how setTimeout() does absolutely nothing to fix this problem in NodeJS. Even Java had trouble with this and tried to delete the API that seemed like it should support this problem, due to undefined behavior.
There was an old legend for an Apple bug (but I can’t exactly remember what). He complained about this macOS bugs for years. Worked for Apple for a couple months, fixed the issue, then quit.
I often have the thought that it would be pretty awesome to take jobs for 6 months here and there just to implement specific features I want in my favorite SW, apps, sites, etc.
* Join Logic Pro team for 8 months and add better score notation tools
* Join Apple's iOS Music app and fix the weird blip that happens at ~17 seconds on any track
* Google Maps to stop the navigation/directions from spelling out how to get from my house to El Camino Real, which I've only done about 10,000 times.
I wonder if it's legal for corporations to have employees that they send off to get hired at other companies, do some stuff in those companies that are beneficial to their actual employer, and then leave before the probationary period ends.
IANAL, but it’s almost certainly legal, as long as all parties involved adhere to the applicable non-disclosure agreements, non-compete agreements, and intellectual property provisions of their employment contracts. Even then it’s likely to remain a civil matter in most cases.
Companies can sue each other for nearly anything, so any level of this behavior could result in a lawsuit. It wouldn’t cross the line into criminality until it involved some fraudulent deception or blatant corporate espionage. For a recent example of that, see the ongoing litigation between Rippling and Deel. (But even that egregious espionage activity remains limited to civil court, at least for now.)
"to have employees that they send off to get hired at other companies, do some stuff in those companies that are beneficial to their actual employer, and then leave before the probationary period ends."
To me that sounds like not disclosing, that they work also for another company and this certainly ain't legal on most jurisdictions.
It's probably not the law (it would be shitty when working at a 7/11 on the weekends to have tolegally disclose all your other income resources)
But basic employee contracts cover these aspects, including working in the interest of the company and IP assignments, and usually exclusivity if you're full time.
Yeah I'm aware employment contracts might stipulate it. But violating a contract isn't against the law. Worst case you could get sued (though with an employment contract, the limit of repercussions are generally just termination).
Being binding is kinda of the whole purpose of a contract. If violating it is void under the law the company should change lawyers.
To put your argument under a different angle, there are many written laws you can violate with very limited consequences if any, but they are still laws.
Contracts aren't written by the country, and enforcing them is civil matter so there's nuance, but violating an enforceable contract you provably agreed to is against the law. Whether you can get away with it is another question.
There are two types of law. Contracts are civil law. Breaking them does not break criminal law. Civil vs. criminal law has different procedures, different burdens of proof, and different potential consequences.
When it comes to contracts, no, there are no "laws", there are agreements between parties that can be enforced if taken to court, and in that sense they are binding. But breaking them does not break any law... it just breaks an agreement.
Not really without researching(also I am european and might have assumed wrong about US), but something with conflict of interest? Especially if another company ordered you to work for someone else. If all is disclosed, probably fine, but undisclosed? Definitely would not work in europe. Breach of trust etc.
Not sure it falls foul of broader laws, but it almost certainly breaches your employment contract, which likely includes something about following the policies of your employer; that policy (in many companies you likely have to go through onboarding training and annual refreshers on it) probably includes a code of employee conduct that has specific mention of conflicts of interest.
You'd achieve more by simply telling the company that you need a certain feature added to their product. If you're an important customer for them, you could probably negotiate a price for them to prioritize the work.
I'm speaking from the perspective of company A, who needs a feature added to company B's product.
They could send their engineers to work for company B, sure, but those engineers' time is still costing money. And those engineers are completely unfamiliar with B's codebase, so they won't work as efficiently. Might as well just pay company B directly for the feature work.
They have, but they're beyond grasp of most developers.
Tests were invented to express the "why" for the normal guy. They don't strictly prevent compilation, but a proper workflow will see them halt your process in the same way, offering the same outcome.
Granted, there are a lot of horribly written tests out there that don't tell you "why" — or, well, anything. As always, people will find a way to abuse anything you put in front of them. But when used well...
With a test, it might link up some functionality with "why" and pass, but then what happens if a business requirement just isn't a requirement anymore? The test will still pass. I'm thinking of something sillier, like a language that forces you to justify why for your code, and then regularly quizzes you if the business reasoning is still true. If anything changes, it rips out the code and breaks your site. :) So then you have to go in to fix it.
I'd also love it if this were applied to politics and laws.
Having the source lets you fix something for yourself, there are an increasing number of barriers being put up to prevent you submitting a fix upstream.
Going through this right now with part of libpng, their mailing list doesn't seem to like my email.
Using a source-based distro (previously Gentoo, now NixOS) lets me solve the problem for myself, even if my PR never gets accepted. Right now the count is at 4 patches in software I use that I submitted upstream that were (for one reason or another) never accepted.
In at least one case, I later found out that I was not the only person to submit a fix for the problem I was running into, but their discussion on the ML also went without comment 3 years earlier.
Probably why none of the internal people cared either. They didn't want to be the person on the line in case it was determined that the usage wasn't valid.
I'm curious how you bricked it beyond repair though. Most devices have a way to enter a recovery/flash mode where you can upload your own firmware from the bootloader. And if you haven't unlocked the bootloader then I don't get how you could have bricked it unless there's an Android bug... which would have probably triggered a more serious look.
Sometimes I name certain APIs/function names/whatever with a "do_not_use_or_you_will_be_fired" suffix. Generally for hacks I don't want people to copy-pasta. I can't actually fire anyone, but it gets peoples attention (especially more junior folks).
I must have changed that back from miles once a fortnight since Google Maps launched 20 years ago. That's 500 times. Totally ridiculous for a company who core goal is profiling their users...
I assume he’s also the one that taught it to spitefully let you drive off the side of the screen if you ever zoom out manually so that you can see more road on the phone than you can in real life. (With a “recenter” button that will zoom you all the way back in).
Satnavs had this all figured out in 2005.
Seven interviews later and 1 PR later: Fails in A/B due to declining user engagement
Oh, "local" as defined by your IP too, so enjoy your VPNs.
The only solution is using the website instead, it has a currency dropdown.
Edit: after typing this realized this isn't ip, its provider. That maybe does make sense to cue off of.
https://www.comaps.app/
Unless you want to launch some AI feature (used to be chat app for ten years and then Google got bamboozled by ChatGPT…) you’ll not find allies and your career will not progress.
Also it is really, really hard to search for "Nearby" places. Have to do it through "Directions". Really bad UX.
Edit: and while you’re there, move the ‘speed camera ahead, is it still there?’ Dialog. IT COVERS THE DAMN SPEED LIMIT ICON.
https://youtu.be/TYTaNsnBjcw
Yeah it makes sense I haven't encountered that since I don't have CarPlay
Anyway, how many metric hours are in a fortnight?
On a meta note; would you consider adding a left margin to your site? Reading from the very edge of my screen feels somewhat strange.
(Try typing “I’m omw to the car” or something to see how annoying this is)
https://www.youtube.com/watch?v=GMyg5ohTsVY
This still didn't work reliably, unfortunately. I still have expired passes, tickets etc. in my wallet
What!? I love the fact that it's left-aligned. That's the way text should be!
To me one of the most annoying things an application can do is go off and do something before I'm done telling it what to do. Filters that apply themselves without an explicit indication that I'm done setting them up, or searches that are constantly re-executing as I'm typing. Wait for me to stop.
I wait about 250 ms before firing the request, if the user (well, me) continues typing, then the timer gets cancelled and the app waits another 250ms.
RTT from Europe to AWS us-* can easily get to multiple seconds during peak times.
It reminds me of the programmer who mitigated the GTA 5 loading time problem. If even with a lot of money of GTA 5 the quality doesn't improve...
The author remembers this, uh, event differently than I remember it... George Hotz boldly claimed that he could "fix Twitter search" faster than those lazy Twitter devs, only to bail almost immediately. Hubris!
On the way out, he removed that login popup as a sort of consolation prize.
context: https://github.com/orgs/community/discussions/10539
Comma.AI by George Hotz sounds very interesting, it's basically a $999 "comma 3x" smartphone with an OBD-II connector and a $99 wiring harness that can add an equivalent of a Tesla Autopilot to many cars manufactured in the last 10 years (even Tesla's own cars, too), for a total cost of $1098, whilst being OSS and available on GitHub, and — get this — even having ssh access to your car! Optional cloud subscription plans are $10/mo for your own SIM, or $24/mo with bundled cellular data.
Sadly, it does NOT have an equivalent of Tesla Sentry Mode yet, https://github.com/commaai/openpilot/issues/29912, which is kind of unfortunate, because Tesla's own implementation of Sentry Mode is using 250W of power — depleting the entire 80kWh battery from 80% to 30% in like 7 days (".5*80kWh over 7 days" = 238W) — openpilot would have been a nice alternative at what'd presumably be around 5W or less ("40kWh / 5W" is 333 days).
It was embarrassing to watch.
(If anyone works at Discord, please me and the rest of my server are begging you)
But sometimes explaining the exact inputs and the line number where you know the problem is can grease the wheels enough that you can convince someone else to write the fix for you. I didn't technically give you any code. But I did give you free QA.
This seems like a problem Sorhus should have a library for, but he does not.
I've had the conversation too many times in the last couple months about how setTimeout() does absolutely nothing to fix this problem in NodeJS. Even Java had trouble with this and tried to delete the API that seemed like it should support this problem, due to undefined behavior.
* Join Logic Pro team for 8 months and add better score notation tools
* Join Apple's iOS Music app and fix the weird blip that happens at ~17 seconds on any track
* Google Maps to stop the navigation/directions from spelling out how to get from my house to El Camino Real, which I've only done about 10,000 times.
* ...
Companies can sue each other for nearly anything, so any level of this behavior could result in a lawsuit. It wouldn’t cross the line into criminality until it involved some fraudulent deception or blatant corporate espionage. For a recent example of that, see the ongoing litigation between Rippling and Deel. (But even that egregious espionage activity remains limited to civil court, at least for now.)
To me that sounds like not disclosing, that they work also for another company and this certainly ain't legal on most jurisdictions.
But basic employee contracts cover these aspects, including working in the interest of the company and IP assignments, and usually exclusivity if you're full time.
These issues are old as time.
Being binding is kinda of the whole purpose of a contract. If violating it is void under the law the company should change lawyers.
To put your argument under a different angle, there are many written laws you can violate with very limited consequences if any, but they are still laws.
Contracts aren't written by the country, and enforcing them is civil matter so there's nuance, but violating an enforceable contract you provably agreed to is against the law. Whether you can get away with it is another question.
When it comes to contracts, no, there are no "laws", there are agreements between parties that can be enforced if taken to court, and in that sense they are binding. But breaking them does not break any law... it just breaks an agreement.
2 posts before:
> But violating a contract isn't against the law.
Now:
> Contracts are civil law. Breaking them does not break criminal law.
They could send their engineers to work for company B, sure, but those engineers' time is still costing money. And those engineers are completely unfamiliar with B's codebase, so they won't work as efficiently. Might as well just pay company B directly for the feature work.
Edit: then switches into dark mode after a lag of a few seconds
dark mode idk, that is a very tiny piece of JS which should run near instantaneously
Tests were invented to express the "why" for the normal guy. They don't strictly prevent compilation, but a proper workflow will see them halt your process in the same way, offering the same outcome.
Granted, there are a lot of horribly written tests out there that don't tell you "why" — or, well, anything. As always, people will find a way to abuse anything you put in front of them. But when used well...
I'd also love it if this were applied to politics and laws.
Going through this right now with part of libpng, their mailing list doesn't seem to like my email.
In at least one case, I later found out that I was not the only person to submit a fix for the problem I was running into, but their discussion on the ML also went without comment 3 years earlier.