etrinh
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.
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.
On a side note, I got a good chuckle from the "Bobby Tables" XKCD reference[1] in the Jest tutorial[2].
[1]: http://xkcd.com/327/ [2]: http://facebook.github.io/jest/docs/tutorial.html
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 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.
If you couldn't yet tell, highly recommended.
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.
What is more interesting to me is that it seems like one of the key things to generating this loop is identifying design problems. If you can't really pinpoint what is wrong with a design, how can you make it better? Here, Ian seems to get a lot of feedback from other people, but I'm curious as to what kinds of internal thought processes he has when trying to identify exactly where a particular design is lacking.
One heuristic that works for me is thinking about the context of a design. In other words, how did the user get to this particular screen? What are their intentions when entering this view? Almost no individual UI element is self-explanatory when it's devoid of context. Just thinking about what the user wants to do at this particular part of your UI flow can help identify ways in which you can make the design clearer and more in line with their intentions.
In any case, there are a ton of great design patterns to pick up from seeing how Ian thinks about problems. Every designer needs to read this.
Although this is very interesting information, anyone reading this article should pay careful attention to the ending headline, "Is all this really necessary?" Odds are, unless you've produced some kind of CSS monstrosity, your CSS isn't the bottleneck in your website performance. Min and concat your Javascript, use appcache, local storage, etc. before prioritizing CSS performance.
It's a classic typography book translated to a web context with the relevant CSS styles. Pretty cool.
For a more easily digestible (and interactive!) overview, the one that comes to mind is the Interactive Guide to Blog Typography: http://www.kaikkonendesign.fi/typography/
If you'd like to check out more resources, hackdesign, a newsletter of curated design-related links, is focusing on typography this month: http://hackdesign.org/courses/
You probably wouldn't guess this just from a glance at Trello's UI, which is surprisingly clean and uncluttered. At its core, it's just a bunch of cards on a board (and you can use it as such), but as this article mentions, you can pull in more powerful features like checklists and labels to represent almost any workflow you can think of. It's a surprisingly powerful, modular system.
First of all, I'm not crazy about the other themes, but Future (the one enabled by default in the demo) is gorgeous. Maybe I'm just a fan of circular progress bars, but check out the demo involving "Error destroying alien planet." This is really pretty!
The stated use case for this is "transactional messages in your app." For that I think it fits pretty well. It might work as a debugging utility, similar to how we used alert() before we had console.log(), but it seems like the intended use case is for an end-user-facing interface.
Two minor gripes: 1) Backbone as a dependency for a UI element is kind of overkill. 2) This is more of a pet peeve, but why is the demo written in Coffeescript? I love Coffeescript and use it all the time, but I think it makes more sense for something like this to be demoed in Javascript. People who know Coffeescript are a subset of people who know Javascript, so you cater to a larger demographic this way.
That out of the way, great job on this. I'll have to find a project to use this in :)
You make a lot of valid points. As guptaneil alluded to, the ideal case would be if we could get teachers to post their assignments on Tabule. Teachers for the most part already post assignments online, but the education market lacks a good central homework management system that aggregates assignments between classes.
What we're trying to achieve is to bridge to that ideal case with student-submitted assignments. There's an interesting dynamic at play here, because inputting all of one's assignments is trivially better (perhaps even worse if we consider switching cost) than using Google Calendar. For the second person to join the course though, the experience is already better, because all of their assignments are already available to them. It's an interesting chicken-and-egg problem. If my assignments aren't already in the system, then there's no immediate value for me, but there will be for everyone that comes after me.