4 ms·
That was difficult to read, smelt very AI assisted though the message was worthwhile, it could've been shorter and more to the point. A few things I've been th
by mnahkies 10mo ago
That was difficult to read, smelt very AI assisted though the message was worthwhile, it could've been shorter and more to the point.
A few things I've been thinking about recently:
- we have authentication everywhere in our stack, so I've started including the user id on every log line. This makes getting a holistic view of what a user experienced much easier.
- logging an error as a separate log line to the request log is a pain. You can filter for the trace, but it makes it hard to surface "show me all the logs for 5xx requests and the error associated" - it's doable, but it's more difficult than filtering on the status code of the request log
- it's not enough to just start including that context, you have to educate your coworkers that it's now present. I've seen people making life hard for themselves because they didn't realize we'd added this context
- spike021 10mo agoIf your codebase has the concept of a request ID, you could also feasibly use that to trace what a user has been doing with more specificity.
- mnahkies 10mo agoWe do have both a span id and trace id - but I personally find this more cumbersome over filtering on a user id. YMMV if you're interested in a single trace then you'd filter for that, but I find you often also care what happened "around" a trace
- ivan_gammel 10mo ago…and the same ID can be displayed to user on HTTP 500 with the support contact, making life of everyone much easier.
- dexwiz 10mo agoI have seen pushback on this kind of behavior because "users don't like error codes" or other such nonsense. UX and Product like to pretend nothing will ever break, and when it does they want some funny little image, not useful output. A good compromise is to log whenever a user would see the error code, and treat those events with very high priority.
- ivan_gammel 10mo agoNah, that’s easy problem to solve with UX copy. „Something went wrong. Try again or contact support. Your support request number is XXXX XXXX“ (base 58 version of UUID).
- spockz 10mo agoWe put the error code behind a kind of message/dialog that invites the user to contact us if the problem persists and then report that code. It’s my long standing wish to be able to link traces/errors automatically to callers when they call the helpdesk. We have all the required information. It’s just that the helpdesk has actually very little use for this level of detail. So they can only attach it to the ticket so that actual application teams don’t have to search for it.
- inkyoto 10mo ago> I have seen pushback on this kind of behavior because "users don't like error codes" or other such nonsense […] There are two dimensions to it: UX and security. Displaying excessive technical information on an end-user interface will complicate support and likely reveal too much about the internal system design, making it vulnerable to external attacks. The latter is particularly concerning for any design facing the public internet. A frequently recommended approach is exception shielding. It involves logging two messages upon encountering a problem: a nondescript user-facing message (potentially including a reference ID pinpointing the problem in space and time) and a detailed internal message with the problem’s details and context for L3 support / engineering.
- dist1ll 10mo agoSorry for the OT response, I was curious about this comment[0] you made a while back. How did you measure memory transfer speed? [0] https://news.ycombinator.com/item?id=38820893 https://news.ycombinator.com/item?id=38820893
- inkyoto 10mo agoI used «powermetrics» bundled with macOS with «bandwidth» as one of the samplers (--samplers / -s set to «cpu_power,gpu_power,thermal,bandwidth»). Unfortunately, Apple has taken out the «bandwidth» sampler from «powermetrics», and it is no longer possible to measure the memory bandwidth as easily.
- nine_k 10mo ago...if it does not, you should add it. A request ID, trace ID, correlation key, whatever you call it, you should thread it through every remote call, if you value your sanity.
- kulahan 10mo agoIf you care about this more than anything else (e.g. if you care about audits a LOT and need them perfect), you can simply code the app via action paths, rather than for modularity. It makes changes harder down the road, but for codebases that don’t change much, this can be a viable tradeoff to significantly improve tracing and logging.
- xmprt 10mo agoOn the other hand, investing in better tracing tools unlocks a whole nother level of logging and debugging capabilities that aren't feasible with just request logs. It's kind of like you mentioned with using the user id as a "trace" in your first message but on steroids.
- dexwiz 10mo agoThese tools tend to be very expensive in my experience unless you are running your own monitoring cloud. Either you end up sampling traces at low rates to save on costs, or your observability bill is more than your infrastructure bill.
- dietr1ch 10mo agoDoing stuff like turning on tracing for clients that saw errors in the last 2 minutes, or for requests that were retried should only gather a small portion of your data. Maybe you can include other sessions/requests at random if you want to have a baseline to compare against.
- jonasdegendt 10mo agoWe self host Grafana Tempo and whilst the cost isn’t negligible (at 50k spans per second), the money saved in developer time when debugging an error, compared to having to sift through and connect logs, is easily an order of magnitude higher.
- oulipo2 10mo agoI've tried HyperDX and SigNoz, they seem easy to self-host and decent enough
- valyala 10mo agoTry open-source databases specially designed for traces, such as Grafana Tempo or VictoriaTraces. They can handle the data ingestion rate of hundreds of thousands trace spans per second on a regular laptop.
- sahilagarwal 10mo ago
- khazhoux 10mo ago> That was difficult to read, smelt very AI assisted though the message was worthwhile... It won’t be long before ad computem comments like this are frowned upon.
- bccdee 10mo agoWhy? "This was written badly" is a perfectly normal thing to say; "this was written badly because you didn't put in the effort of writing it yourself" doubly so.
- 0xbadcafebee 10mo agoSay they used AI to write it, it came out bad, and they published it anyway. They had the opportunity to "make it better" before publishing, but didn't. The only conclusion for this is, they just aren't good at writing. So whether AI is used or not, it'll suck either way. So there's no need to complain about the AI. It's like complaining that somebody typed a crappy letter rather than hand-wrote it. Either way the letter's gonna suck, so why complain that it was typed?
- Dylan16807 10mo ago> The only conclusion for this is, they just aren't good at writing. Not true. It's likely an effort issue in that situation. And that kind of effort issue is good to call out, because it compounds the low quality.
- 0xbadcafebee 10mo agoI don't know if you're new to the internet, but low-effort comments have existed before AI, and will continue to exist regardless of AI.
- minitech 10mo agoCompared to human bad writing, AI writing tends to suck more verbosely and in exciting new ways (e.g. by introducing factual errors).
- giancarlostoro 10mo agoTIDs are good here too. If you generate it and enforce it across all your services spanning various teams and APIs anyone of any team can grab a TID you provide and you can get the full end to end of one transaction.
- valtism 10mo agoWow, I didn't think this was badly written at all! I certainly don't think it smells like AI. Are you conflating lists with AI written prose?
- weebull 10mo ago> - we have authentication everywhere in our stack, so I've started including the user id on every log line. This makes getting a holistic view of what a user experienced much easier. Depends on the service, but tracking everything a user does may not be an option in terms of data retention laws