[HN Gopher] Spotlight: Sentry for Development
       ___________________________________________________________________
        
       Spotlight: Sentry for Development
        
       Author : coloneltcb
       Score  : 83 points
       Date   : 2023-12-06 17:03 UTC (5 hours ago)
        
 (HTM) web link (spotlightjs.com)
 (TXT) w3m dump (spotlightjs.com)
        
       | zeeg wrote:
       | David from Sentry here. If yall have feedback around Spotlight
       | we'd love to hear it. This is a passion project for a few of us
       | and seemed like a natural fit for our technology, and becomes
       | especially interesting with the service oriented world we all
       | find ourselves in.
        
         | kyawzazaw wrote:
         | https://spotlightjs.com/ doesn't work
         | 
         | Only http
        
           | zeeg wrote:
           | What error are you seeing? Works over here. Its hosted on
           | Vercel so shouldn't be too complicated or different than most
           | similar deployments.
        
             | OJFord wrote:
             | Both say 'Unable to connect' for me (Firefox built in page)
             | in the UK. Which I think means the name resolved but no
             | response. (But I'm on mobile so can't say more than that.)
        
               | zeeg wrote:
               | Are you using NextDNS by chance? Someone reported an
               | issue with it blocking the domain on there, but it was
               | unclear _which_ setting was blocking it. Was also odd
               | given its just a Vercel website and the domain (afaik)
               | was unused prior.
        
               | OJFord wrote:
               | Yeah I just came back here to say that was the culprit.
               | It's because it's a newly registered domain.
        
               | e1g wrote:
               | The domain name is new, and those get blocked by many
               | DNS-based ad-blocks. I use NextDNS and get the same error
               | - spotlightjs.com is blocked (resolves to 0.0.0.0)
               | 
               | NextDNS calls this "Block Newly Registered Domains
               | (NRDs)", and applies to all domains <30 days. ZScaler has
               | something similar for corporate users, so people
               | connecting from work might see a big red warning page.
        
               | simonw wrote:
               | Isn't a tool that blocks all domains registered less than
               | 30 days ago hugely annoying?
               | 
               | I guess I can see the upside in terms of helping avoid
               | newly registered phishing sites, but I don't think I
               | could live with the downsides.
        
               | OJFord wrote:
               | It happens I frequently enough that I forgot it, I've
               | used NextDNS for at least a year, and it's happened at
               | most once before. How often do you try (deliberately) to
               | use something so newly registered?
               | 
               | Frankly even most new things have older domains. (I know
               | I'm not alone here in having domains registered for
               | projects that may or may not _ever_ materialise..!)
               | 
               | Also maybe worth saying that it's not even really about
               | NextDNS as a tool, it's that block list or ones like it.
               | I'm not sure if it's enabled by default or not.
        
               | simonw wrote:
               | "How often do you try (deliberately) to use something so
               | newly registered?"
               | 
               | Often when myself or one of my friends launches a new web
               | project!
        
           | arcanemachiner wrote:
           | Works on my machine.
        
         | patrick91 wrote:
         | I'd love to see this a replacement for django debug toolbar in
         | future :D
        
         | paulirish wrote:
         | I'm curious. I figure you considered building the UI as a
         | DevTools extension; why 'd you go this in-page-DOM-overlay
         | route instead?
        
           | zeeg wrote:
           | More control and far lower barrier to hack on. This actually
           | opens up a lot of doors for us even if you ignore usability
           | and discoverability. For example, we have a POC that pops the
           | overlay when a server error happens, giving you a rich debug
           | experience where otherwise you might not be able to have one.
        
             | paulirish wrote:
             | I can't disagree at all. And this is super useful, thanks.
        
         | amccloud wrote:
         | Does this new package impact devtools source and initiators in
         | a way where everything is attributed to spotlight?
        
           | zeeg wrote:
           | What's an example concern? It shouldn't anymore than Sentry
           | already does
        
       | waydegg wrote:
       | >Spotlight is built that you don't need Sentry to run it
       | 
       | Pretty cool that this is a feature. I was assuming you'd be
       | required to use Sentry to use Spotlight.
        
         | zeeg wrote:
         | Yep- runs fully local! We had to make some small changes to our
         | SDKs to support the sidecar, but a fundamental goal was that
         | this was free software and valuable without the core Sentry
         | service.
        
       | kyawzazaw wrote:
       | Spotlight has a pretty strong brand name for API dev tool -
       | https://stoplight.io/
       | 
       | Could be confusion
        
         | zeeg wrote:
         | Stoplight vs Spotlight - names are going to names at the end of
         | the day, but I'll tell you I've personally not heard of that
         | tool :')
        
         | joshmanders wrote:
         | Can we stop this? There's only so many names in this world and
         | we're going to find overlap. If you're afraid of confusing two
         | projects that are two completely separate things just because
         | they share the same name, instead of reading what you're using,
         | that's a you issue, not the projects.
        
           | verdverm wrote:
           | They aren't even the same
           | 
           | stop vs spot
        
         | bdcravens wrote:
         | In related news, there's concern that when you shuffle the name
         | Tesla, it ends up being Least
        
       | pelagicAustral wrote:
       | Looks interesting, but I'd rather die that npm-install anything
       | on one of my webapps.
        
       | jay-barronville wrote:
       | This looks interesting! I'll be trying it soon.
        
       | naiv wrote:
       | I am not sure if I fully understand the architecture.
       | 
       | Is the sidecar run on the server or in the client?
        
         | zeeg wrote:
         | Its run on your local device - its just a local devserver that
         | allows Sentry's SDKs to pipe data to it. The overlay (the
         | Spotlight UI) then connects to the sidecar via a Server-Sent
         | Events stream (basically a pubsub HTTP stream which operates
         | unidirectional - think websockets but simpler). This is needed
         | due to the distributed nature of services, but our goal is to
         | push this abstraction into dev servers, e.g. Vite.
         | 
         | Added a ticket to track improving the docs here:
         | https://github.com/getsentry/spotlight/issues/242
        
           | naiv wrote:
           | ok! thank you
        
       | freedomben wrote:
       | Apologies if this is a dumb question, but is this related at all
       | to the popular Sentry that captures stack traces and such?
       | 
       | It seems like it isn't, but I can't tell from looking through the
       | website. If it's totally separate, that's a quite unfortunate
       | namespace collision
        
         | zeeg wrote:
         | Its related in that we (Sentry) built it, and that it uses
         | Sentry's open source SDKs to create its payloads, but its
         | separate in that it doesnt require Sentry's monitoring service
         | to work.
         | 
         | Hopefully that helps, and definitely something that is quite
         | tough to clarify but we are still looking to improve upon.
         | 
         | Also added a ticket here to track this in case other folks have
         | thoughts: https://github.com/getsentry/spotlight/issues/243
        
           | freedomben wrote:
           | Ah yes, that helps a ton! So when the doc says "Sentry" it's
           | talking about the Sentry we all know, not a new project
           | called Sentry. Much appreciated
        
             | pacifika wrote:
             | The footer (now?) says created by Sentry.
        
       | pb060 wrote:
       | May I suggest adding some additional context to the home page?
       | While I heard about Sentry I find difficult to understand what
       | Spotlight does. I might not be the intended target audience
       | though.
        
         | zeeg wrote:
         | This seems to be a super shared point of view. I'll admit we
         | were a bit fire-and-forget on the homepage and definitely agree
         | with all the feedback that we need to explain what it is
         | better.
        
           | conor- wrote:
           | Is this supposed to be intended for people who are already
           | all-in with Sentry? Or can you possibly share some insight as
           | to where this makes sense to use vs instrumenting with an
           | OTEL SDK?
        
             | zeeg wrote:
             | Both. Fwiw lots of folks have yet to invest in OTel so the
             | market is super open. We're also trying to adjust our
             | approach to leverage OTels community instrumentation when
             | it makes sense. That means that ideally you'll be able to
             | invest in OTel if you want and we'll just consume those
             | spans.
             | 
             | The other thing to note: OTel doesn't do everything and
             | Sentrys error context is a big part of the value prop.
        
               | conor- wrote:
               | Thanks for the reply. Would the Spotlight sidecar
               | possibly be able to run independently and consume spans
               | emitted by the Sentry exporter[0] or some other similar
               | flow beyond strictly exporting directly from the Sentry
               | SDK provided by Spotlight?
               | 
               | This tooling looks really cool and I'd love to play
               | around with it, but am already pretty entrenched into
               | OTel and funneling data through the collector and don't
               | want to introduce too much additional overhead for devs.
               | 
               | [0] https://github.com/open-telemetry/opentelemetry-
               | collector-co...
        
               | zeeg wrote:
               | Yeah it absolutely could. Our docs aren't great here and
               | we may need to improve the APIs but it was important for
               | us to not couple this to Sentry.
               | 
               | The idea is that any data source could stream to the
               | sidecar and at the same time consume from it with a
               | curated panel in the UI.
               | 
               | If you're interested in poking around def hop in our
               | Discord (https://discord.gg/sentry #spotlight) and let us
               | know your thoughts.
        
         | qxxx wrote:
         | I also have no idea what it does. "Sentry for development", so
         | it works like sentry but the errors are streamed to localhost??
        
           | zeeg wrote:
           | That's a good way to think about it yeah. It's not 1:1, and
           | also can be extended beyond Sentry, but that was our MVP.
        
       | yewenjie wrote:
       | Sorry, what does this do exactly? I have only cursory familiarity
       | with Sentry and it's not obvious why would I want it.
        
         | the_mitsuhiko wrote:
         | It basically leverages the Sentry SDKs during development and
         | sends them into a local UI rather than a production Sentry
         | instance. It also shows the data in a way that's more akin to
         | local development.
        
           | robertlagrant wrote:
           | When's it coming to Flask? :)
        
             | the_mitsuhiko wrote:
             | It works with it but it should be made more convenient. I
             | will have a look :)
        
         | zeeg wrote:
         | "What sql queries did the api make that my react ui is talking
         | to"
         | 
         | Makes it much easier to debug local systems during development.
         | 
         | Same kind of thing for errors- takes something that shows up in
         | a console somewhere and brings it into a UI.
        
       | boothemoo wrote:
       | Is it compatible with Sentry API (drop in replacement)?
        
         | simlevesque wrote:
         | It's made by and uses Sentry.
        
         | zeeg wrote:
         | It leverages the sentry SDKs so not so much a replacement but
         | something else that you can use during local development (vs
         | sending this data to the Sentry dashboard which is a little odd
         | in development).
        
       | simonw wrote:
       | Feature request: documentation for running this with a Python web
       | app. It looks to me like it should work - the Python Sentry
       | library can presumably publish to the local Spotlight forwarder.
       | 
       | I don't have a npm/npx/etc build mechanism setup, so I'd
       | appreciate instructions for running a separate web server to
       | serve the UI, rather than running the UI integrated directly into
       | my existing Python web application.
        
         | zeeg wrote:
         | Would a bundled JS asset work for the UI? Eg something from a
         | CDN?
         | 
         | Feel free to add a GitHub issue with more details if that's
         | easier!
        
           | simonw wrote:
           | Yeah, a CDN link would be fine - anything that means I don't
           | have to figure out how to run "npm install" for a project
           | which isn't using that yet.
           | 
           | Or even something like "npx sentry-spotlight-http-server"
           | which starts a server running containing the UI.
        
             | the_mitsuhiko wrote:
             | Maybe the docs are not good enough for that, but you can
             | just run                   npx @spotlightjs/spotlight
        
               | zeeg wrote:
               | That'll get you the sidecar but not the UI widget. I
               | think we could:
               | 
               | 1- serve the widget from the sidecar 2- add the CDN
               | distro
        
               | simonw wrote:
               | Serving the widget from the sidecar would work great for
               | me, then I only have to run one thing.
        
       | kunwon1 wrote:
       | It seems to be getting more and more common to leave your git
       | repository completely undocumented. If you're releasing a
       | software project on github, I want to read about it on github.
       | 
       | A basic README that outlines what it does, how it does it, and
       | basic syntax - this is really easy. Table stakes, I might say. I
       | can checkout your repo and I have everything I need to work
        
         | zeeg wrote:
         | Don't disagree, but technically the docs are in the same repo.
         | Not easily consumed though.
         | 
         | We removed bits from the readme as it kept becoming duplicated
         | and eventually wrong. I think that's the usual reason folks
         | like to avoid it. DRY and all.
        
       | aestetix wrote:
       | Why are so many software things written in node now? Seems that
       | every new project I see, the installation begins with "npm
       | install" :(
        
         | zeeg wrote:
         | In this case it makes sense: it's a UI widget. We wrote the
         | proxy also in Node just because you already likely needed
         | JavaScript to install the UI component that it felt logical.
         | 
         | Aside, 2019 and onward JavaScript has become the largest and
         | fastest growing ecosystem of developers.
         | 
         | To others feedback though there's no reason we should force you
         | to take a bundler running in your UI. We're gonna fix that
         | quickly.
        
       ___________________________________________________________________
       (page generated 2023-12-06 23:00 UTC)