Media Kraken: keep track of your media in your POD

Well, if it’s opt-in, I’d be happy to add Sentry to my tracker blocker’s allowlist for Media Kraken :slight_smile:

1 Like

Maybe Glitchtip does the job for you. I didn’t check features all that much, but they were created, partially forked from Sentry before their license change. They are cloud-based but can be self-hosted too, and are fully OSS with MIT license.

3 Likes

I don’t think so. I think it was more wordy and feels like it was the app but I’m not sure. I’ll try to generate it again later.

I just released a new version with some improvements given the feedback I got, thank you!

The most relevant thing is that I’ve added an opt-in setting to send reports to Sentry. If the application doesn’t even boot up, this can be forced by passing ?error_reporting=on in the url. This will hopefully help me do better support :).

@aschrijver, I tried using GlitchTip but I couldn’t get it to display any errors. Not locally nor using their cloud service. So I don’t know, at least the client side is the same so I won’t have to change my code when it works. Thanks for the heads up!

@happybeing, you should be able to activate error reporting and maybe I’ll be able to see what’s going on with that authentication issue if it happens again.

3 Likes

Tried last night, first the login was hanging (seen quite a few times with different apps logging in using Solid.community) but the login did appear to have worked when I reloaded. Since then I’m stuck with this and no console to view (Firefox on Android):

Ok, that seems to happen after the movies container is loaded so at least something is working. It may be something wrong with a movie. It looks like a bug in the app, but without any debugging information I can’t do anything about it.

I have to improve that error, I hadn’t thought about mobile users not being able to look at the console :sweat_smile: (and I use the app in mobile myself). But I also don’t want to show things like stacktraces or exception messages in the UI.

Right now what I can think of is that you can either log in on a desktop device and look at the console or append ?error_reporting=on to the address and I should receive the error report. I know it’s not ideal and I understand if you don’t want to bother anymore. If you want you can also send me a private message and I can help you there, so that we don’t pollute this thread going back and forth :).

Sorry and thanks for helping!

1 Like

@moderators can you make a new topic with the posts about this error, thanks.

@NoelDeMartin I’ve just repeated the error with ?error_reporting=on so hopefully you have some info (again on Firefox/Android).

Great effort!

On-boarding worked nicely.

Questions:

  1. Bearing in mind that I authenticated using my WebID, shouldn’t the movie data be in my inbox, or some other folder associated with my pod?

  2. Regarding local storage, which appears to be IndexedDB based, how do I get at the movie data imported?

I got the error but it only tells me “NetworkError when attempting to fetch resource.” At least we know it has something to do with the network. I remember having problems with movies starting with a dash in their name but I couldn’t reproduce it after a while, not sure if that has anything to do with it.

I think I’ll release a new version with better error handling, both the “look at the console” and that UI can be improved a lot, I’m just not handling any errors in the bootup. I’ll try to find a good compromise between not confusing users and giving them enough information for proper debugging/support :).

1 Like

Thank you :slight_smile:

At the moment, I am looking for a container of schema:Movie in your private type index and if it doesn’t exist I create a new one in /movies. This is briefly documented here.

The movies that you see when you search in the header are not in your pod, those come from tmdb api, and they’ll be added to your pod if you mark them as watched/watch later. The 100 imdb movies is an exception to this rule to get you started if you don’t know what movies to look for.

If you go to your collection, there is a menu that opens by clicking on the kebab menu icon and you can import/export your data in JSON-LD format.

If you’re using Solid, the IndexedDB is only a cache. And even if you’re using browser storage, this should be transparent for the user and you can interact with the data using the UI. Besides importing/exporting, you can delete movies if you use the kebab menu on the movie profile like the one on that screenshot.

I suggest you err on the side of giving too much information. For a few reasons. First you can give a simple message, like “Sorry I couldn’t read your movie collection”, then a short but more technical “Network error loading https:…” and then if you have one a stack dump or whatever you have you can throw in which will give you and geeks a chance to figure out what is going on when you only have what the user reported. Remember also some users may not understand the tech at all, but they will recognize when the same thing happens again, and be able to build a map of where they can go and not go, and they will compare notes with friends and they will google it even if they don’t understand it and find others who done the same and found a way around it. My 2cents about good deep error messages anyway

2 Likes

Great app. I like this because it is works, and looks nice and I gather uses the type index. I like it is as it a great example of an app which combines a bunch of public data in IMDB with my private data to great effect. I hope other follow your lead with other things like say a public list of educational institutions as data to build my Curriculum Vitae, and so on.

One easy-to-fix things is the app has an RDF data file, like a catalogue card, for each movie in my collection, but in that file it confuses the movie and the catalog card. Best to use movies/Jaws as the URI of the card and say movies/Jaws#this or movies/Jaws#theMovie as the URI of the actual movie. The solid server gives information about dates for the card which are quite different from the dates for the movie.

4 Likes

Yes thank you, I’ll refactor all the error handling in the next iteration and I already have a couple of ideas in that direction :). Basically, basic error for users with a “view more” button for experts. And also better error handling overall, because I mostly catch errors and say “something went wrong”, so there’s a lot to improve there.

Thank you! I’m very glad to hear that :). I am using tmdb.org instead of IMDB because they don’t have a decent API, the top 100 IMDB movies is just something I did manually for the onboarding.

I see, this is something I was already aware of but I didn’t completely understand why, I thought it was just a convention to use #it. It makes sense though, I’ll keep it in mind :).

2 Likes

Hello! I work on GlitchTip.

I pulled Media Kraken, ran it locally, and through artificial means (changing this.$media.movies to {} in allMovies() in CollectionPage.vue), got it to report an error to GlitchTip.

If you show me a more realistic way to trigger an error, I’d be happy to take a look at it. We’re still working out kinks with SDK compatibility, so it’s possible that something might need to be fixed.

2 Likes

Hello @TallBlondeGuy, thanks for reaching out! I’ll give it another try and let you know how it goes. I’m currently on holidays so I’ll get back to you in a couple of weeks.

#{indexical} isn’t a superficial convention, that is the heart and soul of what enables the Web’s core magic. Basically, it’s the concept of indexicality via an HTTP URI.

What’s the Web’s Core Magic?
Use of the HTTP protocol to fashion unambiguous names for anything. Thus, if you simply stick to naming things unambiguously (like you do in the real-world) good stuff happens :slight_smile:

Simple example:

A single hyperlink offering powerful name->description indirection :slight_smile:

1 Like

I added the following to the Private Type Index associated with my pod, as per:

@prefix solid: <https://www.w3.org/ns/solid/terms#>.
@prefix schema: <https://schema.org> .
<>
    a solid:TypeIndex ;
    a solid:UnlistedDocument.
<#myMovies> a solid:TypeRegistration;
    solid:forClass schema:Movie;
    solid:instanceContainer </movies/>.

And it now works i.e., I can see my movies etc…

I would suggest you add an example to your setup notes so that folks can “cut, paste, and adapt” for their use :slight_smile:

I play some more!

Wasn’t this added to the type index when you started using the app? It should happen automatically, if it didn’t it was a bug.

It didn’t happen automatically, which is what tripped up my initial on-boarding experience. Creating it manually resolved the issue.

1 Like

I just released a new version with a bunch of updates. There isn’t any new features nor dramatic UI changes, but I’ve applied many of the suggestions in this thread :).

I’ve improved error handling overall, and I’m showing more debugging information now. @happybeing if you still want to try the app this version should give you more details about the problem. I think I saw your issue in Sentry and it was related with a malformed document. I’ve also implemented ignoring malformed documents, if that was the problem you should be able to use it now.

I’ve also refactored the way that resources are created, and I’m using the #{indexical} convention. Upon booting up, the application will ask for permission to run a migration script that will update the documents from your POD. This would also fix the app for solid.community users, given that the POD domain was hard-coded in previous versions.

You can read more about it in the release notes.

4 Likes