Cool project! I haven't seen the idea of drag and drop for building regex's before. I could definitely see this being a helpful tool for people learning regex. Some feedback:
1. The railroad is the intended drag target but is really small, especially compared to the other icons (giant trash can!). This makes it difficult to drag onto, and it's not obvious that that's where you should drag the blocks.
2. Black on brown (ie: railroad and trash can icons) is really hard to see.
3. Highlighting of the matched word (where the "Write text here!" is) seems to be pretty sporadic. It looks like highlighting only changes when the regex changes. I expected to be able to change this field and have the highlight update as I type.
4. Doesn't seem like you can edit the middle of a string in the matching word field (Try editing "Write text here!" to "Write helpful text here!") The cursor keeps jumping to the end of the string.
I used these docs when I was exploring the Immutable.js API! Very helpful, but Immutable just updated to v3 (your docs are v2), which introduces some breaking changes (for example, Vector is now called List). Would you mind updating your docs?
I've been using this library for a project, and here are my thoughts on it:
1. Immutable data structures are a huge win. I can't count the number of times I've been bitten by a bug caused by some subtle mutation that happened in a part of my code that I wasn't expecting.
2. Using this library for data structures everywhere, as a replacement for native JS arrays and objects, requires you to have discipline in naming your variables so that you can infer their types. Things can get pretty frustrating when you try to map over a Set, thinking it's a Map, for example.
3. The most annoying thing might be the documentation, which consists of a type definitions file and liberal comments. It's ok, but hardly a great interface for exploring the API.
Overall, liking the library so far. I think with good, searchable docs (with examples of API usage) this could be something really great.
The app is pretty confusing to use. For those of you stuck like I was, you actually have to complete the tutorial in order to add people and start "slinging."
Not to distract from the topic, but jlongster's posts should be a case study into how to make an effective demo/tutorial on the web. The side by side code/demo format is very well done and should be the de facto way to do code + demo. There have been so many times when I've been reading a tutorial and click on a demo link that opens a new tab. This makes me completely lose context as I switch back and forth between the tutorial and various demo links.
For another example of a post that takes advantage of the dynamic nature of the web page, check out jlongster's sweet.js tutorial[1]. It's a tutorial on writing macros with JS that you can actually interact with (you can make modifications to the example code snippets and see your macros expand on the fly). Very cool.
This. To my knowledge, JS perf isn't an issue in any modern browser (even the crippled iOS webview). Improving the performance of DOM access and manipulation (not just on iOS) would be a much more fruitful enterprise and is something I would like to see all browser makers focusing on.
A million times this. XML at the end of the day is a language with only two types, strings and children. This is woefully inadequate if you want performance.
Take a 3D matrix transform for example. It needs to be marshalled from an array of floats to a string to be applied. Then it needs to be parsed back into an array of floats to be used to position a texture in the GPU. Such a huge waste...
The interactive macro editor is a great touch. I don't know if this is prevalent, but this is the first time I've seen a tutorial interactively modify code in the editor for you. Instead of "here, type this into the editor above and see what happens," there will be a link to "click here to see what happens" and it will change the code in the editor accordingly. I think this is a good thing, because I rarely go and do the things that tutorials suggest I do, even if they are as simple as typing into an editor that is 2 inches above the text I am reading.
This is a must-read for any developer who wants to know Javascript better. This is the book that taught me everything I know about prototypes, method decorators, and functional programming in Javascript. Sure, I'd read countless other Javascript books, but Reg has a way of explaining things in a way that connected the dots for me. This is probably the only programming book I've re-read cover to cover a dozen times or more.
I'd also strongly suggest you throw a few bucks Reg's way for the ebook (PDF, EPUB, MOBI) version of this book. I only know Reg through his writing, but he sounds like a great guy. The fact that he's releasing this gem for free is pure madness on his part.
I can tell you after listening to one of his talks and talking to him afterwards: Reg is indeed a great guy! It is a good thing that JavaScript lured him from the Ruby world (bad for them I suppose).
Good overview of jQuery Deferred and how to use promises (at least the jQuery flavor). Promises (or futures) are a simple concept: an object-level abstraction of a non-blocking call, but they're very powerful when you see them in action. For example, the $.when method:
Let's say you have 3 ajax calls going in parallel. With $.when, you can attach callbacks to arbitrary groupings of those ajax calls (callback1 runs when ajax1 and ajax2 are done, but callback2 runs when ajax1 and ajax3 are done).
I first learned about promises in Trevor Burnham's excellent book Async Javascript (http://pragprog.com/book/tbajs/async-javascript) and it is still the best explanation of promises I've ever read. If you like this article and are interested in reading further about promises or the asynchronous nature of Javascript in general (both for browser and node.js), I highly recommend you check out this book.
1. The railroad is the intended drag target but is really small, especially compared to the other icons (giant trash can!). This makes it difficult to drag onto, and it's not obvious that that's where you should drag the blocks.
2. Black on brown (ie: railroad and trash can icons) is really hard to see.
3. Highlighting of the matched word (where the "Write text here!" is) seems to be pretty sporadic. It looks like highlighting only changes when the regex changes. I expected to be able to change this field and have the highlight update as I type.
4. Doesn't seem like you can edit the middle of a string in the matching word field (Try editing "Write text here!" to "Write helpful text here!") The cursor keeps jumping to the end of the string.