found drama

get oblique

(over) a year with Prismatic

by Rob Friesel

PrismaticWell, if I had been paying attention, I would have run this piece back in May. As it is… I’m running it now.

I continue to love Prismatic, and at this point it has completely replaced the RSS reader(s) that I used to use for aggregating. 1 As I did at six weeks and six months, I wanted to jot down a few notes to capture my feelings, thoughts, critiques, and lauds. In no particular order… Continue reading →

  1. More accurately re-phrased: a combination of Prismatic, Twitter, and Facebook has completely replaced those RSS reader(s).[]

Linkdump for August 14th

by Rob Friesel
  • Drew Crawford (Sealed Abstract) wrote this a few weeks ago and I finally (finally? finally!) got around to reading it start-to-finish. The best part about it is that (as he says in the first paragraph) his discussion is entirely fact-based. And where possible he is also illustrating his methods for generating these facts. This is excellent, because this is the sort of thing that we need in our technical discussions.

    That being said, for all its fact-based-ness, it also comes across as a bit of defeated-hands-in-the-air "JS is slow" fatalism. Yes, he is bringing the facts to bear on the case, but he leaves it at that. Which is totally his prerogative. It's a 10,000 word beginning to the conversation.

    Anyway: it immediately made me think of the work being done by the webapps working group (e.g., web components) — basically: future alternatives. Maybe I'm wrong to think so, but I'd like to think that in a few years we'll have some better tools at hand, even if JS is still "slow".

  • Jan Varwig:

    Directives are the core building block of an Angular app. Use them to insert whatever structure or behavior you need in your app. Views are merely a shortcut for very simple use-cases.

    The more I work with Angular, the more I agree with this statement. The framework's greatest power is in the directives. If you want to know where to invest your energy: directives. (Or, as Varwig puts it: "Embrace directives, they're cool.")

  • Allan, writing at the LayerVault Blog:

    We implement Progressive Reduction by assigning levels to each feature, starting with level 1. For example, if you gain enough proficiency in Signposting and Delivery you’ll see the level 2 version of various UI elements. If you fail to Signpost for a few months, your UI regresses back to level 1.

    Their notion of "progressive reduction" is intriguing, even if my initial reaction is one of hesitation (esp. w/r/t/ the inherent inconsistency it creates). I wonder if this is something that will catch on.

  • Rands In Repose:

    What isn’t obvious is that there are folks who aren’t going to complain because they believe the right thing to do is to take one for the team. They worry that that the act of complaining is tantamount to saying, “I don’t believe I should do shit work” or they’re simply wary of being accused of not being a team player.

  • Jesse Hallett in a blog post that uses jQuery and Bacon.js to illustrate the functional reactive programming style:

    The new stream is converted to a property to make this work. A property is a value that varies over time. The main practical distinction between a property and an event stream is that a property always has a value. In other words a property is continuous while an event stream is discrete.

    Somehow this seems a little backward, but I'll go with it until I have the right level of understanding to either challenge it or else concur. Anyway: this isn't the first time I've encountered FRP, but this example seems a bit clearer than the last time around. Hallett's example talks about FRP in a practical sense by using it to manage characters from a typeahead field. And now to meditate on other scenarios where this style is useful and what it offers over over simple event listeners.

Linkdump for August 10th

by Rob Friesel
  • Michael Mullany, Sencha CEO, writing for the company's dev blog:

    Every mobile browser has a feature area where it outperforms other browsers by a factor of 10–40x. The Surface outperforms the iPhone on SVG by 30x. The iPhone outperforms the Surface on DOM interaction by 10x. There is significant room to further improve purely from matching current best competitive performance.

    There are a bunch of interesting little tid-bits in there and I'm glad to see these kind of research results getting published.

    (An an aside: they need to do something about their graphs. It's nice that the surrounding text provides the context but the axes are unlabeled and there are no titles. Oh well.)

  • Stéphanie Walter writing for Smashing Mobile. This ran back at the end of May and I'm just now getting around to it. It's pretty long but still worth at least scanning. Even if you don't dive into all of the details, the headings are enough to give you some a list of not-necessarily-obvious thought-problems for your next project.
  • Holly Schinsky, writing at Flippin' Awesome with a good overview of the animation directive that is new in Angular 1.1.4 and revised in version 1.1.5. She covers animating with CSS3 transitions and introduces the naming conventions that the directive expects but doesn't get into more advanced JavaScript-based animations.
  • “I think when people say things like, the server is just going to be a dumb JSON pipe, and they imagine it's just going to be, like, connecting a database to the client, they're missing what these things tend to do.”

  • Rob Conery:

    …if it's not presentation-related, it doesn't belong here.

    He makes the point that services in Angular are not models, though they should provide the API that your controllers etc. use to deal with the model data. He also points out that you may be tempted to overload your models with a bunch of behaviors. And in a nutshell he says: "Don't. That's what filters are for."

  • Billed as "Frictionless Browser Package Management". My first thought is: "Meh — module loaders are a dime a dozen…" But the innovative bit here is that they're using SPDY push.
    (tagged: jspm SPDY JavaScript )

early thoughts on AngularJS

by Rob Friesel

AngularJS: Superheroic JavaScript Framework by GoogleMy first hands-on exposure to AngularJS was when I wrote my Patented Project Management Dev Dice. It is admittedly a trivial app–hardly worth the name–but I used it to get familiar with the absolute basics of the framework. 1 But now that I’ve been using Angular for a couple weeks to build a non-trivial application, I wanted to get down some of my thoughts. Any one of these thoughts could be a long blog post in and of itself 2 but for the time being, it’s best to simply collect the following as a meditation on the subject. I trust it will be useful to someone else during the early stages of his or her first non-trivial Angular app. Continue reading →

  1. Framework? Library? Toolkit?[]
  2. I feel like I’ve got an “Angular book” bubbling up from somewhere deep inside me. And I’m still not sure if that’s where it should stay…[]

Linkdump for August 4th

by Rob Friesel
  • Outstanding post by Jason Dobry about using AngularJS to do non-trivial UIs and about some of the latent challenges that you'll encounter when doing so. He's got quite a few interesting things to say, in particular about the common misperception that $scope is the model, some points about how to organize your files, and about integrating Angular with other libraries. It's one of the best posts I've encountered on Angular so far, and he does an excellent job explaining some of the more ambiguous things.

    Also: the accompanying slide deck is pretty good, too.

  • John Tierney, writing for NYTimes.com. Spoiler alert: Yes.
  • Long-ish expository post in the ng-newsletter about creating and working with Angular directives. Directives are a really powerful part of Angular but can be a bit daunting to newcomers ("Scopes? Restrictions? Linking functions!?") but do yourself a favor: have the patience to learn the fundamentals of directives. That will pay dividends.
  • Alex Maccaw's take on how how yield is going to bring a whole lot of sanity to Node.js applications. And I couldn't agree more. And if you keep hearing about yield it's for good reason. It's awesome. Start looking at it now so that you're ready when it's widely available. It's going to be The Best Thing.
  • Matt Zoller Seitz, writing at Vulture.com about a head-to-head competition of the two greatest (!?) shows of the early 21st century. I am speaking (of course) about The Wire vs. The Sopranos. And of course, The Wire wins.

    Also: to answer his question ("What are yours [favorite seasons]?") it goes: – The Wire: 4, 1, 3, 2, 5 – The Sopranos: 1, 2, 3 … could not finish

dream.20130804: sinking

by Rob Friesel

The buildings are sinking. Not collapsing. Sinking. The ground beneath them becomes liquid. It does not melt, it simply… stops being solid. And so the buildings begin to sink. Almost everyone is able to escape in time. Leaving everything behind, and fleeing quickly across the skyway. There are a few that didn’t make it and you watch in horror as the skyway bends down (the building itself becoming liquid now) and your friends fall down the up-turned rooms into up-turned hallways, plummeting into the echo of their own screams. Nevertheless, you pull some of them to safety as they cling to the ledge. But you ponder just how little time it will take before the ground beneath you turns liquid again.

Linkdump for August 2nd

by Rob Friesel
  • A write-up by Jaco Pretorius. I agree with him on the documentation, and I (admittedly, sadly) don't have enough experience with the testing aspect to have an opinion there, but I'd be willing to split hairs on the "overall complexity" complaint.

    Given my experience so far, I would say that the trivial things are quite trivial, and though the non-trivial things take a bit of work, none of them have blocked me for more than an hour or two. There's a bit of push/pull, but I've also only been doing non-trivial stuff with it for a short time, and I feel like each time I get stumped, I come out the other side with a much better understanding of the framework. It's opinionated, and there's "an Angular way" of doing things — but it's not always clear (at first) what that way is. And I blame the documentation for that.

  • Good overview of AOP in JavaScript by John Hann, over at HTML5 Hub.
    (tagged: AOP JavaScript )
  • Kevin Rockwood, writing at the Gaslight.co blog — with a rather nice epiphany.
  • Bret Victor.

    Lots of choice bits:

    There can be a lot of resistance to new ways of working that require you to unlearn what you've already learned and think in new ways.

    And:

    The most dangerous thought that you can have as a creative person, is to think you know what you're doing.

    Watch it. Best 30 minutes you'll spend this week.

  • Nicholas Zakas:

    And so I somewhat regrettably introduce ESLint.

    The short version: ESLint is a two-pass linter based on the Esprima ECMAScript parser with a fully pluggable rule system that supports warnings, errors, disabling rules, and custom rules. Based on the description, sounds like you want to use JSHint for the real-time linting in your editor and ESLint for your builds.

  • At LitReactor. I haven't seen all of these, nor have I read them all but… But I know that American Psycho wasn't an "actually good" movie by any definition that I know of. I would replace it with "The Shawshank Redemption" any day of the week. (Are we allowed to replace novel-based movies with short story/novella-based ones?)
    (tagged: film literature )

Angular zen: directives and scope

by Rob Friesel

Today’s moment of Angular zen:


Try to think of it this way:

Anything that you set on the scope object in the directive’s return object, those will be the properties pre-populated on the scope argument passed to the scope parameter in the function assigned to link. And those can be inferred from the attributes passed on to the directive’s instance element.

There’s some magic going on there, and it isn’t totally clear from the docs how these things line up. But there’s a science to it.

announcing a2z

by Rob Friesel

A couple of weeks ago, I wrote a little JavaScript library called a2z for creating ranges of characters and published it to npm.

I was inspired by a rather painful bit of code I had come across where each letter in the alphabet had been specified one at a time. While I could see that sometimes it might make sense to do that… this was not one of those cases. So over the weekend that followed, I hacked together a2z, wrote some tests for it, and published it to npm.

The library itself is tiny, has no external dependencies 1, and exports only one function. I’d like to add a little DSL for it, and a little wrapper to make it a drop-in for browser-based projects… but other than that it’s nice and tidy. I kept putting off making this announcement until those two things were done but… better to just put it out there.

Details:

Update (9/3/2013)

Took about another month, but I got all those little thingies done. The wrapper for using it in the browser? Done. Bower module? Done and deployed? Also: gh-pages for it: founddrama.github.io/a2z

Go ahead and try it out!

  1. Minus the dev dependencies for Grunt and nodeunit, but who’s counting that?[]