scrimba / community Goto Github PK
View Code? Open in Web Editor NEWRepository for public issue-tracking and discussions
Home Page: https://scrimba.com
Repository for public issue-tracking and discussions
Home Page: https://scrimba.com
On pages where you can scroll and open a video in a modal, the associated settings modal seems to be positioned relative to the initial 'unscrolled' viewport. On longer pages, this can cause the modal to be completely hidden to the user.
Tested on Chromium 56 on Ubuntu 16.04. No JS errors are spotted in console while the bug happens.
The settings dialog currently looks like this on first load:
A few things stand out as issues:
The overall UI feels cramped & overly busy.
The <select>
is initially blank, but also offers a 'None' option in the dropdown.
The 'Add' button gets darker when hovering. Usually things grow in visual priority, rather than lessen, when hovered.
Dialog does not have usual methods of closing dialog (click outside of it, X in top corner).
Bug: Positioned incorrectly in scrolled pages #22
Also...
Consider tinting the background slightly when the dialog is open to detract background noise.
Review design guidelines for dialogs: https://material.io/guidelines/components/dialogs.html
When frequently playing a cast, but also putting the cursor in the editor, we loose the focus. That's logic but there's a tendency to try typing to change a few more bits and you then realize you have to click back in the console to give it back the focus so you can actually start typing again.
It'd be great to give the console the focus straight after clicking "Run" so you could potentially resume typing whenever you want.
Feature request:
Would be really cool if we could contribute to public lessons, but also have a space for private ones too. I see this being an incredibly useful tool for training my team.
We want to do specific developer workflow tutorials that are unique to our environment, therefore not useful for the general public.
An alternative would be an open-source version of Scrimba so we could implement it ourselves. However, I feel this would not support the broader Scrimba community as well as the initial feature request.
Thoughts?
Please allow deleting and renaming of files in the cast.
the authoring workflow absolutely must include the ability to review the just-completed recording before it is merged into the current screencast.
Clicking the "edit" icon next to the Cast title below the code editor presents a dialog which provides for deleting the Cast. Clicking delete works, but UX is confusing because it doesn't appear to work until we navigate out.
Suggest kicking the user out to the dashboard.
I think 'Build Project' should be renamed to 'Save' and the keyboard shortcut for it updated to Ctrl+S (or similar). The current 'Save' button should be renamed to 'Fork'.
My gut reaction on first use was to hit Ctrl+S when I wanted to see my changes take effect. The rest of the suggested changes stem from this desire.
The popup window gets a bit annoying after a while. Would be better if the message was different. Maybe the play button has the "resume?" status once you press play after having played around with the code. I accidentally end up pressing the play instead of resume more often than not.
A key combination to resume would be great, like CMD + Space.
A large preview window similar to Codepen style would make Scrimba much more useful, so please consider adding it.
Requested at https://news.ycombinator.com/item?id=13815243
The size of the editor window changes when entering and exiting Theater Mode. SimulatorView's frame does not move in-sync with the changing window size. It appears to have a 1-2 second delay before transitioning.
repro might be weird — if collaborators can see my Drafts, please look at the output at the end of the cast called "Weird, Redundant Output". Then manually run the code and you'll see the correct output.
It looks like "function *" syntax for Generators is not supported.
Would be super nice to be able to add some libraries to a given Javascript cast (like an SDK, an npm package or so), to demo some advanced use case.
it would be great to be able to create a template. Or maybe more simply, if it was possible to fork a cast from another, is it even possible? just so you don't always have to re-configure all the scripts
I was looking to see if there was a way to do a require()
, and found no docs whatsoever
Create a way to discover more videos/users. From the homepage, there are a limited number of videos. Most recent has videos 2/3 days old, surely there are newer ones.
The rerun project button is not visually prominent. I wanted to rerun the project after making some changes. I felt encouraged to save (fork) or resume playback, overwriting my edits. Make it more intuitive to rerun the project after making an edit.
really love what's going on here. if you can expand this to support Swift, i'd love to use it for instructional purposes (teaching syntax, programming basics)
Difficult to reliably repro, since I haven't seen much of a pattern of when it happens, but several times I've tried to kill my current recording by hitting cancel
and instead it gets committed.
It does seem to happen more often on longer recordings, but that may or may not be related.
Just a couple of minor points:
Dialog is closed by clicking outside of it. This is different than the settings dialog which requires clicking a close button. You'll drive your users' crazy if you don't standardize this throughout the application.
I thought I was being recorded on first load because of the red recording symbol which is usually an indicator that recording is currently occurring.
To reproduce:
After recording a video, I recorded a second time for an additional couple seconds to clarify on some things. This apparently deleted the entire audio for the first ~4 mins of the video and only kept the last bit of audio. All visuals are intact
The title says it all!
The general Ember.js community uses ember-cli
, a CLI tool for creating Ember applications. So there would need to be some sort of integration.
Also for reference, there's a jsfiddle/codepen like tool that for prototyping/testing/sharing Ember code that might be inspiring/helpful. https://ember-twiddle.com/
If you render a number input and select the value, the embedded web view will become unresponsive. I believe there's some code accessing setSelectionRange
on the input, but that method can't be used on a number input.
Uncaught DOMException: Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('number') does not support selection.
If I set a video to private and direct-link to it, the video itself doesn't load but all of the metadata is visible (title, description, etc). This is potentially sensitive and should probably be hidden if set to private
I think it would make a lot of sense to be able to make some changes to code, save the code, tag the saved code to a point-in-time on the video timeline, and be able to skip between your code snippets. I want to be able to hack on something for a bit, save, watch more video, and then build my previous work into something more without losing it.
I'm the author of gl-react and I want to use this awesome service to do some tutorial for the library users. Basically to do another format of the gl-react cookbook https://gl-react-cookbook.surge.sh/ – more interactive & with audio explanation.
The library uses WebGL, rendered in a <canvas/>
, however it does not seem to work. When I record something, I can see that my canvas is working, but after a replay, it does not work, it stays blank. Only a CMD+B make it run.
I was imagining maybe the "build" event would get replayed on the viewer but apparently it's not working like that. Not sure if you guys have a solution for this, it's probably going to need tradeoffs..
The hard thing is if you can't snapshot at any time the canvas state, there is no way you can restitute that when user changes the player time... and i'm not even sure how things like recording this https://gl-react-cookbook.surge.sh/paint would be possible (like you would have to listen to mouse events and retrigger them? mmh)
It would be great (and good marketing for Scrimba) to be able to embed a scrimba "video" into other sites. That way when people blog, etc., they could embed scrimba which readers would find as delightful but also let readers click-through to see/discover the rest of scrimba and its awesomeness.
I got a simple <iframe> working, but there is no visual indicator to a reader that they need to "click play" or anything (and the buttons seemed to display wrong?), plus it kept on scrolling which was caused the scrimba player to get clipped.
Great work, you all.
piggybacking on #33
Should be able to add and delete folders as well as files. I want to use Scrimba for a full set of tutorials that use real-world architectures, so the lack of folders is a dealbreaker.
When I first tried scrimba the visuals played but the audio did not. Retrying in an Incognito window (hence with all extensions disabled) allowed the audio to play.
Briefly experimenting, I believe the culprit was Disable HTML5 Autoplay. FTR the other active extensions were uBlock Origin, Push Bullet, d3Coder, HTTPS Everywhere. Browser was Chromium 56.0.2924.76 on Ubuntu 16.10. It's probably unrelated, but the following was spamming the developer console at a high rate while the video was open
Blocked script execution in 'https://scrimba.com/cast/cast-6.preview' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
Please feel free to e.g. mark this WONTFIX, this is (probably) an extremely rare edge case and I am fine with that. I'm just documenting it here for completeness and any future fellow weirdos searching for the symptoms.
It would be great if subtitle support is included for people who find videos a bit fast to follow or those who may have hearing problems. It could be in English for starters, multi language support can be added later. I know there are people who can even translate for free.
Just thinking up ideas here, nothing urgent/necessary.
Here is an idea on how a transcription feature might work:
For uses who cannot have audio playing or who are deaf, they can click a mute/transcript button/icon in the bottom right corner.
Transcriptions must manually be added by the author of the video, by clicking on a transcription button in the upper right of their editor.
This opens up hidden files/tabs (like how index.js, index.html, index.css are tabs/files, except these files/tabs are named 0:00
, 0:30
, 1:00
) that they can add plain text to.
They way transcriptions work for the watcher, is the video plays as regular but then PAUSES at a keyframe (based on the name of the tab/file from above), which automatically switches (or overlays?) the text from it. Then when a user is done reading, they just click resume/play.
Since the tabs/files are scrollable to the watcher anyways, this lets the author be as verbose as they want in very few or infrequent transcription keyframes, or have many frequent transcription keyframes that are quick and focused.
BONUS:
A) A transcription tab/file also specify a "resume" keyframe. This might be useful for authors who cannot multitask (talking while coding), so if the author winds up chatting for 15 seconds without typing any code this will just be dead time for a deaf person or muted video. Therefore, being able to specify a resume/skip-to time might be useful.
B) If you code the transcription feature to be modular, you could easily extend this to have a bunch of other features! For instance, using the exact same logic, you guys could add a "survey/poll" extension - which pauses the video at a certain keyframe, but rather than displaying transcript text, it asks a question and has a multi-choice survey ("does this tutorial suck? yes, no, kinda"). Extending this even further, you can have different resume times based on the answer (example: "Do you already know how the CSS float
property works? Yes, skip forward. No.) or perhaps to other scrimba casts or links.
Just some ideas! You guys are great.
Hey, great work! This is something that I'll definitely be using in the near future. Unfortunately it's broken in Edge, videos immediately get stuck on "loading" and nothing ever happens.
would be nice to be able to search through the videos available
Ideally, below the code window, we would see a list of relevant links and/or any other notes from the author
The console button isn't working for me on some of the casts (scrimbacasts? scrimbas?). I'm using macOS Chrome Version 56.0.2924.87 (64-bit). Not sure if this is because I have set an unusual Content Security Policy for chrome. Here's what I see in my browser's console when watching https://scrimba.com/cast/cast-327
Blocked script execution in 'https://scrimba.com/cast/cast-327.preview' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
docs on Content Security Policy headers here https://developer.chrome.com/extensions/contentSecurityPolicy
Not a priority. Just noticed this and thought I'd report it. I'm not sure what happened but it was something like this:
Resized the editor, ran the code, resized again. Couldn't click on file tabs. Refreshed, editor won't display anything. Here is my chrome console logs if it helps at all (usually not, lol).
initing space
microphone.imba:24 microphone initialize!
SpaceView.imba:267 SpaceView.mount!
player.imba:232 Uncaught (in promise) TypeError: y.insertAdjacentHTML is not a function
at h.applyMutations (player.imba:232)
at h.apply (player.imba:385)
at Object.t.apply (SimulatorView.imba:321)
at c.apply (SimulatorWidget.imba:245)
at B.onstreamstep (space.imba:391)
at s.step (stream.imba:82)
at s.syncToEnd (stream.imba:106)
at B.syncToEnd (space.imba:310)
at space.imba:245
Store.imba:201 put
loader.js:1024 Duplicate definition of module 'vscode-languageserver-types/main'
ModuleManager.defineModule @ loader.js:1024
loader.js:1024 Duplicate definition of module 'vscode-languageserver-types'
ModuleManager.defineModule @ loader.js:1024
pointer-rec-off.png Failed to load resource: the server responded with a status of 404 (Not Found)
SpacePlayer.imba:24 dispose previous space!!
socket.imba:64 socket not ready to send
u.send @ socket.imba:64
/amark:1 WebSocket connection to 'wss://scrimba.com/socket/cast-1666?did=f49e5738-fdb2-420e-a55d-e62f0ad78eb5…jgwNDgsImV4cCI6MTU3ODUyODA0OH0.5VSjPZbIaYywXsQYTqsey4F7L3U0n_5FMQND41hHyMo' failed: WebSocket is closed before the connection is established.
/assets/cached-client-3df79f2e792086d0d497.js:43 Uncaught (in promise) TypeError: Cannot read property 'dispose' of undefined
at Object.t.dispose (/assets/cached-client-3df79f2e792086d0d497.js:43)
at B.dispose (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.t.dataDidSet (/assets/cached-client-3df79f2e792086d0d497.js:43)
at Object.t.setData (/assets/cached-client-3df79f2e792086d0d497.js:43)
at Object.t.unmount (/assets/cached-client-3df79f2e792086d0d497.js:43)
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.listener (/assets/cached-client-3df79f2e792086d0d497.js:43)
at r (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.emit (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.commit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.after (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.tick (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t._ticker (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught (in promise) TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.listener (/assets/cached-client-3df79f2e792086d0d497.js:43)
at r (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.emit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at i.decr (/assets/cached-client-3df79f2e792086d0d497.js:43)
at i.decr (/assets/cached-client-3df79f2e792086d0d497.js:43)
at /assets/cached-client-3df79f2e792086d0d497.js:43
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.commit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.after (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.tick (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t._ticker (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:43 initing space
/assets/cached-client-3df79f2e792086d0d497.js:29 preregistered!!! space cast-1666
/assets/cached-client-3df79f2e792086d0d497.js:43 SpaceView.mount!
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught (in promise) TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.listener (/assets/cached-client-3df79f2e792086d0d497.js:43)
at r (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.emit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at i.decr (/assets/cached-client-3df79f2e792086d0d497.js:43)
at i.decr (/assets/cached-client-3df79f2e792086d0d497.js:43)
at /assets/cached-client-3df79f2e792086d0d497.js:43
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.commit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.after (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.tick (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t._ticker (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:43 Uncaught (in promise) TypeError: y.insertAdjacentHTML is not a function
at h.applyMutations (/assets/cached-client-3df79f2e792086d0d497.js:43)
at h.apply (/assets/cached-client-3df79f2e792086d0d497.js:43)
at Object.t.apply (/assets/cached-client-3df79f2e792086d0d497.js:43)
at c.apply (/assets/cached-client-3df79f2e792086d0d497.js:43)
at B.onstreamstep (/assets/cached-client-3df79f2e792086d0d497.js:29)
at s.step (/assets/cached-client-3df79f2e792086d0d497.js:1)
at s.syncToEnd (/assets/cached-client-3df79f2e792086d0d497.js:1)
at B.syncToEnd (/assets/cached-client-3df79f2e792086d0d497.js:29)
at /assets/cached-client-3df79f2e792086d0d497.js:29
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.commit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.after (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.tick (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t._ticker (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.commit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.after (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.tick (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t._ticker (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.commit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.after (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.tick (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t._ticker (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:29 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t.Imba.TagManagerClass.refresh (/assets/cached-client-3df79f2e792086d0d497.js:29)
at Object.Imba.commit (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.after (/assets/cached-client-3df79f2e792086d0d497.js:29)
at n.tick (/assets/cached-client-3df79f2e792086d0d497.js:29)
at t._ticker (/assets/cached-client-3df79f2e792086d0d497.js:29)
/assets/cached-client-3df79f2e792086d0d497.js:43 window resized
2site.imba:86 window resized
manager.imba?eb3a:67 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (manager.imba?eb3a:67)
at t.Imba.TagManagerClass.refresh (manager.imba?eb3a:38)
at Object.Imba.commit (scheduler.imba?cc62:71)
at n.after (scheduler.imba?cc62:65)
at n.tick (scheduler.imba?cc62:51)
at t._ticker (scheduler.imba?cc62:27)
Imba.TagManagerClass.tryUnmount @ manager.imba?eb3a:67
Imba.TagManagerClass.refresh @ manager.imba?eb3a:38
Imba.commit @ scheduler.imba?cc62:71
n.after @ scheduler.imba?cc62:65
n.tick @ scheduler.imba?cc62:51
t._ticker @ scheduler.imba?cc62:27
opbeat.min.js:2 XHR finished loading: POST "https://intake.opbeat.com/api/v1/organizations/3b189480b4804f9fad3e859de5061e42/apps/8f96656864/client-side/errors/".
(anonymous) @ opbeat.min.js:2
I @ opbeat.min.js:1
$ @ opbeat.min.js:1
i @ opbeat.min.js:2
r @ opbeat.min.js:2
sendError @ opbeat.min.js:2
r.sendError @ opbeat.min.js:1
(anonymous) @ opbeat.min.js:1
j @ opbeat.min.js:1
L @ opbeat.min.js:1
F @ opbeat.min.js:1
d @ opbeat.min.js:1
manager.imba?eb3a:67 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (manager.imba?eb3a:67)
at t.Imba.TagManagerClass.refresh (manager.imba?eb3a:38)
at Object.Imba.commit (scheduler.imba?cc62:71)
at n.after (scheduler.imba?cc62:65)
at n.tick (scheduler.imba?cc62:51)
at t._ticker (scheduler.imba?cc62:27)
Imba.TagManagerClass.tryUnmount @ manager.imba?eb3a:67
Imba.TagManagerClass.refresh @ manager.imba?eb3a:38
Imba.commit @ scheduler.imba?cc62:71
n.after @ scheduler.imba?cc62:65
n.tick @ scheduler.imba?cc62:51
t._ticker @ scheduler.imba?cc62:27
opbeat.min.js:2 XHR finished loading: POST "https://intake.opbeat.com/api/v1/organizations/3b189480b4804f9fad3e859de5061e42/apps/8f96656864/client-side/errors/".
(anonymous) @ opbeat.min.js:2
I @ opbeat.min.js:1
$ @ opbeat.min.js:1
i @ opbeat.min.js:2
r @ opbeat.min.js:2
sendError @ opbeat.min.js:2
r.sendError @ opbeat.min.js:1
(anonymous) @ opbeat.min.js:1
j @ opbeat.min.js:1
L @ opbeat.min.js:1
F @ opbeat.min.js:1
d @ opbeat.min.js:1
manager.imba?eb3a:67 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (manager.imba?eb3a:67)
at t.Imba.TagManagerClass.refresh (manager.imba?eb3a:38)
at Object.Imba.commit (scheduler.imba?cc62:71)
at n.after (scheduler.imba?cc62:65)
at n.tick (scheduler.imba?cc62:51)
at t._ticker (scheduler.imba?cc62:27)
Imba.TagManagerClass.tryUnmount @ manager.imba?eb3a:67
Imba.TagManagerClass.refresh @ manager.imba?eb3a:38
Imba.commit @ scheduler.imba?cc62:71
n.after @ scheduler.imba?cc62:65
n.tick @ scheduler.imba?cc62:51
t._ticker @ scheduler.imba?cc62:27
SimulatorView.imba:112 Uncaught (in promise) TypeError: Cannot read property 'location' of null
at Object.t.reload (SimulatorView.imba:112)
at Object.t.run (SimulatorView.imba:229)
at SimulatorWidget.imba:141
at SimulatorWidget.imba:113
t.reload @ SimulatorView.imba:112
t.run @ SimulatorView.imba:229
(anonymous) @ SimulatorWidget.imba:141
(anonymous) @ SimulatorWidget.imba:113
opbeat.min.js:2 XHR finished loading: POST "https://intake.opbeat.com/api/v1/organizations/3b189480b4804f9fad3e859de5061e42/apps/8f96656864/client-side/errors/".
(anonymous) @ opbeat.min.js:2
I @ opbeat.min.js:1
$ @ opbeat.min.js:1
i @ opbeat.min.js:2
r @ opbeat.min.js:2
sendError @ opbeat.min.js:2
r.sendError @ opbeat.min.js:1
(anonymous) @ opbeat.min.js:1
j @ opbeat.min.js:1
L @ opbeat.min.js:1
F @ opbeat.min.js:1
d @ opbeat.min.js:1
manager.imba?eb3a:67 Uncaught TypeError: Cannot read property '_dom' of null
at t.Imba.TagManagerClass.tryUnmount (manager.imba?eb3a:67)
at t.Imba.TagManagerClass.refresh (manager.imba?eb3a:38)
at Object.Imba.commit (scheduler.imba?cc62:71)
at n.after (scheduler.imba?cc62:65)
at n.tick (scheduler.imba?cc62:51)
at t._ticker (scheduler.imba?cc62:27)
Imba.TagManagerClass.tryUnmount @ manager.imba?eb3a:67
Imba.TagManagerClass.refresh @ manager.imba?eb3a:38
Imba.commit @ scheduler.imba?cc62:71
n.after @ scheduler.imba?cc62:65
n.tick @ scheduler.imba?cc62:51
t._ticker @ scheduler.imba?cc62:27
opbeat.min.js:2 XHR finished loading: POST "https://intake.opbeat.com/api/v1/organizations/3b189480b4804f9fad3e859de5061e42/apps/8f96656864/client-side/errors/".
I need NativeScript and Socket.IO lessons. Will you think about adding?
We should reduce the user friction for navigating between the screencasts in any given playlist by offering simple navigation rather than having to look through the whole list.
Probably not the worst idea to actually have the whole list visible as well, with the currently active screencast visually delineated.
Would be a nice addition to be able to run scripts automatically with a shortcut (cmd/ctr + enter).
Hi,
While creating a cast, I ran a script which contained errors which led the app not be unable to react afterwards. I had to delete the cast and start over.
The cast reference is 132.
Let me know if you need anything else.
Thanks!
just want to say a thanks to your service. the idea is brillant, the fact you can pause a "video" and start editing code from there is mindblowing. I might consider doing it to showcase some gl-react (I think there is no reason WebGL wouldn't work right? – I can just add the relevant lib as external scripts)
I've found only the exports.x =
syntax seems to work, but not the module.exports = { x }
syntax.
It'd be great to get a fix / explanation of this behaviour.
After a recording is made and Finish
is clicked, if I click in either the code or the preview, the Record button disappears. Clicking Edit Code > Resume Playback
restores it.
I tried to create my first Scrimba-cast yesterday. While successful, it could've been a lot smoother. Two comments:
Naming cast: I am not sure what the cast should be named before I have created it. My suggestion: remove this as a step before creating cast.
Record button: The record button is very small, and you're not really communicating (visually) that it's the most important button. My suggestion: make it a lot bigger, maybe let it take up half the screen. But inform me that it's a good idea to sometimes add some code before I start recording.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.